diff options
author | Karl Berry <karl@freefriends.org> | 2009-07-08 01:04:31 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2009-07-08 01:04:31 +0000 |
commit | 17ee31b51081b8281b652fa06b997918003f7772 (patch) | |
tree | c5c1420540fe9a31454c1450ec5d96c096f91a9b /Build/source/utils/asymptote/builtin.cc | |
parent | bf914f81a2ff8552e1438251f4b6b56f9acf0b90 (diff) |
asymptote 1.80
git-svn-id: svn://tug.org/texlive/trunk@14179 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/utils/asymptote/builtin.cc')
-rw-r--r-- | Build/source/utils/asymptote/builtin.cc | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/Build/source/utils/asymptote/builtin.cc b/Build/source/utils/asymptote/builtin.cc index 9802b6d1197..ae998acf322 100644 --- a/Build/source/utils/asymptote/builtin.cc +++ b/Build/source/utils/asymptote/builtin.cc @@ -1341,6 +1341,10 @@ void base_venv(venv &ve) formal(IntRealFunction(),"f"), formal(realArray(),"a")); + addFunc(ve,single,primFile(),"single",formal(primFile(),"file"), + formal(primBoolean(),"real",true), + formal(primBoolean(),"int",true)); + #ifdef HAVE_LIBFFTW3 addFunc(ve,pairArrayFFT,pairArray(),"fft",formal(pairArray(),"a"), formal(primInt(),"sign",true)); @@ -1378,17 +1382,22 @@ namespace run { double infinity=cbrt(DBL_MAX); // Reduced for tension atleast infinity -void arrayDeleteHelper(vm::stack *Stack) +void arrayDeleteHelper(stack *Stack) { array *a=pop<array *>(Stack); item itj=pop(Stack); + bool jdefault=isdefault(itj); item iti=pop(Stack); + Int i,j; if(isdefault(iti)) { + if(jdefault) { (*a).clear(); return; + } else i=j=get<Int>(itj); + } else { + i=get<Int>(iti); + j=jdefault ? i : get<Int>(itj); } - Int i=get<Int>(iti); - Int j=isdefault(itj) ? i : get<Int>(itj); size_t asize=checkArray(a); if(a->cyclic() && asize > 0) { @@ -1417,4 +1426,15 @@ void arrayDeleteHelper(vm::stack *Stack) (*a).erase((*a).begin()+i,(*a).begin()+j+1); } +// Set file to read/write single-precision real and int XDR values. +void single(stack *Stack) +{ + bool integer=pop<bool>(Stack,true); + bool real=pop<bool>(Stack,true); + file *File=pop<file *>(Stack); + File->SingleReal(real); + File->SingleInt(integer); + Stack->push(File); +} + } |