\r
typedef struct DictionaryInfoChunk\r
{\r
-/* All fields are stored in BIG ENDIAN format for consistency in data files. */\r
-/* All fileds must be the same size as int32 for easy endian conversion. */\r
- int32 sd_Version;\r
- int32 sd_RelContext; /* relative ptr to Dictionary Context */\r
- int32 sd_RelHeaderPtr; /* relative ptr to Dictionary Header Ptr */\r
- int32 sd_RelCodePtr; /* relative ptr to Dictionary Header Ptr */\r
- ExecToken sd_EntryPoint; /* relative ptr to entry point or NULL */\r
- int32 sd_UserStackSize; /* in bytes */\r
- int32 sd_ReturnStackSize; /* in bytes */\r
- int32 sd_NameSize; /* in bytes */\r
- int32 sd_CodeSize; /* in bytes */\r
- int32 sd_NumPrimitives; /* To distinguish between primitive and secondary. */\r
- uint32 sd_Flags;\r
- int32 sd_FloatSize; /* In bytes. Must match code. 0 means no floats. */\r
- uint32 sd_Reserved;\r
+/* All fields are stored in BIG ENDIAN format for consistency in data files.\r
+ * All fields must be the same size for easy endian conversion.\r
+ * All fields must be 32 bit for file compatibility with older versions.\r
+ */\r
+ int32_t sd_Version;\r
+ int32_t sd_RelContext; /* relative ptr to Dictionary Context */\r
+ int32_t sd_RelHeaderPtr; /* relative ptr to Dictionary Header Ptr */\r
+ int32_t sd_RelCodePtr; /* relative ptr to Dictionary Header Ptr */\r
+ int32_t sd_EntryPoint; /* relative ptr to entry point or NULL */\r
+ int32_t sd_UserStackSize; /* in bytes */\r
+ int32_t sd_ReturnStackSize; /* in bytes */\r
+ int32_t sd_NameSize; /* in bytes */\r
+ int32_t sd_CodeSize; /* in bytes */\r
+ int32_t sd_NumPrimitives; /* To distinguish between primitive and secondary. */\r
+ uint32_t sd_Flags;\r
+ int32_t sd_FloatSize; /* In bytes. Must match code. 0 means no floats. */\r
+ int32_t sd_CellSize; /* In bytes. Must match code. */\r
} DictionaryInfoChunk;\r
\r
/* Bits in sd_Flags */\r
#define SD_F_BIG_ENDIAN_DIC (1<<0)\r
\r
#ifndef MAKE_ID\r
-#define MAKE_ID(a,b,c,d) ((((uint32)a)<<24)|(((uint32)b)<<16)|(((uint32)c)<<8)|((uint32)d))\r
+#define MAKE_ID(a,b,c,d) ((((uint32_t)a)<<24)|(((uint32_t)b)<<16)|(((uint32_t)c)<<8)|((uint32_t)d))\r
#endif\r
\r
#define ID_FORM MAKE_ID('F','O','R','M')\r
extern "C" {\r
#endif\r
\r
-int32 ffSaveForth( const char *FileName, ExecToken EntryPoint, int32 NameSize, int32 CodeSize );\r
+cell_t ffSaveForth( const char *FileName, ExecToken EntryPoint, cell_t NameSize, cell_t CodeSize );\r
\r
/* Endian-ness tools. */\r
-\r
int IsHostLittleEndian( void );\r
-uint32 ReadLongBigEndian( const uint32 *addr );\r
-uint16 ReadShortBigEndian( const uint16 *addr );\r
-uint32 ReadLongLittleEndian( const uint32 *addr );\r
-uint16 ReadShortLittleEndian( const uint16 *addr );\r
-void WriteLongBigEndian( uint32 *addr, uint32 data );\r
-void WriteShortBigEndian( uint16 *addr, uint16 data );\r
-void WriteLongLittleEndian( uint32 *addr, uint32 data );\r
-void WriteShortLittleEndian( uint16 *addr, uint16 data );\r
+ \r
+ucell_t ReadCellBigEndian( const uint8_t *addr );\r
+uint32_t Read32BigEndian( const uint8_t *addr );\r
+uint16_t Read16BigEndian( const uint8_t *addr );\r
+ \r
+ucell_t ReadCellLittleEndian( const uint8_t *addr );\r
+uint32_t Read32LittleEndian( const uint8_t *addr );\r
+uint16_t Read16LittleEndian( const uint8_t *addr );\r
+ \r
+void WriteCellBigEndian( uint8_t *addr, ucell_t data );\r
+void Write32BigEndian( uint8_t *addr, uint32_t data );\r
+void Write16BigEndian( uint8_t *addr, uint16_t data );\r
+ \r
+void WriteCellLittleEndian( uint8_t *addr, ucell_t data );\r
+void Write32LittleEndian( uint8_t *addr, uint32_t data );\r
+void Write16LittleEndian( uint8_t *addr, uint16_t data );\r
\r
#ifdef PF_SUPPORT_FP\r
void WriteFloatBigEndian( PF_FLOAT *addr, PF_FLOAT data );\r