Changeset 154 for trunk/orca/ovalue.c

Show
Ignore:
Timestamp:
05/17/06 15:48:03 (3 years ago)
Author:
krobillard
Message:

Orca - Replaced atom variables with fixed atom defines.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/orca/ovalue.c

    r153 r154  
    2222#include "ovalue.h" 
    2323#include "internal.h" 
     24#include "orca_atoms.h" 
    2425 
    2526#ifdef OR_CONFIG_MATH3D 
    2627#include <math3d.h> 
    2728#endif 
     29 
     30 
     31//#define MAKE_ATOM_HEADER    1 
     32 
    2833 
    2934static const char* _datatypes[] = 
     
    310315 
    311316 
     317#if MAKE_ATOM_HEADER 
     318#define FIXED_ATOM(str,len,def) \ 
     319    printf( "#define %s\t\t%d\n", #def, orInternAtom(str,len) ); 
     320#else 
     321#ifdef DEBUG 
     322#define FIXED_ATOM(str,len,def)     assert( orInternAtom(str,len) == def ); 
     323#else 
     324#define FIXED_ATOM(str,len,def)     orInternAtom(str,len); 
     325#endif 
     326#endif 
     327 
     328 
     329// Intern commonly used atoms. 
     330static void _createFixedAtoms() 
     331{ 
     332#if MAKE_ATOM_HEADER 
     333    printf( "// This file is automatically generated - do not edit.\n\n" ); 
     334#endif 
     335 
     336    FIXED_ATOM( "self",         4, OR_ATOM_SELF ) 
     337    FIXED_ATOM( "system",       6, OR_ATOM_SYSTEM ) 
     338    FIXED_ATOM( "script",       6, OR_ATOM_SCRIPT ) 
     339    FIXED_ATOM( "parent",       6, OR_ATOM_PARENT ) 
     340    FIXED_ATOM( "error",        5, OR_ATOM_ERROR ) 
     341    FIXED_ATOM( "error-types", 11, OR_ATOM_ERROR_TYPES ) 
     342    FIXED_ATOM( "catch",        5, OR_ATOM_CATCH ) 
     343    FIXED_ATOM( "throw",        5, OR_ATOM_THROW ) 
     344    FIXED_ATOM( "x",            1, OR_ATOM_X ) 
     345    FIXED_ATOM( "y",            1, OR_ATOM_Y ) 
     346    FIXED_ATOM( "z",            1, OR_ATOM_Z ) 
     347    FIXED_ATOM( "-",            1, OR_ATOM_DASH ) 
     348    FIXED_ATOM( "func",         4, OR_ATOM_FUNC ) 
     349    FIXED_ATOM( "does",         4, OR_ATOM_DOES ) 
     350 
     351    // Atoms used by parse. 
     352    FIXED_ATOM( "|",     1, OR_ATOM_BAR ) 
     353    FIXED_ATOM( "opt",   3, OR_ATOM_OPT ) 
     354    FIXED_ATOM( "some",  4, OR_ATOM_SOME ) 
     355    FIXED_ATOM( "any",   3, OR_ATOM_ANY ) 
     356    FIXED_ATOM( "break", 5, OR_ATOM_BREAK ) 
     357    FIXED_ATOM( "skip",  4, OR_ATOM_SKIP ) 
     358    FIXED_ATOM( "set",   3, OR_ATOM_SET ) 
     359    FIXED_ATOM( "copy",  4, OR_ATOM_COPY ) 
     360    FIXED_ATOM( "to",    2, OR_ATOM_TO ) 
     361    FIXED_ATOM( "thru",  4, OR_ATOM_THRU ) 
     362 
     363 
     364#if MAKE_ATOM_HEADER 
     365    exit(0); 
     366#endif 
     367} 
     368 
     369 
    312370/** 
    313371  Initialize scripting environment. 
     
    368426    makeGlobalContext(); 
    369427 
    370     orEnv->atom_self   = orInternAtom( "self",   4 ); 
    371     orEnv->atom_system = orInternAtom( "system", 6 ); 
    372     orEnv->atom_script = orInternAtom( "script", 6 ); 
    373     orEnv->atom_parent = orInternAtom( "parent", 6 ); 
    374     orEnv->atom_error  = orInternAtom( "error",  5 ); 
    375     orEnv->atom_error_types = orInternAtom( "error-types", 11 ); 
    376     orEnv->atom_catch  = orInternAtom( "catch", 5 ); 
    377     orEnv->atom_throw  = orInternAtom( "throw", 5 ); 
    378     orEnv->atom_x      = orInternAtom( "x", 1 ); 
    379     orEnv->atom_y      = orInternAtom( "y", 1 ); 
    380     orEnv->atom_z      = orInternAtom( "z", 1 ); 
    381     orEnv->atom_dash   = orInternAtom( "-", 1 ); 
    382     orEnv->atom_func   = orInternAtom( "func", 4 ); 
    383     orEnv->atom_does   = orInternAtom( "does", 4 ); 
    384  
    385     // Atoms used by parse. 
    386     orEnv->atom_opt    = orInternAtom( "opt",   3 ); 
    387     orEnv->atom_some   = orInternAtom( "some",  4 ); 
    388     orEnv->atom_any    = orInternAtom( "any",   3 ); 
    389     orEnv->atom_break  = orInternAtom( "break", 5 ); 
    390     orEnv->atom_skip   = orInternAtom( "skip",  4 ); 
    391     orEnv->atom_set    = orInternAtom( "set",   3 ); 
    392     orEnv->atom_copy   = orInternAtom( "copy",  4 ); 
    393     orEnv->atom_bar    = orInternAtom( "|",     1 ); 
    394     orEnv->atom_to     = orInternAtom( "to",    2 ); 
    395     orEnv->atom_thru   = orInternAtom( "thru",  4 ); 
     428    _createFixedAtoms(); 
    396429 
    397430 
     
    458491 
    459492    // Set system/words to global context. 
    460     val = orLookupPath( OT_WORD, orEnv->atom_system, 
     493    val = orLookupPath( OT_WORD, OR_ATOM_SYSTEM, 
    461494                        OT_WORD, orInternAtom( "words", 5 ), 
    462495                        OR_LPATH_END ); 
     
    468501 
    469502    // Set system/os. 
    470     val = orLookupPath( OT_WORD, orEnv->atom_system, 
     503    val = orLookupPath( OT_WORD, OR_ATOM_SYSTEM, 
    471504                        OT_WORD, orInternAtom( "os", 2 ), 
    472505                        OR_LPATH_END ); 
     
    13521385    OContext clone; 
    13531386 
    1354     script = orLookupPath( OT_WORD, orEnv->atom_system, 
    1355                            OT_WORD, orEnv->atom_script, 
     1387    script = orLookupPath( OT_WORD, OR_ATOM_SYSTEM, 
     1388                           OT_WORD, OR_ATOM_SCRIPT, 
    13561389                           OR_LPATH_END ); 
    1357     proto  = orLookupPath( OT_WORD, orEnv->atom_system, 
     1390    proto  = orLookupPath( OT_WORD, OR_ATOM_SYSTEM, 
    13581391                           OT_WORD, orInternAtom( "script-proto", 12 ), 
    13591392                           OR_LPATH_END ); 
     
    13811414    OBlock* blk; 
    13821415    OValue* sval; 
    1383     sval = orLookupPath( OT_WORD, orEnv->atom_system, 
    1384                          OT_WORD, orEnv->atom_script, 
     1416    sval = orLookupPath( OT_WORD, OR_ATOM_SYSTEM, 
     1417                         OT_WORD, OR_ATOM_SCRIPT, 
    13851418                         OR_LPATH_END ); 
    13861419    if( sval && orIs(sval, OT_OBJECT) ) 
     
    20502083            { 
    20512084                int n = -1; 
    2052                 if( pit->word.atom == orEnv->atom_x ) 
     2085                if( pit->word.atom == OR_ATOM_X ) 
    20532086                    n = 0; 
    2054                 else if( pit->word.atom == orEnv->atom_y ) 
     2087                else if( pit->word.atom == OR_ATOM_Y ) 
    20552088                    n = 1; 
    2056                 else if( pit->word.atom == orEnv->atom_z ) 
     2089                else if( pit->word.atom == OR_ATOM_Z ) 
    20572090                    n = 2; 
    20582091                if( n < 0 ) 
     
    39493982 
    39503983                case OT_WORD: 
    3951                     if( (it->word.atom == orEnv->atom_dash) && (range > -1) ) 
     3984                    if( (it->word.atom == OR_ATOM_DASH) && (range > -1) ) 
    39523985                    { 
    39533986                        int r2; 
     
    42174250        if( it->type == OT_WORD ) 
    42184251        { 
    4219             if( it->word.atom == orEnv->atom_throw ) 
     4252            if( it->word.atom == OR_ATOM_THROW ) 
    42204253                flags |= OR_FLAG_THROW; 
    4221             else if( it->word.atom == orEnv->atom_catch ) 
     4254            else if( it->word.atom == OR_ATOM_CATCH ) 
    42224255                flags |= OR_FLAG_CATCH; 
    42234256        }