summaryrefslogtreecommitdiff
path: root/Build/source/utils/asymptote/castop.h
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2010-05-09 00:26:15 +0000
committerKarl Berry <karl@freefriends.org>2010-05-09 00:26:15 +0000
commit0114fbc0beecd9a094b260d78cccdc6ff3e85f1e (patch)
tree53f68a7eb4cd90f611560e9b477b55c671b94717 /Build/source/utils/asymptote/castop.h
parent539c0d5c885fa1c451a55ef8e7e1a2bbf1a32861 (diff)
asy 1.94
git-svn-id: svn://tug.org/texlive/trunk@18161 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/utils/asymptote/castop.h')
-rw-r--r--Build/source/utils/asymptote/castop.h22
1 files changed, 19 insertions, 3 deletions
diff --git a/Build/source/utils/asymptote/castop.h b/Build/source/utils/asymptote/castop.h
index 714dfdb0bae..5d8e15e060b 100644
--- a/Build/source/utils/asymptote/castop.h
+++ b/Build/source/utils/asymptote/castop.h
@@ -65,15 +65,31 @@ void castString(vm::stack *s)
template<class T, class S>
void arrayToArray(vm::stack *s)
{
- vm::array *a = pop<vm::array*>(s);
- checkArray(a);
- size_t size=(size_t) a->size();
+ vm::array *a=pop<vm::array*>(s);
+ size_t size=checkArray(a);
vm::array *c=new vm::array(size);
for(size_t i=0; i < size; i++)
(*c)[i]=(S) read<T>(a,i);
s->push(c);
}
+template<class T, class S>
+void array2ToArray2(vm::stack *s)
+{
+ vm::array *a=pop<vm::array*>(s);
+ size_t size=checkArray(a);
+ vm::array *c=new vm::array(size);
+ for(size_t i=0; i < size; ++i) {
+ vm::array *ai=vm::read<vm::array*>(a,i);
+ size_t aisize=checkArray(ai);
+ vm::array *ci=new vm::array(aisize);
+ (*c)[i]=ci;
+ for(size_t j=0; j < aisize; ++j)
+ (*ci)[j]=(S) read<T>(ai,j);
+ }
+ s->push(c);
+}
+
template<class T>
void read(vm::stack *s)
{