NewtEnv.h

説明を見る。
00001 /*------------------------------------------------------------------------*/
00013 #ifndef NEWTENV_H
00014 #define NEWTENV_H
00015 
00016 
00017 /* ヘッダファイル */
00018 #include "NewtType.h"
00019 #include "NewtMem.h"
00020 
00021 
00022 /* マクロ */
00023 #define NEWT_DEBUG          (newt_env._debug)               
00024 #define NEWT_TRACE          (newt_env._trace)               
00025 #define NEWT_DUMPLEX        (newt_env._dumpLex)             
00026 #define NEWT_DUMPSYNTAX     (newt_env._dumpSyntax)          
00027 #define NEWT_DUMPBC         (newt_env._dumpBC)              
00028 #define NEWT_POOL           (newt_env.pool)                 
00029 #define NEWT_SWEEP          (newt_env.sweep)                
00030 #define NEWT_NEEDGC         (newt_env.needgc)               
00031 #define NEWT_MODE_NOS2      (newt_env.mode.nos2)            
00032 
00033 #define NSSTR(s)            (NewtMakeString(s, false))      
00034 #define NSSTRCONST(s)       (NewtMakeString(s, true))       
00035 #define NSINT(n)            (NewtMakeInteger(n))            
00036 #define NSREAL(n)           (NewtMakeReal(n))               
00037 
00038 #define NSSYM0(name)        newt_sym.name                   
00039 #define NSSYM(name)         (NewtMakeSymbol(#name))         
00040 
00041 #define NSNAMEDMP(name)     (NewtMakeNamedMP(#name))        
00042 #define NSNAMEDMP0(name)    (NewtSymbolToMP(NSSYM0(name)))  
00043 #define NSMP(n)             (NewtMakeMagicPointer(0, n))    
00044 
00045 #define NS_CLASS            NSSYM0(__class)                 
00046 #define NS_INT              NSSYM0(__int)                   
00047 #define NS_CHAR             NSSYM0(__char)                  
00048 
00049 #define NcGlobalFnExists(r)             NsGlobalFnExists(kNewtRefNIL, r)
00050 #define NcGetGlobalFn(r)                NsGetGlobalFn(kNewtRefNIL, r)
00051 #define NcDefGlobalFn(r, fn)            NsDefGlobalFn(kNewtRefNIL, r, fn)
00052 #define NcUndefGlobalFn(r)              NsUndefGlobalFn(kNewtRefNIL, r)
00053 #define NcGlobalVarExists(r)            NsGlobalVarExists(kNewtRefNIL, r)
00054 #define NcGetGlobalVar(r)               NsGetGlobalVar(kNewtRefNIL, r)
00055 #define NcDefGlobalVar(r, v)            NsDefGlobalVar(kNewtRefNIL, r, v)
00056 #define NcUndefGlobalVar(r)             NsUndefGlobalVar(kNewtRefNIL, r)
00057 #define NcDefMagicPointer(r, v)         NsDefMagicPointer(kNewtRefNIL, r, v)
00058 #define NcGetRoot()                     NsGetRoot(kNewtRefNIL)
00059 #define NcGetGlobals()                  NsGetGlobals(kNewtRefNIL)
00060 #define NcGetGlobalFns()                NsGetGlobalFns(kNewtRefNIL)
00061 #define NcGetMagicPointers()            NsGetMagicPointers(kNewtRefNIL)
00062 #define NcGetSymTable()                 NsGetSymTable(kNewtRefNIL)
00063 
00064 // OBSOLETE
00065 #define NcHasGlobalFn(r)                NsGlobalFnExists(kNewtRefNIL, r)
00066 #define NcHasGlobalVar(r)               NsGlobalVarExists(kNewtRefNIL, r)
00067 #define NcSetGlobalVar(r, v)            NsDefGlobalVar(kNewtRefNIL, r, v)
00068 
00069 
00071 typedef struct {
00072     newtRefVar  sym_table;      
00073     newtRefVar  root;           
00074     newtRefVar  globals;        
00075     newtRefVar  global_fns;     
00076     newtRefVar  magic_pointers; 
00077 
00078     // メモリ関係
00079     newtPool    pool;           
00080     bool        sweep;          
00081     bool        needgc;         
00082 
00084     struct {
00085         bool    nos2;           
00086     } mode;
00087 
00088     // デバッグ
00089     bool        _debug;         
00090     bool        _trace;         
00091     bool        _dumpLex;       
00092     bool        _dumpSyntax;    
00093     bool        _dumpBC;        
00094 } newt_env_t;
00095 
00096 
00098 typedef struct {
00099     // frame
00100     newtRefVar  _proto;             
00101     newtRefVar  _parent;            
00102 
00103     // function
00104     newtRefVar  _implementor;       
00105     newtRefVar  _nextArgFrame;      
00106     newtRefVar  CodeBlock;          
00107     newtRefVar  __class;            
00108     newtRefVar  instructions;       
00109     newtRefVar  literals;           
00110     newtRefVar  argFrame;           
00111     newtRefVar  numArgs;            
00112     newtRefVar  indefinite;         
00113 
00114     // native function
00115 
00117     struct {
00118         newtRefVar  native0;        
00119         newtRefVar  native;         
00120     } _function;
00121 
00122     newtRefVar  funcPtr;            
00123     newtRefVar  docString;          
00124 
00125     // classes or types
00126     newtRefVar  binary;             
00127     newtRefVar  string;             
00128     newtRefVar  real;               
00129     newtRefVar  array;              
00130     newtRefVar  frame;              
00131     newtRefVar  __int;              
00132     newtRefVar  int32;              
00133     newtRefVar  pathExpr;           
00134 
00135     // for loop
00136     newtRefVar  collect;            
00137     newtRefVar  deeply;             
00138 
00139     // class    
00140     newtRefVar  __char;             
00141     newtRefVar  boolean;            
00142     newtRefVar  weird_immediate;    
00143     newtRefVar  forEachState;       
00144 
00145     // functions(必須)
00146     newtRefVar  hasVariable;        
00147     newtRefVar  hasVar;             
00148     newtRefVar  defGlobalFn;        
00149     newtRefVar  defGlobalVar;       
00150 //    newtRefVar    and;                ///< and
00151 //    newtRefVar    or;                 ///< or
00152     newtRefVar  mod;                
00153     newtRefVar  shiftLeft;          
00154     newtRefVar  shiftRight;         
00155     newtRefVar  objectEqual;        
00156     newtRefVar  defMagicPointer;    
00157     newtRefVar  makeRegex;          
00158 
00159     // exception frame
00160 
00162     struct {
00163         newtRefVar  ref;            
00164     } type;
00165 
00167     struct {
00169         struct {
00170             newtRefVar  msg;        
00171         } ex;
00172     } ext;
00173 
00174     newtRefVar  name;               
00175     newtRefVar  data;               
00176     newtRefVar  message;            
00177     newtRefVar  error;              
00178 
00179     newtRefVar  errorCode;          
00180     newtRefVar  symbol;             
00181     newtRefVar  value;              
00182     newtRefVar  index;              
00183 
00184     // root
00185     newtRefVar  sym_table;          
00186     newtRefVar  globals;            
00187     newtRefVar  global_fns;         
00188     newtRefVar  magic_pointers;     
00189 
00190     // for print
00191     newtRefVar  printDepth;         
00192     newtRefVar  printLength;        
00193 
00194     // for regex
00195     newtRefVar  protoREGEX;         
00196     newtRefVar  regex;              
00197     newtRefVar  pattern;            
00198     newtRefVar  option;             
00199 
00200     // for require
00201     newtRefVar  requires;           
00202 
00203     // ENV
00204     newtRefVar  _ENV_;              
00205     newtRefVar  NEWTLIB;            
00206 
00207     // ARGV
00208     newtRefVar  _ARGV_;             
00209     newtRefVar  _EXEDIR_;           
00210 
00211     // stdout, stderr
00212     newtRefVar  _STDOUT_;           
00213     newtRefVar  _STDERR_;           
00214 } newt_sym_t;
00215 
00216 
00217 /* グローバル変数 */
00218 extern newt_env_t   newt_env;       
00219 extern newt_sym_t   newt_sym;       
00220 
00221 
00222 /* 関数プロトタイプ */
00223 
00224 #ifdef __cplusplus
00225 extern "C" {
00226 #endif
00227 
00228 
00229 char *      NewtDefaultEncoding(void);
00230 void        NewtInit(int argc, const char * argv[], int n);
00231 void        NewtCleanup(void);
00232 
00233 newtRef     NewtLookupSymbolTable(const char * name);
00234 
00235 bool        NewtHasGlobalFn(newtRefArg r);
00236 bool        NewtHasGlobalVar(newtRefArg r);
00237 
00238 // NewtonScript native functions(new style)
00239 newtRef     NsGlobalFnExists(newtRefArg rcvr, newtRefArg r);
00240 newtRef     NsGetGlobalFn(newtRefArg rcvr, newtRefArg r);
00241 newtRef     NsDefGlobalFn(newtRefArg rcvr, newtRefArg r, newtRefArg fn);
00242 newtRef     NsUndefGlobalFn(newtRefArg rcvr, newtRefArg r);
00243 newtRef     NsGlobalVarExists(newtRefArg rcvr, newtRefArg r);
00244 newtRef     NsGetGlobalVar(newtRefArg rcvr, newtRefArg r);
00245 newtRef     NsDefGlobalVar(newtRefArg rcvr, newtRefArg r, newtRefArg v);
00246 newtRef     NsUndefGlobalVar(newtRefArg rcvr, newtRefArg r);
00247 newtRef     NcResolveMagicPointer(newtRefArg r);
00248 newtRef     NsDefMagicPointer(newtRefArg rcvr, newtRefArg r, newtRefArg v);
00249 
00250 newtRef     NsGetRoot(newtRefArg rcvr);
00251 newtRef     NsGetGlobals(newtRefArg rcvr);
00252 newtRef     NsGetGlobalFns(newtRefArg rcvr);
00253 newtRef     NsGetMagicPointers(newtRefArg rcvr);
00254 newtRef     NsGetSymTable(newtRefArg rcvr);
00255 
00256 #ifdef __USE_OBSOLETE_STYLE__
00257 newtRef     NsHasGlobalFn(newtRefArg rcvr, newtRefArg r);                   // OBSOLETE
00258 newtRef     NsHasGlobalVar(newtRefArg rcvr, newtRefArg r);                  // OBSOLETE
00259 newtRef     NsSetGlobalVar(newtRefArg rcvr, newtRefArg r, newtRefArg v);    // OBSOLETE
00260 #endif /* __USE_OBSOLETE_STYLE__ */
00261 
00262 
00263 #ifdef __cplusplus
00264 }
00265 #endif
00266 
00267 
00268 #endif /* NEWTENV_H */
00269 
00270 

NEWT/0に対してThu Nov 23 16:50:42 2006に生成されました。  doxygen 1.5.0