NewtType.h

説明を見る。
00001 /*------------------------------------------------------------------------*/
00013 #ifndef NEWTTYPE_H
00014 #define NEWTTYPE_H
00015 
00016 
00017 /* ヘッダファイル */
00018 #include "platform.h"
00019 
00020 #if HAVE_STDINT_H
00021     #include <stdint.h>
00022 #else
00023     #include <inttypes.h>
00024 #endif
00025 
00026 #include <stdbool.h>
00027 #include <stdlib.h>
00028 
00029 #include "NewtConf.h"
00030 
00031 
00032 /* マクロ */
00033 
00034 // Newton Refs Constant
00035 #define kNewtRefNIL         0x0002      
00036 #define kNewtRefTRUE        0x001A      
00037 #define kNewtSymbolClass    0x55552     
00038 
00039 #define kNewtRefUnbind      0xFFF2      
00040 
00041 
00042 /* 定数 */
00043 
00045 enum {
00046     kNewtUnknownType        = 0,    
00047     kNewtInt30,                     
00048     kNewtPointer,                   
00049     kNewtCharacter,                 
00050     kNewtSpecial,                   
00051     kNewtNil,                       
00052     kNewtTrue,                      
00053     kNewtUnbind,                    
00054     kNewtMagicPointer,              
00055 
00056     // ポインタ参照
00057     kNewtBinary,                    
00058     kNewtArray,                     
00059     kNewtFrame,                     
00060 
00061     // バイナリオブジェクト
00062     kNewtInt32,                     
00063     kNewtReal,                      
00064     kNewtSymbol,                    
00065     kNewtString                     
00066 };
00067 
00068 
00070 enum {
00071     kNewtObjSlotted     = 0x01,     
00072     kNewtObjFrame       = 0x02,     
00073 
00074     kNewtObjLiteral     = 0x40,     
00075     kNewtObjSweep       = 0x80      
00076 };
00077 
00078 
00080 enum {
00081     kNewtMapSorted      = 0x01,     
00082     kNewtMapProto       = 0x04      
00083 };
00084 
00085 
00087 enum {
00088     kNSOFImmediate          = 0,    
00089     kNSOFCharacter          = 1,    
00090     kNSOFUnicodeCharacter   = 2,    
00091     kNSOFBinaryObject       = 3,    
00092     kNSOFArray              = 4,    
00093     kNSOFPlainArray         = 5,    
00094     kNSOFFrame              = 6,    
00095     kNSOFSymbol             = 7,    
00096     kNSOFString             = 8,    
00097     kNSOFPrecedent          = 9,    
00098     kNSOFNIL                = 10,   
00099     kNSOFSmallRect          = 11,   
00100     kNSOFLargeBinary        = 12,   
00101 
00102     kNSOFNamedMagicPointer  = 0x10, 
00103 };
00104 
00105 
00106 /* 型宣言 */
00107 
00108 // Ref(Integer, Pointer, Charcter, Spatial, Magic pointer)
00109 typedef uint32_t        newtRef;        
00110 typedef newtRef         newtRefVar;     
00111 typedef const newtRef   newtRefArg;     
00112 
00113 
00115 typedef struct newtObj *    newtObjRef;
00116 
00118 typedef struct {
00119     uint32_t    h;      
00120     newtObjRef  nextp;  
00121 } newtObjHeader;
00122 
00123 
00125 typedef struct newtObj {
00126     newtObjHeader   header; 
00127 
00129     union {
00130         newtRef klass;      
00131         newtRef map;        
00132     } as;
00133 } newtObj;
00134 
00135 
00137 typedef struct {
00138     uint32_t    hash;       
00139     char        name[1];    
00140 } newtSymData;
00141 
00143 typedef newtSymData *   newtSymDataRef;
00144 
00145 
00147 typedef int32_t     newtErr;
00148 
00149 
00150 #endif /* NEWTTYPE_H */
00151 
00152 

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