00001 00002 #include <assert.h> 00003 #include <stdio.h> 00004 #include <stdlib.h> 00005 #include <string.h> 00006 00007 #include "stdtypes.h" 00008 #include "blockpool.h" 00009 #include "pools.h" 00010 #include "str.h" 00011 #include "list.h" 00012 #include "strtable.h" 00013 #include "sym.h" 00014 #include "type.h" 00015 #include "symtable.h" 00016 #include "typetable.h" 00017 00018 00019 /* 00020 Global Objects 00021 00022 Note that the ordering in this file reflects object constructor 00023 order. This ordering assures, for example, that object that use 00024 global memory in their constructors are initialized after 00025 the global memory object has been initialized. 00026 00027 */ 00028 00029 00030 00031 /* ----- Stand alone objects that don't use block pool memory ---- */ 00032 00033 STRING NULLSTR; // a NULL string 00034 00035 // global list of times (e.g., fs, ps, ns, ...) 00036 LIST<type_time *> typetable::time_list; 00037 00038 00039 type_real REAL; 00040 00041 00042 /* ----- Block pool memory and objects that use block pool memory ---- */ 00043 00044 00045 /* 00046 * memory_pools 00047 * 00048 * There are MAX_POOLS memory pools that allocate memory 00049 * using the big_block_pool memory pool object. 00050 */ 00051 mem_pool<big_block_pool, MAX_POOLS> memory_pools; 00052 00053 /* 00054 * global memory pool 00055 * 00056 00057 Note: don't allocate memory from the global memory pool 00058 from a global constructor, since this class is 00059 initialized at the global level and may not 00060 exist (be initialized itself) at the point you reference it. 00061 00062 */ 00063 pool global_mem; 00064 00065 00066 /* String table */ 00067 strtable strtab( SQRT_STRTAB, &global_mem ); 00068 00069 00070 /* Global symbol table */ 00071 symtable glob_symtab( SQRT_SYMTAB * 2, &global_mem ); 00072 00073 typetable glob_typtab( &global_mem ); 00074