/************************************************************************* * * * YAP Prolog * * * * Yap Prolog was developed at NCCUP - Universidade do Porto * * * * Copyright L.Damas, V. Santos Costa and Universidade do Porto 1985-- * * * ************************************************************************** * * * File: qly.h * * comments: quick saver/loader * * * * Last rev: $Date: 2011-08-29$,$Author: vsc $ * * $Log: not supported by cvs2svn $ * * * *************************************************************************/ /** * * @file qly.h * * @defgroup SaveRestoreSupport C-support for saved states. * @ingroup QLY * @{ * */ #define EXPORT_ATOM_TABLE_SIZE (16 * 4096) #define EXPORT_FUNCTOR_TABLE_SIZE (16 * 4096) #define EXPORT_OPCODE_TABLE_SIZE (4096) #define EXPORT_PRED_ENTRY_TABLE_SIZE (128) #define EXPORT_DBREF_TABLE_SIZE (128) typedef struct export_atom_hash_entry_struct { Atom val; } export_atom_hash_entry_t; typedef struct import_atom_hash_entry_struct { Atom oval; Atom val; struct import_atom_hash_entry_struct *next; } import_atom_hash_entry_t; typedef struct export_functor_hash_entry_struct { Functor val; Atom name; UInt arity; } export_functor_hash_entry_t; typedef struct import_functor_hash_entry_struct { Functor val; Functor oval; struct import_functor_hash_entry_struct *next; } import_functor_hash_entry_t; typedef struct import_opcode_hash_entry_struct { OPCODE val; int id; OPCODE oval; struct import_opcode_hash_entry_struct *next; } import_opcode_hash_entry_t; typedef struct export_pred_entry_hash_entry_struct { PredEntry *val; union { Functor f; Atom a; } u_af; Atom module; UInt arity; } export_pred_entry_hash_entry_t; typedef struct import_pred_entry_hash_entry_struct { PredEntry *val; PredEntry *oval; struct import_pred_entry_hash_entry_struct *next; } import_pred_entry_hash_entry_t; typedef struct export_dbref_hash_entry_struct { DBRef val; UInt sz; UInt refs; } export_dbref_hash_entry_t; typedef struct import_dbref_hash_entry_struct { DBRef val; DBRef oval; int count; struct import_dbref_hash_entry_struct *next; } import_dbref_hash_entry_t; typedef enum { QLY_START_X = 0, QLY_START_OPCODES = 1, QLY_START_ATOMS = 2, QLY_START_FUNCTORS = 3, QLY_START_PRED_ENTRIES = 4, QLY_START_DBREFS = 5, QLY_START_MODULE = 6, QLY_END_MODULES = 7, QLY_START_LU_CLAUSE = 8, QLY_END_LU_CLAUSES = 9, QLY_NEW_OP = 10, QLY_END_OPS = 11, QLY_START_PREDICATE = 12, QLY_END_PREDICATES = 13, QLY_FAILCODE = 15, QLY_ATOM = 16, QLY_ATOM_BLOB = 14 } qlf_tag_t; #define STATIC_PRED_FLAGS \ (SourcePredFlag | DynamicPredFlag | LogUpdatePredFlag | CompiledPredFlag | \ MultiFileFlag | TabledPredFlag | MegaClausePredFlag | CountPredFlag | \ ProfiledPredFlag | ThreadLocalPredFlag | AtomDBPredFlag | \ ModuleTransparentPredFlag | NumberDBPredFlag | MetaPredFlag | \ SyncPredFlag | BackCPredFlag) #define EXTRA_PRED_FLAGS \ (QuasiQuotationPredFlag | NoTracePredFlag | NoSpyPredFlag) #define SYSTEM_PRED_FLAGS \ (BackCPredFlag | UserCPredFlag | CArgsPredFlag | AsmPredFlag | CPredFlag | \ BinaryPredFlag) #define CHECK(F) \ { \ size_t r = (F); \ if (!r) \ return r; \ } #define RCHECK(F) \ if (!(F)) { \ QLYR_ERROR(MISMATCH); \ return; \ } #define AllocTempSpace() (HR) #define EnoughTempSpace(sz) ((ASP - HR) * sizeof(CELL) > sz) /// @} @}