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
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
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
00151
00152