diff options
| author | Richard Brooksby | 2002-06-07 16:47:14 +0100 |
|---|---|---|
| committer | Richard Brooksby | 2002-06-07 16:47:14 +0100 |
| commit | 97075f705350901f5ff46387f658ab459a4cd73f (patch) | |
| tree | 4349ad5e7200f072a800f48749d57f3625757e7e /mps/code/mpmtypes.h | |
| parent | 8b990e4858b6f6d735de07a241b1785702bb16e7 (diff) | |
| download | emacs-97075f705350901f5ff46387f658ab459a4cd73f.tar.gz emacs-97075f705350901f5ff46387f658ab459a4cd73f.zip | |
Updating cross references to design documents to html style, to go with master/design document tree.
Copied from Perforce
Change: 29897
ServerID: perforce.ravenbrook.com
Diffstat (limited to 'mps/code/mpmtypes.h')
| -rw-r--r-- | mps/code/mpmtypes.h | 116 |
1 files changed, 58 insertions, 58 deletions
diff --git a/mps/code/mpmtypes.h b/mps/code/mpmtypes.h index 7bcd2f00b5c..a92a38169c4 100644 --- a/mps/code/mpmtypes.h +++ b/mps/code/mpmtypes.h | |||
| @@ -3,7 +3,7 @@ | |||
| 3 | * $Id$ | 3 | * $Id$ |
| 4 | * Copyright (c) 2001 Ravenbrook Limited. See end of file for license. | 4 | * Copyright (c) 2001 Ravenbrook Limited. See end of file for license. |
| 5 | * | 5 | * |
| 6 | * .design: design.mps.type | 6 | * .design: <design/type/> |
| 7 | * | 7 | * |
| 8 | * .rationale: Types and type constants are almost all defined | 8 | * .rationale: Types and type constants are almost all defined |
| 9 | * in this header, in advance of any declarations of prototypes | 9 | * in this header, in advance of any declarations of prototypes |
| @@ -24,21 +24,21 @@ | |||
| 24 | 24 | ||
| 25 | /* TYPES */ | 25 | /* TYPES */ |
| 26 | 26 | ||
| 27 | typedef unsigned long Sig; /* design.mps.sig */ | 27 | typedef unsigned long Sig; /* <design/sig/> */ |
| 28 | typedef int Res; /* design.mps.type.res */ | 28 | typedef int Res; /* <design/type/#res> */ |
| 29 | 29 | ||
| 30 | typedef void (*Fun)(void); /* design.mps.type.fun */ | 30 | typedef void (*Fun)(void); /* <design/type/#fun> */ |
| 31 | typedef MPS_T_WORD Word; /* design.mps.type.word */ | 31 | typedef MPS_T_WORD Word; /* <design/type/#word> */ |
| 32 | typedef unsigned char Byte; /* design.mps.type.byte */ | 32 | typedef unsigned char Byte; /* <design/type/#byte> */ |
| 33 | typedef struct AddrStruct *Addr; /* design.mps.type.addr */ | 33 | typedef struct AddrStruct *Addr; /* <design/type/#addr> */ |
| 34 | typedef Word Size; /* design.mps.type.size */ | 34 | typedef Word Size; /* <design/type/#size> */ |
| 35 | typedef Word Count; /* design.mps.type.count */ | 35 | typedef Word Count; /* <design/type/#count> */ |
| 36 | typedef Word Index; /* design.mps.type.index */ | 36 | typedef Word Index; /* <design/type/#index> */ |
| 37 | typedef Word Align; /* design.mps.type.align */ | 37 | typedef Word Align; /* <design/type/#align> */ |
| 38 | typedef unsigned Shift; /* design.mps.type.shift */ | 38 | typedef unsigned Shift; /* <design/type/#shift> */ |
| 39 | typedef unsigned Serial; /* design.mps.type.serial */ | 39 | typedef unsigned Serial; /* <design/type/#serial> */ |
| 40 | typedef Addr Ref; /* design.mps.type.ref */ | 40 | typedef Addr Ref; /* <design/type/#ref> */ |
| 41 | typedef void *Pointer; /* design.mps.type.pointer */ | 41 | typedef void *Pointer; /* <design/type/#pointer> */ |
| 42 | 42 | ||
| 43 | typedef Word RefSet; /* design.mps.refset */ | 43 | typedef Word RefSet; /* design.mps.refset */ |
| 44 | typedef Word ZoneSet; /* design.mps.refset */ | 44 | typedef Word ZoneSet; /* design.mps.refset */ |
| @@ -46,28 +46,28 @@ typedef unsigned Rank; | |||
| 46 | typedef unsigned RankSet; | 46 | typedef unsigned RankSet; |
| 47 | typedef unsigned RootMode; | 47 | typedef unsigned RootMode; |
| 48 | typedef Size Epoch; /* design.mps.ld */ | 48 | typedef Size Epoch; /* design.mps.ld */ |
| 49 | typedef unsigned TraceId; /* design.mps.trace */ | 49 | typedef unsigned TraceId; /* <design/trace/> */ |
| 50 | typedef unsigned TraceSet; /* design.mps.trace */ | 50 | typedef unsigned TraceSet; /* <design/trace/> */ |
| 51 | typedef unsigned TraceState; /* design.mps.trace */ | 51 | typedef unsigned TraceState; /* <design/trace/> */ |
| 52 | typedef unsigned AccessSet; /* design.mps.type.access-set */ | 52 | typedef unsigned AccessSet; /* <design/type/#access-set> */ |
| 53 | typedef unsigned Attr; /* design.mps.type.attr */ | 53 | typedef unsigned Attr; /* <design/type/#attr> */ |
| 54 | typedef unsigned FormatVariety; | 54 | typedef unsigned FormatVariety; |
| 55 | typedef int RootVar; /* design.mps.type.rootvar */ | 55 | typedef int RootVar; /* <design/type/#rootvar> */ |
| 56 | 56 | ||
| 57 | typedef Word *BT; /* design.mps.bt */ | 57 | typedef Word *BT; /* <design/bt/> */ |
| 58 | typedef struct BootBlockStruct *BootBlock; /* impl.c.boot */ | 58 | typedef struct BootBlockStruct *BootBlock; /* impl.c.boot */ |
| 59 | typedef struct BufferStruct *Buffer; /* design.mps.buffer */ | 59 | typedef struct BufferStruct *Buffer; /* <design/buffer/> */ |
| 60 | typedef struct SegBufStruct *SegBuf; /* design.mps.buffer */ | 60 | typedef struct SegBufStruct *SegBuf; /* <design/buffer/> */ |
| 61 | typedef struct BufferClassStruct *BufferClass; /* design.mps.buffer */ | 61 | typedef struct BufferClassStruct *BufferClass; /* <design/buffer/> */ |
| 62 | typedef BufferClass SegBufClass; /* design.mps.buffer */ | 62 | typedef BufferClass SegBufClass; /* <design/buffer/> */ |
| 63 | typedef BufferClass RankBufClass; /* design.mps.buffer */ | 63 | typedef BufferClass RankBufClass; /* <design/buffer/> */ |
| 64 | typedef unsigned BufferMode; /* design.mps.buffer */ | 64 | typedef unsigned BufferMode; /* <design/buffer/> */ |
| 65 | typedef unsigned FrameState; /* design.mps.alloc-frame */ | 65 | typedef unsigned FrameState; /* <design/alloc-frame/> */ |
| 66 | typedef struct APStruct *AP; /* design.mps.buffer */ | 66 | typedef struct APStruct *AP; /* <design/buffer/> */ |
| 67 | typedef struct FormatStruct *Format; /* design.mps.format */ | 67 | typedef struct FormatStruct *Format; /* design.mps.format */ |
| 68 | typedef struct LDStruct *LD; /* design.mps.ld */ | 68 | typedef struct LDStruct *LD; /* design.mps.ld */ |
| 69 | typedef struct LockStruct *Lock; /* impl.c.lock* */ | 69 | typedef struct LockStruct *Lock; /* impl.c.lock* */ |
| 70 | typedef struct PoolStruct *Pool; /* design.mps.pool */ | 70 | typedef struct PoolStruct *Pool; /* <design/pool/> */ |
| 71 | typedef struct PoolClassStruct *PoolClass; /* impl.c.poolclas */ | 71 | typedef struct PoolClassStruct *PoolClass; /* impl.c.poolclas */ |
| 72 | typedef PoolClass AbstractPoolClass; /* impl.c.poolabs */ | 72 | typedef PoolClass AbstractPoolClass; /* impl.c.poolabs */ |
| 73 | typedef PoolClass AbstractAllocFreePoolClass; /* impl.c.poolabs */ | 73 | typedef PoolClass AbstractAllocFreePoolClass; /* impl.c.poolabs */ |
| @@ -75,10 +75,10 @@ typedef PoolClass AbstractBufferPoolClass; /* impl.c.poolabs */ | |||
| 75 | typedef PoolClass AbstractSegBufPoolClass; /* impl.c.poolabs */ | 75 | typedef PoolClass AbstractSegBufPoolClass; /* impl.c.poolabs */ |
| 76 | typedef PoolClass AbstractScanPoolClass; /* impl.c.poolabs */ | 76 | typedef PoolClass AbstractScanPoolClass; /* impl.c.poolabs */ |
| 77 | typedef PoolClass AbstractCollectPoolClass; /* impl.c.poolabs */ | 77 | typedef PoolClass AbstractCollectPoolClass; /* impl.c.poolabs */ |
| 78 | typedef struct TraceStruct *Trace; /* design.mps.trace */ | 78 | typedef struct TraceStruct *Trace; /* <design/trace/> */ |
| 79 | typedef struct ScanStateStruct *ScanState; /* design.mps.trace */ | 79 | typedef struct ScanStateStruct *ScanState; /* <design/trace/> */ |
| 80 | typedef struct ChainStruct *Chain; /* design.mps.trace */ | 80 | typedef struct ChainStruct *Chain; /* <design/trace/> */ |
| 81 | typedef struct TractStruct *Tract; /* design.mps.arena */ | 81 | typedef struct TractStruct *Tract; /* <design/arena/> */ |
| 82 | typedef struct ChunkStruct *Chunk; /* impl.c.tract */ | 82 | typedef struct ChunkStruct *Chunk; /* impl.c.tract */ |
| 83 | typedef struct ChunkCacheEntryStruct *ChunkCacheEntry; /* impl.c.tract */ | 83 | typedef struct ChunkCacheEntryStruct *ChunkCacheEntry; /* impl.c.tract */ |
| 84 | typedef struct PageStruct *Page; /* impl.c.tract */ | 84 | typedef struct PageStruct *Page; /* impl.c.tract */ |
| @@ -88,19 +88,19 @@ typedef struct SegClassStruct *SegClass; /* impl.c.seg */ | |||
| 88 | typedef SegClass GCSegClass; /* impl.c.seg */ | 88 | typedef SegClass GCSegClass; /* impl.c.seg */ |
| 89 | typedef struct SegPrefStruct *SegPref; /* design.mps.pref, impl.c.locus */ | 89 | typedef struct SegPrefStruct *SegPref; /* design.mps.pref, impl.c.locus */ |
| 90 | typedef int SegPrefKind; /* design.mps.pref, impl.c.locus */ | 90 | typedef int SegPrefKind; /* design.mps.pref, impl.c.locus */ |
| 91 | typedef struct ArenaClassStruct *ArenaClass; /* design.mps.arena */ | 91 | typedef struct ArenaClassStruct *ArenaClass; /* <design/arena/> */ |
| 92 | typedef ArenaClass AbstractArenaClass; /* impl.c.arena */ | 92 | typedef ArenaClass AbstractArenaClass; /* impl.c.arena */ |
| 93 | typedef struct ArenaStruct *Arena; /* design.mps.arena */ | 93 | typedef struct ArenaStruct *Arena; /* <design/arena/> */ |
| 94 | typedef struct GlobalsStruct *Globals; /* design.mps.arena */ | 94 | typedef struct GlobalsStruct *Globals; /* <design/arena/> */ |
| 95 | typedef struct VMStruct *VM; /* impl.c.vm* */ | 95 | typedef struct VMStruct *VM; /* impl.c.vm* */ |
| 96 | typedef struct RootStruct *Root; /* impl.c.root */ | 96 | typedef struct RootStruct *Root; /* impl.c.root */ |
| 97 | typedef struct ThreadStruct *Thread; /* impl.c.th* */ | 97 | typedef struct ThreadStruct *Thread; /* impl.c.th* */ |
| 98 | typedef struct MutatorFaultContextStruct | 98 | typedef struct MutatorFaultContextStruct |
| 99 | *MutatorFaultContext; /* design.mps.prot */ | 99 | *MutatorFaultContext; /* <design/prot/> */ |
| 100 | typedef struct PoolDebugMixinStruct *PoolDebugMixin; | 100 | typedef struct PoolDebugMixinStruct *PoolDebugMixin; |
| 101 | typedef struct AllocPatternStruct *AllocPattern; | 101 | typedef struct AllocPatternStruct *AllocPattern; |
| 102 | typedef struct AllocFrameStruct *AllocFrame; /* design.mps.alloc-frame */ | 102 | typedef struct AllocFrameStruct *AllocFrame; /* <design/alloc-frame/> */ |
| 103 | typedef struct ReservoirStruct *Reservoir; /* design.mps.reservoir */ | 103 | typedef struct ReservoirStruct *Reservoir; /* <design/reservoir/> */ |
| 104 | 104 | ||
| 105 | 105 | ||
| 106 | /* Arena*Method -- see impl.h.mpmst.ArenaClassStruct */ | 106 | /* Arena*Method -- see impl.h.mpmst.ArenaClassStruct */ |
| @@ -121,7 +121,7 @@ typedef Res (*ArenaDescribeMethod)(Arena arena, mps_lib_FILE *stream); | |||
| 121 | 121 | ||
| 122 | /* Messages | 122 | /* Messages |
| 123 | * | 123 | * |
| 124 | * See design.mps.message | 124 | * See <design/message/> |
| 125 | */ | 125 | */ |
| 126 | 126 | ||
| 127 | typedef unsigned MessageType; | 127 | typedef unsigned MessageType; |
| @@ -140,7 +140,7 @@ typedef Res (*TraceFixMethod)(ScanState ss, Ref *refIO); | |||
| 140 | typedef void (*FormattedObjectsStepMethod)(Addr, Format, Pool, | 140 | typedef void (*FormattedObjectsStepMethod)(Addr, Format, Pool, |
| 141 | void *, Size); | 141 | void *, Size); |
| 142 | 142 | ||
| 143 | /* Seg*Method -- see design.mps.seg */ | 143 | /* Seg*Method -- see <design/seg/> */ |
| 144 | 144 | ||
| 145 | typedef Res (*SegInitMethod)(Seg seg, Pool pool, Addr base, Size size, | 145 | typedef Res (*SegInitMethod)(Seg seg, Pool pool, Addr base, Size size, |
| 146 | Bool withReservoirPermit, va_list args); | 146 | Bool withReservoirPermit, va_list args); |
| @@ -161,7 +161,7 @@ typedef Res (*SegSplitMethod)(Seg seg, Seg segHi, | |||
| 161 | Addr base, Addr mid, Addr limit, | 161 | Addr base, Addr mid, Addr limit, |
| 162 | Bool withReservoirPermit, va_list args); | 162 | Bool withReservoirPermit, va_list args); |
| 163 | 163 | ||
| 164 | /* Buffer*Method -- see design.mps.buffer */ | 164 | /* Buffer*Method -- see <design/buffer/> */ |
| 165 | 165 | ||
| 166 | typedef Res (*BufferInitMethod)(Buffer buffer, Pool pool, va_list args); | 166 | typedef Res (*BufferInitMethod)(Buffer buffer, Pool pool, va_list args); |
| 167 | typedef void (*BufferFinishMethod)(Buffer buffer); | 167 | typedef void (*BufferFinishMethod)(Buffer buffer); |
| @@ -175,7 +175,7 @@ typedef void (*BufferReassignSegMethod)(Buffer buffer, Seg seg); | |||
| 175 | typedef Res (*BufferDescribeMethod)(Buffer buffer, mps_lib_FILE *stream); | 175 | typedef Res (*BufferDescribeMethod)(Buffer buffer, mps_lib_FILE *stream); |
| 176 | 176 | ||
| 177 | 177 | ||
| 178 | /* Pool*Method -- see design.mps.class-interface */ | 178 | /* Pool*Method -- see <design/class-interface/> */ |
| 179 | 179 | ||
| 180 | /* Order of types corresponds to PoolClassStruct in impl.h.mpmst */ | 180 | /* Order of types corresponds to PoolClassStruct in impl.h.mpmst */ |
| 181 | 181 | ||
| @@ -218,7 +218,7 @@ typedef Res (*PoolDescribeMethod)(Pool pool, mps_lib_FILE *stream); | |||
| 218 | typedef PoolDebugMixin (*PoolDebugMixinMethod)(Pool pool); | 218 | typedef PoolDebugMixin (*PoolDebugMixinMethod)(Pool pool); |
| 219 | 219 | ||
| 220 | 220 | ||
| 221 | /* Message*Method -- design.mps.message */ | 221 | /* Message*Method -- <design/message/> */ |
| 222 | 222 | ||
| 223 | typedef void (*MessageDeleteMethod)(Message message); | 223 | typedef void (*MessageDeleteMethod)(Message message); |
| 224 | typedef void (*MessageFinalizationRefMethod) | 224 | typedef void (*MessageFinalizationRefMethod) |
| @@ -228,7 +228,7 @@ typedef Size (*MessageGCCondemnedSizeMethod)(Message message); | |||
| 228 | typedef Size (*MessageGCNotCondemnedSizeMethod)(Message message); | 228 | typedef Size (*MessageGCNotCondemnedSizeMethod)(Message message); |
| 229 | 229 | ||
| 230 | 230 | ||
| 231 | /* Message Types -- design.mps.message and elsewhere */ | 231 | /* Message Types -- <design/message/> and elsewhere */ |
| 232 | 232 | ||
| 233 | typedef struct MessageFinalizationStruct *MessageFinalization; | 233 | typedef struct MessageFinalizationStruct *MessageFinalization; |
| 234 | 234 | ||
| @@ -246,7 +246,7 @@ typedef void (*FormatPadMethod)(Addr base, Size size); | |||
| 246 | typedef Addr (*FormatClassMethod)(Addr object); | 246 | typedef Addr (*FormatClassMethod)(Addr object); |
| 247 | 247 | ||
| 248 | 248 | ||
| 249 | /* Root*Method -- see design.mps.root-interface */ | 249 | /* Root*Method -- see <design/root/>-interface */ |
| 250 | /* .root-methods: These methods must match those defined in the */ | 250 | /* .root-methods: These methods must match those defined in the */ |
| 251 | /* MPS C Interface. (See impl.h.mps.root-methods.) */ | 251 | /* MPS C Interface. (See impl.h.mps.root-methods.) */ |
| 252 | 252 | ||
| @@ -257,11 +257,11 @@ typedef Res (*RootScanRegMethod)(ScanState ss, Thread thread, void *p, size_t s) | |||
| 257 | /* CONSTANTS */ | 257 | /* CONSTANTS */ |
| 258 | 258 | ||
| 259 | 259 | ||
| 260 | /* design.mps.sig SIGnature IS BAD */ | 260 | /* <design/sig/> SIGnature IS BAD */ |
| 261 | #define SigInvalid ((Sig)0x51915BAD) | 261 | #define SigInvalid ((Sig)0x51915BAD) |
| 262 | 262 | ||
| 263 | #define SizeMAX ((Size)-1) | 263 | #define SizeMAX ((Size)-1) |
| 264 | #define AccessSetEMPTY ((AccessSet)0) /* design.mps.type.access-set */ | 264 | #define AccessSetEMPTY ((AccessSet)0) /* <design/type/#access-set> */ |
| 265 | #define AccessREAD ((AccessSet)(1<<0)) | 265 | #define AccessREAD ((AccessSet)(1<<0)) |
| 266 | #define AccessWRITE ((AccessSet)(1<<1)) | 266 | #define AccessWRITE ((AccessSet)(1<<1)) |
| 267 | #define AccessSetWIDTH (2) | 267 | #define AccessSetWIDTH (2) |
| @@ -273,7 +273,7 @@ typedef Res (*RootScanRegMethod)(ScanState ss, Thread thread, void *p, size_t s) | |||
| 273 | #define TraceSetUNIV ((TraceSet)((1u << TraceLIMIT) - 1)) | 273 | #define TraceSetUNIV ((TraceSet)((1u << TraceLIMIT) - 1)) |
| 274 | #define RankSetEMPTY BS_EMPTY(RankSet) | 274 | #define RankSetEMPTY BS_EMPTY(RankSet) |
| 275 | #define RankSetUNIV ((RankSet)((1u << RankLIMIT) - 1)) | 275 | #define RankSetUNIV ((RankSet)((1u << RankLIMIT) - 1)) |
| 276 | #define AttrFMT ((Attr)(1<<0)) /* design.mps.type.attr */ | 276 | #define AttrFMT ((Attr)(1<<0)) /* <design/type/#attr> */ |
| 277 | #define AttrSCAN ((Attr)(1<<1)) | 277 | #define AttrSCAN ((Attr)(1<<1)) |
| 278 | #define AttrPM_NO_READ ((Attr)(1<<2)) | 278 | #define AttrPM_NO_READ ((Attr)(1<<2)) |
| 279 | #define AttrPM_NO_WRITE ((Attr)(1<<3)) | 279 | #define AttrPM_NO_WRITE ((Attr)(1<<3)) |
| @@ -319,7 +319,7 @@ enum { | |||
| 319 | #define BufferModeTRANSITION ((BufferMode)(1<<3)) | 319 | #define BufferModeTRANSITION ((BufferMode)(1<<3)) |
| 320 | 320 | ||
| 321 | 321 | ||
| 322 | /* Buffer frame states. See design.mps.alloc-frame.lw-frame.states */ | 322 | /* Buffer frame states. See <design/alloc-frame/#lw-frame.states> */ |
| 323 | enum { | 323 | enum { |
| 324 | BufferFrameVALID = 1, | 324 | BufferFrameVALID = 1, |
| 325 | BufferFramePOP_PENDING, | 325 | BufferFramePOP_PENDING, |
| @@ -327,7 +327,7 @@ enum { | |||
| 327 | }; | 327 | }; |
| 328 | 328 | ||
| 329 | 329 | ||
| 330 | /* Rank constants -- see design.mps.type.rank */ | 330 | /* Rank constants -- see <design/type/#rank> */ |
| 331 | /* These definitions must match impl.h.mps.rank. */ | 331 | /* These definitions must match impl.h.mps.rank. */ |
| 332 | /* This is checked by impl.c.mpsi.check. */ | 332 | /* This is checked by impl.c.mpsi.check. */ |
| 333 | 333 | ||
| @@ -350,7 +350,7 @@ enum { | |||
| 350 | #define RootModePROTECTABLE_INNER ((RootMode)1<<2) | 350 | #define RootModePROTECTABLE_INNER ((RootMode)1<<2) |
| 351 | 351 | ||
| 352 | 352 | ||
| 353 | /* Root Variants -- see design.mps.type.rootvar | 353 | /* Root Variants -- see <design/type/#rootvar> |
| 354 | * | 354 | * |
| 355 | * .rootvar: Synchonize with impl.c.root.rootvarcheck | 355 | * .rootvar: Synchonize with impl.c.root.rootvarcheck |
| 356 | */ | 356 | */ |
| @@ -365,7 +365,7 @@ enum { | |||
| 365 | }; | 365 | }; |
| 366 | 366 | ||
| 367 | 367 | ||
| 368 | /* .result-codes: Result Codes -- see design.mps.type.res */ | 368 | /* .result-codes: Result Codes -- see <design/type/#res> */ |
| 369 | /* These definitions must match impl.h.mps.result-codes. */ | 369 | /* These definitions must match impl.h.mps.result-codes. */ |
| 370 | /* This is checked by impl.c.mpsi.check.rc. */ | 370 | /* This is checked by impl.c.mpsi.check.rc. */ |
| 371 | /* Changing this list entails changing the list in */ | 371 | /* Changing this list entails changing the list in */ |
| @@ -384,7 +384,7 @@ enum { | |||
| 384 | }; | 384 | }; |
| 385 | 385 | ||
| 386 | 386 | ||
| 387 | /* TraceStates -- see design.mps.trace */ | 387 | /* TraceStates -- see <design/trace/> */ |
| 388 | 388 | ||
| 389 | enum { | 389 | enum { |
| 390 | TraceINIT = 1, | 390 | TraceINIT = 1, |
| @@ -395,7 +395,7 @@ enum { | |||
| 395 | }; | 395 | }; |
| 396 | 396 | ||
| 397 | 397 | ||
| 398 | /* MessageTypes -- see design.mps.message */ | 398 | /* MessageTypes -- see <design/message/> */ |
| 399 | /* .message.types: Keep in sync with impl.h.mps.message.types */ | 399 | /* .message.types: Keep in sync with impl.h.mps.message.types */ |
| 400 | 400 | ||
| 401 | enum { | 401 | enum { |