1 /***** 2 * builtin.h 3 * Tom Prince 2004/08/25 4 * 5 * Initialize builtins. 6 *****/ 7 #ifndef BUILTIN_H 8 #define BUILTIN_H 9 10 #include "vm.h" 11 #include "types.h" 12 #include "arrayop.h" 13 14 namespace trans { 15 16 class tenv; 17 class venv; 18 19 // The base environments for built-in types and functions 20 void base_tenv(tenv &); 21 void base_venv(venv &); 22 23 extern const types::formal noformal; 24 25 // Add a function with one or more default arguments. 26 void addFunc(venv &ve, vm::bltin f, types::ty *result, symbol name, 27 types::formal f1=noformal, types::formal f2=noformal, 28 types::formal f3=noformal, types::formal f4=noformal, 29 types::formal f5=noformal, types::formal f6=noformal, 30 types::formal f7=noformal, types::formal f8=noformal, 31 types::formal f9=noformal, types::formal fA=noformal, 32 types::formal fB=noformal, types::formal fC=noformal, 33 types::formal fD=noformal, types::formal fE=noformal, 34 types::formal fF=noformal, types::formal fG=noformal, 35 types::formal fH=noformal, types::formal fI=noformal); 36 37 // Adds standard functions for a newly added types. 38 void addArrayOps(venv &ve, types::array *t); 39 void addRecordOps(venv &ve, types::record *r); 40 void addFunctionOps(venv &ve, types::function *f); 41 42 #ifdef HAVE_LIBGSL 43 types::record *getGSLModule(); 44 void GSLrngFree(); 45 #endif 46 47 } //namespace trans 48 49 namespace run { 50 extern double infinity; 51 52 void single(vm::stack *Stack); 53 void arrayDeleteHelper(vm::stack *Stack); 54 55 // Used by to optimize conditional jumps. 56 extern const vm::bltin intLess; 57 extern const vm::bltin intGreater; 58 } 59 60 #endif //BUILTIN_H 61