mirror of
https://github.com/lua/lua
synced 2024-11-26 22:59:35 +03:00
82 lines
2.0 KiB
C
82 lines
2.0 KiB
C
/*
|
|
** $Id: lundump.h,v 1.4 1998/06/25 16:48:44 roberto Exp roberto $
|
|
** load pre-compiled Lua chunks
|
|
** See Copyright Notice in lua.h
|
|
*/
|
|
|
|
#ifndef lundump_h
|
|
#define lundump_h
|
|
|
|
#include "lobject.h"
|
|
#include "lzio.h"
|
|
|
|
TProtoFunc *luaU_undump1 (ZIO* Z); /* load one chunk */
|
|
|
|
#define SIGNATURE "Lua"
|
|
#define VERSION 0x31 /* last format change was in 3.1 */
|
|
#define VERSION0 0x31 /* last major change was in 3.1 */
|
|
|
|
#define IsMain(f) (f->lineDefined==0)
|
|
|
|
#define ID_CHUNK 27 /* ESC */
|
|
#define ID_NUM 'N'
|
|
#define ID_STR 'S'
|
|
#define ID_FUN 'F'
|
|
|
|
/* number representation */
|
|
#define ID_INT4 'l' /* 4-byte integers */
|
|
#define ID_REAL4 'f' /* 4-byte reals */
|
|
#define ID_REAL8 'd' /* 8-byte reals */
|
|
#define ID_NATIVE '?' /* whatever your machine uses */
|
|
|
|
/*
|
|
* use a multiple of PI for testing number representation.
|
|
* multiplying by 1E8 gives notrivial integer values.
|
|
*/
|
|
#define TEST_NUMBER 3.14159265358979323846E8
|
|
|
|
/* LUA_NUMBER
|
|
* choose one below for the number representation in precompiled chunks.
|
|
* the default is ID_REAL8 because the default for LUA_NUM_TYPE is double.
|
|
* if your machine does not use IEEE 754, use ID_NATIVE.
|
|
* the next version will support conversion to/from IEEE 754.
|
|
*
|
|
* if you change LUA_NUM_TYPE, make sure you set ID_NUMBER accordingly,
|
|
* specially if sizeof(long)!=4.
|
|
* for types other than the ones listed below, you'll have to write your own
|
|
* dump and undump routines.
|
|
*/
|
|
|
|
#ifndef ID_NUMBER
|
|
#define ID_NUMBER ID_NATIVE
|
|
#endif
|
|
|
|
#if 0
|
|
#define ID_NUMBER ID_INT4
|
|
#define ID_NUMBER ID_REAL4
|
|
#define ID_NUMBER ID_REAL8
|
|
#define ID_NUMBER ID_NATIVE
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#if ID_NUMBER==ID_REAL4
|
|
#define DumpNumber DumpFloat
|
|
#define LoadNumber LoadFloat
|
|
#define SIZEOF_NUMBER 4
|
|
#elif ID_NUMBER==ID_REAL8
|
|
#define DumpNumber DumpDouble
|
|
#define LoadNumber LoadDouble
|
|
#define SIZEOF_NUMBER 8
|
|
#elif ID_NUMBER==ID_INT4
|
|
#define DumpNumber DumpLong
|
|
#define LoadNumber LoadLong
|
|
#define SIZEOF_NUMBER 4
|
|
#elif ID_NUMBER==ID_NATIVE
|
|
#define DumpNumber DumpNative
|
|
#define LoadNumber LoadNative
|
|
#define SIZEOF_NUMBER sizeof(real)
|
|
#else
|
|
#error bad ID_NUMBER
|
|
#endif
|