SCI: Cleanup kernel signature code a bit.
* Moved KSIG_SPEC_* from kernel.h to kernel.cpp * Clarified the comment on KSIG_SPEC_* a bit * Changed the other KSIG_ #defines into an enum * Removed KSIG_TERMINATOR and KSIG_SPEC_ARITMETIC (sic) svn-id: r49578
This commit is contained in:
parent
8295eb09cd
commit
874151f5d1
2 changed files with 31 additions and 28 deletions
|
@ -33,6 +33,26 @@
|
||||||
|
|
||||||
namespace Sci {
|
namespace Sci {
|
||||||
|
|
||||||
|
// Uncompiled kernel signatures are formed from a string of letters.
|
||||||
|
// each corresponding to a type of a parameter (see below).
|
||||||
|
// Use small letters to indicate end of sum type.
|
||||||
|
// Use capital letters for sum types, e.g.
|
||||||
|
// "LNoLr" for a function which takes two arguments:
|
||||||
|
// (1) list, node or object
|
||||||
|
// (2) list or ref
|
||||||
|
#define KSIG_SPEC_LIST 'l'
|
||||||
|
#define KSIG_SPEC_NODE 'n'
|
||||||
|
#define KSIG_SPEC_OBJECT 'o'
|
||||||
|
#define KSIG_SPEC_REF 'r' // Said Specs and strings
|
||||||
|
#define KSIG_SPEC_ARITHMETIC 'i'
|
||||||
|
#define KSIG_SPEC_NULL 'z'
|
||||||
|
#define KSIG_SPEC_ANY '.'
|
||||||
|
#define KSIG_SPEC_ELLIPSIS '*' // Arbitrarily more TYPED arguments
|
||||||
|
|
||||||
|
#define KSIG_SPEC_SUM_DONE ('a' - 'A')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Default kernel name table
|
// Default kernel name table
|
||||||
#define SCI_KNAMES_DEFAULT_ENTRIES_NR 0x89
|
#define SCI_KNAMES_DEFAULT_ENTRIES_NR 0x89
|
||||||
|
|
||||||
|
@ -538,8 +558,7 @@ static void kernel_compile_signature(const char **s) {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
error("INTERNAL ERROR when compiling kernel function signature '%s': (%02x) not understood (aka"
|
error("ERROR compiling kernel function signature '%s': (%02x / '%c') not understood", *s, c, c);
|
||||||
" '%c')\n", *s, c, c);
|
|
||||||
}
|
}
|
||||||
} while (*src && (*src == KSIG_SPEC_ELLIPSIS || (c < 'a' && c != KSIG_SPEC_ANY)));
|
} while (*src && (*src == KSIG_SPEC_ELLIPSIS || (c < 'a' && c != KSIG_SPEC_ANY)));
|
||||||
|
|
||||||
|
|
|
@ -95,36 +95,20 @@ struct List; // from segment.h
|
||||||
//#define DISABLE_VALIDATIONS // enable to stop validation checks
|
//#define DISABLE_VALIDATIONS // enable to stop validation checks
|
||||||
|
|
||||||
// ---- Kernel signatures -----------------------------------------------------
|
// ---- Kernel signatures -----------------------------------------------------
|
||||||
#define KSIG_TERMINATOR 0
|
|
||||||
|
|
||||||
// Uncompiled signatures
|
|
||||||
#define KSIG_SPEC_ARITMETIC 'i'
|
|
||||||
#define KSIG_SPEC_LIST 'l'
|
|
||||||
#define KSIG_SPEC_NODE 'n'
|
|
||||||
#define KSIG_SPEC_OBJECT 'o'
|
|
||||||
#define KSIG_SPEC_REF 'r' // Said Specs and strings
|
|
||||||
#define KSIG_SPEC_ARITHMETIC 'i'
|
|
||||||
#define KSIG_SPEC_NULL 'z'
|
|
||||||
#define KSIG_SPEC_ANY '.'
|
|
||||||
#define KSIG_SPEC_ELLIPSIS '*' // Arbitrarily more TYPED arguments
|
|
||||||
|
|
||||||
#define KSIG_SPEC_SUM_DONE ('a' - 'A') // Use small letters to indicate end of sum type
|
|
||||||
/* Use capital letters for sum types, e.g.
|
|
||||||
** "LNoLr" for a function which takes two arguments:
|
|
||||||
** (1) list, node or object
|
|
||||||
** (2) list or ref
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Compiled signatures
|
// Compiled signatures
|
||||||
#define KSIG_LIST 0x01
|
enum {
|
||||||
#define KSIG_NODE 0x02
|
KSIG_LIST = 0x01,
|
||||||
#define KSIG_OBJECT 0x04
|
KSIG_NODE = 0x02,
|
||||||
#define KSIG_REF 0x08
|
KSIG_OBJECT = 0x04,
|
||||||
#define KSIG_ARITHMETIC 0x10
|
KSIG_REF = 0x08,
|
||||||
|
KSIG_ARITHMETIC = 0x10,
|
||||||
|
KSIG_NULL = 0x40,
|
||||||
|
KSIG_ANY = 0x5f,
|
||||||
|
KSIG_ELLIPSIS = 0x80
|
||||||
|
};
|
||||||
|
|
||||||
#define KSIG_NULL 0x40
|
|
||||||
#define KSIG_ANY 0x5f
|
|
||||||
#define KSIG_ELLIPSIS 0x80
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
/* Generic description: */
|
/* Generic description: */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue