From 959a1722faec6b30510c788c49dcb4b7cb96d1e0 Mon Sep 17 00:00:00 2001 From: Mystery Man Date: Fri, 20 Feb 2004 00:03:26 +0000 Subject: This commit was manufactured by cvs2svn to create tag 'V10_0_21mdk'. --- mdk-stage1/slang/_slang.h | 743 ---------------------------------------------- 1 file changed, 743 deletions(-) delete mode 100644 mdk-stage1/slang/_slang.h (limited to 'mdk-stage1/slang/_slang.h') diff --git a/mdk-stage1/slang/_slang.h b/mdk-stage1/slang/_slang.h deleted file mode 100644 index 02ee13505..000000000 --- a/mdk-stage1/slang/_slang.h +++ /dev/null @@ -1,743 +0,0 @@ -#ifndef _PRIVATE_SLANG_H_ -#define _PRIVATE_SLANG_H_ -/* header file for S-Lang internal structures that users do not (should not) - need. Use slang.h for that purpose. */ -/* Copyright (c) 1992, 1999, 2001 John E. Davis - * This file is part of the S-Lang library. - * - * You may distribute under the terms of either the GNU General Public - * License or the Perl Artistic License. - */ - -/* #include "config.h" */ -#include "jdmacros.h" -#include "sllimits.h" - -#ifdef VMS -# define SLANG_SYSTEM_NAME "_VMS" -#else -# if defined (IBMPC_SYSTEM) -# define SLANG_SYSTEM_NAME "_IBMPC" -# else -# define SLANG_SYSTEM_NAME "_UNIX" -# endif -#endif /* VMS */ - -/* These quantities are main_types for byte-compiled code. They are used - * by the inner_interp routine. The _BC_ means byte-code. - */ - -#define _SLANG_BC_LVARIABLE SLANG_LVARIABLE /* 0x01 */ -#define _SLANG_BC_GVARIABLE SLANG_GVARIABLE /* 0x02 */ -#define _SLANG_BC_IVARIABLE SLANG_IVARIABLE /* 0x03 */ -#define _SLANG_BC_RVARIABLE SLANG_RVARIABLE /* 0x04 */ -#define _SLANG_BC_INTRINSIC SLANG_INTRINSIC /* 0x05 */ -#define _SLANG_BC_FUNCTION SLANG_FUNCTION /* 0x06 */ -#define _SLANG_BC_MATH_UNARY SLANG_MATH_UNARY /* 0x07 */ -#define _SLANG_BC_APP_UNARY SLANG_APP_UNARY /* 0x08 */ -#define _SLANG_BC_ICONST SLANG_ICONSTANT /* 0x09 */ -#define _SLANG_BC_DCONST SLANG_DCONSTANT /* 0x0A */ -#define _SLANG_BC_PVARIABLE SLANG_PVARIABLE /* 0x0B */ -#define _SLANG_BC_PFUNCTION SLANG_PFUNCTION /* 0x0C */ - -#define _SLANG_BC_BINARY 0x10 -#define _SLANG_BC_LITERAL 0x11 /* constant objects */ -#define _SLANG_BC_LITERAL_INT 0x12 -#define _SLANG_BC_LITERAL_STR 0x13 -#define _SLANG_BC_BLOCK 0x14 - -/* These 3 MUST be in this order too ! */ -#define _SLANG_BC_RETURN 0x15 -#define _SLANG_BC_BREAK 0x16 -#define _SLANG_BC_CONTINUE 0x17 - -#define _SLANG_BC_EXCH 0x18 -#define _SLANG_BC_LABEL 0x19 -#define _SLANG_BC_LOBJPTR 0x1A -#define _SLANG_BC_GOBJPTR 0x1B -#define _SLANG_BC_X_ERROR 0x1C -/* These must be in this order */ -#define _SLANG_BC_X_USER0 0x1D -#define _SLANG_BC_X_USER1 0x1E -#define _SLANG_BC_X_USER2 0x1F -#define _SLANG_BC_X_USER3 0x20 -#define _SLANG_BC_X_USER4 0x21 - -#define _SLANG_BC_CALL_DIRECT 0x24 -#define _SLANG_BC_CALL_DIRECT_FRAME 0x25 -#define _SLANG_BC_UNARY 0x26 -#define _SLANG_BC_UNARY_FUNC 0x27 - -#define _SLANG_BC_DEREF_ASSIGN 0x30 -#define _SLANG_BC_SET_LOCAL_LVALUE 0x31 -#define _SLANG_BC_SET_GLOBAL_LVALUE 0x32 -#define _SLANG_BC_SET_INTRIN_LVALUE 0x33 -#define _SLANG_BC_SET_STRUCT_LVALUE 0x34 -#define _SLANG_BC_FIELD 0x35 -#define _SLANG_BC_SET_ARRAY_LVALUE 0x36 - -#define _SLANG_BC_LINE_NUM 0x40 - -#define _SLANG_BC_TMP 0x50 -#define _SLANG_BC_LVARIABLE_AGET 0x60 -#define _SLANG_BC_LVARIABLE_APUT 0x61 -#define _SLANG_BC_INTEGER_PLUS 0x62 -#define _SLANG_BC_INTEGER_MINUS 0x63 -#define _SLANG_BC_ARG_LVARIABLE 0x64 -#define _SLANG_BC_EARG_LVARIABLE 0x65 - -#define _SLANG_BC_CALL_DIRECT_INTRINSIC 0x80 -#define _SLANG_BC_INTRINSIC_CALL_DIRECT 0x81 -#define _SLANG_BC_CALL_DIRECT_LSTR 0x82 -#define _SLANG_BC_CALL_DIRECT_SLFUN 0x83 -#define _SLANG_BC_CALL_DIRECT_INTRSTOP 0x84 -#define _SLANG_BC_INTRINSIC_STOP 0x85 -#define _SLANG_BC_CALL_DIRECT_EARG_LVAR 0x86 -#define _SLANG_BC_CALL_DIRECT_LINT 0x87 -#define _SLANG_BC_CALL_DIRECT_LVAR 0x88 - - -/* Byte-Code Sub Types (_BCST_) */ - -/* These are sub_types of _SLANG_BC_BLOCK */ -#define _SLANG_BCST_ERROR_BLOCK 0x01 -#define _SLANG_BCST_EXIT_BLOCK 0x02 -#define _SLANG_BCST_USER_BLOCK0 0x03 -#define _SLANG_BCST_USER_BLOCK1 0x04 -#define _SLANG_BCST_USER_BLOCK2 0x05 -#define _SLANG_BCST_USER_BLOCK3 0x06 -#define _SLANG_BCST_USER_BLOCK4 0x07 -/* The user blocks MUST be in the above order */ -#define _SLANG_BCST_LOOP 0x10 -#define _SLANG_BCST_WHILE 0x11 -#define _SLANG_BCST_FOR 0x12 -#define _SLANG_BCST_FOREVER 0x13 -#define _SLANG_BCST_CFOR 0x14 -#define _SLANG_BCST_DOWHILE 0x15 -#define _SLANG_BCST_FOREACH 0x16 - -#define _SLANG_BCST_IF 0x20 -#define _SLANG_BCST_IFNOT 0x21 -#define _SLANG_BCST_ELSE 0x22 -#define _SLANG_BCST_ANDELSE 0x23 -#define _SLANG_BCST_ORELSE 0x24 -#define _SLANG_BCST_SWITCH 0x25 -#define _SLANG_BCST_NOTELSE 0x26 - -/* assignment (_SLANG_BC_SET_*_LVALUE) subtypes. The order MUST correspond - * to the assignment token order with the ASSIGN_TOKEN as the first! - */ -#define _SLANG_BCST_ASSIGN 0x01 -#define _SLANG_BCST_PLUSEQS 0x02 -#define _SLANG_BCST_MINUSEQS 0x03 -#define _SLANG_BCST_TIMESEQS 0x04 -#define _SLANG_BCST_DIVEQS 0x05 -#define _SLANG_BCST_BOREQS 0x06 -#define _SLANG_BCST_BANDEQS 0x07 -#define _SLANG_BCST_PLUSPLUS 0x08 -#define _SLANG_BCST_POST_PLUSPLUS 0x09 -#define _SLANG_BCST_MINUSMINUS 0x0A -#define _SLANG_BCST_POST_MINUSMINUS 0x0B - -/* These use SLANG_PLUS, SLANG_MINUS, SLANG_PLUSPLUS, etc... */ - -typedef union -{ -#if SLANG_HAS_FLOAT - double double_val; - float float_val; -#endif - long long_val; - unsigned long ulong_val; - VOID_STAR ptr_val; - char *s_val; - int int_val; - unsigned int uint_val; - SLang_MMT_Type *ref; - SLang_Name_Type *n_val; - struct _SLang_Struct_Type *struct_val; - struct _SLang_Array_Type *array_val; - short short_val; - unsigned short ushort_val; - char char_val; - unsigned char uchar_val; -} -_SL_Object_Union_Type; - -typedef struct _SLang_Object_Type -{ - unsigned char data_type; /* SLANG_INT_TYPE, ... */ - _SL_Object_Union_Type v; -} -SLang_Object_Type; - -struct _SLang_MMT_Type -{ - unsigned char data_type; /* int, string, etc... */ - VOID_STAR user_data; /* address of user structure */ - unsigned int count; /* number of references */ -}; - -extern int _SLang_pop_object_of_type (unsigned char, SLang_Object_Type *, int); - -typedef struct -{ - char *name; /* slstring */ - SLang_Object_Type obj; -} -_SLstruct_Field_Type; - -typedef struct _SLang_Struct_Type -{ - _SLstruct_Field_Type *fields; - unsigned int nfields; /* number used */ - unsigned int num_refs; -} -_SLang_Struct_Type; - -extern void _SLstruct_delete_struct (_SLang_Struct_Type *); -extern int _SLang_push_struct (_SLang_Struct_Type *); -extern int _SLang_pop_struct (_SLang_Struct_Type **); -extern int _SLstruct_init (void); -/* extern int _SLstruct_get_field (char *); */ -extern int _SLstruct_define_struct (void); -extern int _SLstruct_define_typedef (void); - -extern int _SLang_pop_datatype (unsigned char *); -extern int _SLang_push_datatype (unsigned char); - -struct _SLang_Ref_Type -{ - int is_global; - union - { - SLang_Name_Type *nt; - SLang_Object_Type *local_obj; - } - v; -}; - -extern int _SLang_dereference_ref (SLang_Ref_Type *); -extern int _SLang_deref_assign (SLang_Ref_Type *); -extern int _SLang_push_ref (int, VOID_STAR); - -extern int _SL_increment_frame_pointer (void); -extern int _SL_decrement_frame_pointer (void); - -extern int SLang_pop(SLang_Object_Type *); -extern void SLang_free_object (SLang_Object_Type *); -extern int _SLanytype_typecast (unsigned char, VOID_STAR, unsigned int, - unsigned char, VOID_STAR); -extern void _SLstring_intrinsic (void); - - -/* These functions are used to create slstrings of a fixed length. Be - * very careful how they are used. In particular, if len bytes are allocated, - * then the string must be len characters long, no more and no less. - */ -extern char *_SLallocate_slstring (unsigned int); -extern char *_SLcreate_via_alloced_slstring (char *, unsigned int); -extern void _SLunallocate_slstring (char *, unsigned int); -extern int _SLpush_alloced_slstring (char *, unsigned int); - -typedef struct -{ - char **buf; - unsigned int max_num; - unsigned int num; - unsigned int delta_num; -} -_SLString_List_Type; -extern int _SLstring_list_append (_SLString_List_Type *, char *); -extern int _SLstring_list_init (_SLString_List_Type *, unsigned int, unsigned int); -extern void _SLstring_list_delete (_SLString_List_Type *); -extern int _SLstring_list_push (_SLString_List_Type *); - -/* This function assumes that s is an slstring. */ -extern char *_SLstring_dup_slstring (char *); -extern int _SLang_dup_and_push_slstring (char *); - - -extern int _SLang_init_import (void); - -/* This function checks to see if the referenced object is initialized */ -extern int _SLang_is_ref_initialized (SLang_Ref_Type *); -extern int _SLcheck_identifier_syntax (char *); -extern int _SLang_uninitialize_ref (SLang_Ref_Type *); - -extern int _SLpush_slang_obj (SLang_Object_Type *); - -extern char *_SLexpand_escaped_char(char *, char *); -extern void _SLexpand_escaped_string (char *, char *, char *); - -/* returns a pointer to an SLstring string-- use SLang_free_slstring */ -extern char *_SLstringize_object (SLang_Object_Type *); -extern int _SLdump_objects (char *, SLang_Object_Type *, unsigned int, int); - -extern SLang_Object_Type *_SLRun_Stack; -extern SLang_Object_Type *_SLStack_Pointer; - -struct _SLang_NameSpace_Type -{ - struct _SLang_NameSpace_Type *next; - char *name; /* this is the load_type name */ - char *namespace_name; /* this name is assigned by implements */ - unsigned int table_size; - SLang_Name_Type **table; -}; -extern SLang_NameSpace_Type *_SLns_allocate_namespace (char *, unsigned int); -extern SLang_NameSpace_Type *_SLns_find_namespace (char *); -extern int _SLns_set_namespace_name (SLang_NameSpace_Type *, char *); -extern SLang_Array_Type *_SLnspace_apropos (SLang_NameSpace_Type *, char *, unsigned int); -extern void _SLang_use_namespace_intrinsic (char *name); -extern char *_SLang_cur_namespace_intrinsic (void); -extern SLang_Array_Type *_SLang_apropos (char *, char *, unsigned int); -extern void _SLang_implements_intrinsic (char *); - -extern int _SLang_Trace; -extern int _SLstack_depth(void); -extern char *_SLang_Current_Function_Name; - -extern int _SLang_trace_fun(char *); -extern int _SLang_Compile_Line_Num_Info; - -extern char *_SLstring_dup_hashed_string (char *, unsigned long); -extern unsigned long _SLcompute_string_hash (char *); -extern char *_SLstring_make_hashed_string (char *, unsigned int, unsigned long *); -extern void _SLfree_hashed_string (char *, unsigned int, unsigned long); -unsigned long _SLstring_hash (unsigned char *, unsigned char *); -extern int _SLinit_slcomplex (void); - -extern int _SLang_init_slstrops (void); -extern int _SLstrops_do_sprintf_n (int); -extern int _SLang_sscanf (void); -extern double _SLang_atof (char *); -extern int _SLang_init_bstring (void); -extern int _SLang_init_sltime (void); -extern void _SLpack (void); -extern void _SLunpack (char *, SLang_BString_Type *); -extern void _SLpack_pad_format (char *); -extern unsigned int _SLpack_compute_size (char *); -extern int _SLusleep (unsigned long); - -/* frees upon error. NULL __NOT__ ok. */ -extern int _SLang_push_slstring (char *); - -extern unsigned char _SLarith_promote_type (unsigned char); -extern int _SLarith_get_precedence (unsigned char); -extern int _SLarith_typecast (unsigned char, VOID_STAR, unsigned int, - unsigned char, VOID_STAR); - -extern int SLang_push(SLang_Object_Type *); -extern int SLadd_global_variable (char *); -extern void _SLang_clear_error (void); - -extern int _SLdo_pop (void); -extern unsigned int _SLsys_getkey (void); -extern int _SLsys_input_pending (int); -#ifdef IBMPC_SYSTEM -extern unsigned int _SLpc_convert_scancode (unsigned int, unsigned int, int); -#define _SLTT_KEY_SHIFT 1 -#define _SLTT_KEY_CTRL 2 -#define _SLTT_KEY_ALT 4 -#endif - -typedef struct _SLterminfo_Type SLterminfo_Type; -extern SLterminfo_Type *_SLtt_tigetent (char *); -extern char *_SLtt_tigetstr (SLterminfo_Type *, char *); -extern int _SLtt_tigetnum (SLterminfo_Type *, char *); -extern int _SLtt_tigetflag (SLterminfo_Type *, char *); - -#if SLTT_HAS_NON_BCE_SUPPORT -extern int _SLtt_get_bce_color_offset (void); -#endif -extern void (*_SLtt_color_changed_hook)(void); - -extern unsigned char SLang_Input_Buffer [SL_MAX_INPUT_BUFFER_LEN]; - -extern int _SLregister_types (void); -extern SLang_Class_Type *_SLclass_get_class (unsigned char); -extern VOID_STAR _SLclass_get_ptr_to_value (SLang_Class_Type *, SLang_Object_Type *); -extern void _SLclass_type_mismatch_error (unsigned char, unsigned char); -extern int _SLclass_init (void); -extern int _SLclass_copy_class (unsigned char, unsigned char); - -extern unsigned char _SLclass_Class_Type [256]; - -extern int (*_SLclass_get_typecast (unsigned char, unsigned char, int)) -(unsigned char, VOID_STAR, unsigned int, - unsigned char, VOID_STAR); - -extern int (*_SLclass_get_binary_fun (int, SLang_Class_Type *, SLang_Class_Type *, SLang_Class_Type **, int)) -(int, - unsigned char, VOID_STAR, unsigned int, - unsigned char, VOID_STAR, unsigned int, - VOID_STAR); - -extern int (*_SLclass_get_unary_fun (int, SLang_Class_Type *, SLang_Class_Type **, int)) -(int, unsigned char, VOID_STAR, unsigned int, VOID_STAR); - -extern int _SLarith_register_types (void); -extern unsigned char _SLarith_Arith_Types []; -extern unsigned char _SLarith_Is_Arith_Type [256]; -extern int _SLarith_bin_op (SLang_Object_Type *, SLang_Object_Type *, int); - -extern int _SLarray_add_bin_op (unsigned char); - -extern int _SLang_call_funptr (SLang_Name_Type *); -extern void _SLset_double_format (char *); -extern SLang_Name_Type *_SLlocate_global_name (char *); -extern SLang_Name_Type *_SLlocate_name (char *); - -extern char *_SLdefines[]; - -#define SL_ERRNO_NOT_IMPLEMENTED 0x7FFF -extern int _SLerrno_errno; -extern int _SLerrno_init (void); - -extern int _SLstdio_fdopen (char *, int, char *); - -extern void _SLstruct_pop_args (int *); -extern void _SLstruct_push_args (SLang_Array_Type *); - -extern int _SLarray_aput (void); -extern int _SLarray_aget (void); -extern int _SLarray_inline_implicit_array (void); -extern int _SLarray_inline_array (void); -extern int _SLarray_wildcard_array (void); - -extern int -_SLarray_typecast (unsigned char, VOID_STAR, unsigned int, - unsigned char, VOID_STAR, int); - -extern int _SLarray_aput_transfer_elem (SLang_Array_Type *, int *, - VOID_STAR, unsigned int, int); -extern int _SLarray_aget_transfer_elem (SLang_Array_Type *, int *, - VOID_STAR, unsigned int, int); -extern void _SLarray_free_array_elements (SLang_Class_Type *, VOID_STAR, unsigned int); - -extern SLang_Foreach_Context_Type * -_SLarray_cl_foreach_open (unsigned char, unsigned int); -extern void _SLarray_cl_foreach_close (unsigned char, SLang_Foreach_Context_Type *); -extern int _SLarray_cl_foreach (unsigned char, SLang_Foreach_Context_Type *); - -extern int _SLarray_matrix_multiply (void); -extern void (*_SLang_Matrix_Multiply)(void); - -extern int _SLarray_init_slarray (void); -extern SLang_Array_Type * -SLang_create_array1 (unsigned char, int, VOID_STAR, int *, unsigned int, int); - -extern int _SLcompile_push_context (SLang_Load_Type *); -extern int _SLcompile_pop_context (void); -extern int _SLang_Auto_Declare_Globals; - -typedef struct -{ - union - { - long long_val; - char *s_val; /* Used for IDENT_TOKEN, FLOAT, etc... */ - SLang_BString_Type *b_val; - } v; - int free_sval_flag; - unsigned int num_refs; - unsigned long hash; -#if _SLANG_HAS_DEBUG_CODE - int line_number; -#endif - unsigned char type; -} -_SLang_Token_Type; - -extern void _SLcompile (_SLang_Token_Type *); -extern void (*_SLcompile_ptr)(_SLang_Token_Type *); - -/* *** TOKENS *** */ - -/* Note that that tokens corresponding to ^J, ^M, and ^Z should not be used. - * This is because a file that contains any of these characters will - * have an OS dependent interpretation, e.g., ^Z is EOF on MSDOS. - */ - -/* Special tokens */ -#define EOF_TOKEN 0x01 -#define RPN_TOKEN 0x02 -#define NL_TOKEN 0x03 -#define NOP_TOKEN 0x05 -#define FARG_TOKEN 0x06 -#define TMP_TOKEN 0x07 - -#define RESERVED1_TOKEN 0x0A /* \n */ -#define RESERVED2_TOKEN 0x0D /* \r */ - -/* Literal tokens */ -#define CHAR_TOKEN 0x10 -#define UCHAR_TOKEN 0x11 -#define SHORT_TOKEN 0x12 -#define USHORT_TOKEN 0x13 -#define INT_TOKEN 0x14 -#define UINT_TOKEN 0x15 -#define LONG_TOKEN 0x16 -#define ULONG_TOKEN 0x17 -#define IS_INTEGER_TOKEN(x) ((x >= CHAR_TOKEN) && (x <= ULONG_TOKEN)) -#define FLOAT_TOKEN 0x18 -#define DOUBLE_TOKEN 0x19 -#define RESERVED3_TOKEN 0x1A /* ^Z */ -#define COMPLEX_TOKEN 0x1B -#define STRING_TOKEN 0x1C -#define BSTRING_TOKEN 0x1D -#define _BSTRING_TOKEN 0x1E /* byte-compiled BSTRING */ -#define ESC_STRING_TOKEN 0x1F - -/* Tokens that can be LVALUES */ -#define IDENT_TOKEN 0x20 -#define ARRAY_TOKEN 0x21 -#define DOT_TOKEN 0x22 -#define IS_LVALUE_TOKEN (((t) <= DOT_TOKEN) && ((t) >= IDENT_TOKEN)) - -/* do not use these values */ -#define RESERVED4_TOKEN 0x23 /* # */ -#define RESERVED5_TOKEN 0x25 /* % */ - -/* Flags for struct fields */ -#define STATIC_TOKEN 0x26 -#define READONLY_TOKEN 0x27 -#define PRIVATE_TOKEN 0x28 -#define PUBLIC_TOKEN 0x29 - -/* Punctuation tokens */ -#define OBRACKET_TOKEN 0x2a -#define CBRACKET_TOKEN 0x2b -#define OPAREN_TOKEN 0x2c -#define CPAREN_TOKEN 0x2d -#define OBRACE_TOKEN 0x2e -#define CBRACE_TOKEN 0x2f - -#define COMMA_TOKEN 0x31 -#define SEMICOLON_TOKEN 0x32 -#define COLON_TOKEN 0x33 -#define NAMESPACE_TOKEN 0x34 - -/* Operators */ -#define POW_TOKEN 0x38 - -/* The order here must match the order in the Binop_Level table in slparse.c */ -#define FIRST_BINARY_OP 0x39 -#define ADD_TOKEN 0x39 -#define SUB_TOKEN 0x3a -#define TIMES_TOKEN 0x3b -#define DIV_TOKEN 0x3c -#define LT_TOKEN 0x3d -#define LE_TOKEN 0x3e -#define GT_TOKEN 0x3f -#define GE_TOKEN 0x40 -#define EQ_TOKEN 0x41 -#define NE_TOKEN 0x42 -#define AND_TOKEN 0x43 -#define OR_TOKEN 0x44 -#define MOD_TOKEN 0x45 -#define BAND_TOKEN 0x46 -#define SHL_TOKEN 0x47 -#define SHR_TOKEN 0x48 -#define BXOR_TOKEN 0x49 -#define BOR_TOKEN 0x4a -#define POUND_TOKEN 0x4b /* matrix multiplication */ - -#define LAST_BINARY_OP 0x4b -#define IS_BINARY_OP(t) ((t >= FIRST_BINARY_OP) && (t <= LAST_BINARY_OP)) - -/* unary tokens -- but not all of them (see grammar) */ -#define DEREF_TOKEN 0x4d -#define NOT_TOKEN 0x4e -#define BNOT_TOKEN 0x4f - -#define IS_INTERNAL_FUNC(t) ((t >= 0x50) && (t <= 0x56)) -#define POP_TOKEN 0x50 -#define CHS_TOKEN 0x51 -#define SIGN_TOKEN 0x52 -#define ABS_TOKEN 0x53 -#define SQR_TOKEN 0x54 -#define MUL2_TOKEN 0x55 -#define EXCH_TOKEN 0x56 - -/* Assignment tokens. Note: these must appear with sequential values. - * The order here must match the specific lvalue assignments below. - * These tokens are used by rpn routines in slang.c. slparse.c maps them - * onto the specific lvalue tokens while parsing infix. - * Also the assignment _SLANG_BCST_ assumes this order - */ -#define ASSIGN_TOKEN 0x57 -#define PLUSEQS_TOKEN 0x58 -#define MINUSEQS_TOKEN 0x59 -#define TIMESEQS_TOKEN 0x5A -#define DIVEQS_TOKEN 0x5B -#define BOREQS_TOKEN 0x5C -#define BANDEQS_TOKEN 0x5D -#define PLUSPLUS_TOKEN 0x5E -#define POST_PLUSPLUS_TOKEN 0x5F -#define MINUSMINUS_TOKEN 0x60 -#define POST_MINUSMINUS_TOKEN 0x61 - -/* Directives */ -#define FIRST_DIRECTIVE_TOKEN 0x62 -#define IFNOT_TOKEN 0x62 -#define IF_TOKEN 0x63 -#define ELSE_TOKEN 0x64 -#define FOREVER_TOKEN 0x65 -#define WHILE_TOKEN 0x66 -#define FOR_TOKEN 0x67 -#define _FOR_TOKEN 0x68 -#define LOOP_TOKEN 0x69 -#define SWITCH_TOKEN 0x6A -#define DOWHILE_TOKEN 0x6B -#define ANDELSE_TOKEN 0x6C -#define ORELSE_TOKEN 0x6D -#define ERRBLK_TOKEN 0x6E -#define EXITBLK_TOKEN 0x6F -/* These must be sequential */ -#define USRBLK0_TOKEN 0x70 -#define USRBLK1_TOKEN 0x71 -#define USRBLK2_TOKEN 0x72 -#define USRBLK3_TOKEN 0x73 -#define USRBLK4_TOKEN 0x74 - -#define CONT_TOKEN 0x75 -#define BREAK_TOKEN 0x76 -#define RETURN_TOKEN 0x77 - -#define CASE_TOKEN 0x78 -#define DEFINE_TOKEN 0x79 -#define DO_TOKEN 0x7a -#define VARIABLE_TOKEN 0x7b -#define GVARIABLE_TOKEN 0x7c -#define _REF_TOKEN 0x7d -#define PUSH_TOKEN 0x7e -#define STRUCT_TOKEN 0x7f -#define TYPEDEF_TOKEN 0x80 -#define NOTELSE_TOKEN 0x81 -#define DEFINE_STATIC_TOKEN 0x82 -#define FOREACH_TOKEN 0x83 -#define USING_TOKEN 0x84 -#define DEFINE_PRIVATE_TOKEN 0x85 -#define DEFINE_PUBLIC_TOKEN 0x86 - -/* Note: the order here must match the order of the generic assignment tokens. - * Also, the first token of each group must be the ?_ASSIGN_TOKEN. - * slparse.c exploits this order, as well as slang.h. - */ -#define FIRST_ASSIGN_TOKEN 0x90 -#define _STRUCT_ASSIGN_TOKEN 0x90 -#define _STRUCT_PLUSEQS_TOKEN 0x91 -#define _STRUCT_MINUSEQS_TOKEN 0x92 -#define _STRUCT_TIMESEQS_TOKEN 0x93 -#define _STRUCT_DIVEQS_TOKEN 0x94 -#define _STRUCT_BOREQS_TOKEN 0x95 -#define _STRUCT_BANDEQS_TOKEN 0x96 -#define _STRUCT_PLUSPLUS_TOKEN 0x97 -#define _STRUCT_POST_PLUSPLUS_TOKEN 0x98 -#define _STRUCT_MINUSMINUS_TOKEN 0x99 -#define _STRUCT_POST_MINUSMINUS_TOKEN 0x9A - -#define _ARRAY_ASSIGN_TOKEN 0xA0 -#define _ARRAY_PLUSEQS_TOKEN 0xA1 -#define _ARRAY_MINUSEQS_TOKEN 0xA2 -#define _ARRAY_TIMESEQS_TOKEN 0xA3 -#define _ARRAY_DIVEQS_TOKEN 0xA4 -#define _ARRAY_BOREQS_TOKEN 0xA5 -#define _ARRAY_BANDEQS_TOKEN 0xA6 -#define _ARRAY_PLUSPLUS_TOKEN 0xA7 -#define _ARRAY_POST_PLUSPLUS_TOKEN 0xA8 -#define _ARRAY_MINUSMINUS_TOKEN 0xA9 -#define _ARRAY_POST_MINUSMINUS_TOKEN 0xAA - -#define _SCALAR_ASSIGN_TOKEN 0xB0 -#define _SCALAR_PLUSEQS_TOKEN 0xB1 -#define _SCALAR_MINUSEQS_TOKEN 0xB2 -#define _SCALAR_TIMESEQS_TOKEN 0xB3 -#define _SCALAR_DIVEQS_TOKEN 0xB4 -#define _SCALAR_BOREQS_TOKEN 0xB5 -#define _SCALAR_BANDEQS_TOKEN 0xB6 -#define _SCALAR_PLUSPLUS_TOKEN 0xB7 -#define _SCALAR_POST_PLUSPLUS_TOKEN 0xB8 -#define _SCALAR_MINUSMINUS_TOKEN 0xB9 -#define _SCALAR_POST_MINUSMINUS_TOKEN 0xBA - -#define _DEREF_ASSIGN_TOKEN 0xC0 -#define _DEREF_PLUSEQS_TOKEN 0xC1 -#define _DEREF_MINUSEQS_TOKEN 0xC2 -#define _DEREF_TIMESEQS_TOKEN 0xC3 -#define _DEREF_DIVEQS_TOKEN 0xC4 -#define _DEREF_BOREQS_TOKEN 0xC5 -#define _DEREF_BANDEQS_TOKEN 0xC6 -#define _DEREF_PLUSPLUS_TOKEN 0xC7 -#define _DEREF_POST_PLUSPLUS_TOKEN 0xC8 -#define _DEREF_MINUSMINUS_TOKEN 0xC9 -#define _DEREF_POST_MINUSMINUS_TOKEN 0xCA - -#define LAST_ASSIGN_TOKEN 0xCA -#define IS_ASSIGN_TOKEN(t) (((t)>=FIRST_ASSIGN_TOKEN)&&((t)<=LAST_ASSIGN_TOKEN)) - -#define _INLINE_ARRAY_TOKEN 0xE0 -#define _INLINE_IMPLICIT_ARRAY_TOKEN 0xE1 -#define _NULL_TOKEN 0xE2 -#define _INLINE_WILDCARD_ARRAY_TOKEN 0xE3 - -#define LINE_NUM_TOKEN 0xFC -#define ARG_TOKEN 0xFD -#define EARG_TOKEN 0xFE -#define NO_OP_LITERAL 0xFF - -typedef struct -{ - /* sltoken.c */ - /* SLang_eval_object */ - SLang_Load_Type *llt; - SLPreprocess_Type *this_slpp; - /* prep_get_char() */ - char *input_line; - char cchar; - /* get_token() */ - int want_nl_token; - - /* slparse.c */ - _SLang_Token_Type ctok; - int block_depth; - int assignment_expression; - - /* slang.c : SLcompile() */ - _SLang_Token_Type save_token; - _SLang_Token_Type next_token; - void (*slcompile_ptr)(_SLang_Token_Type *); -} -_SLEval_Context; - -extern int _SLget_token (_SLang_Token_Type *); -extern void _SLparse_error (char *, _SLang_Token_Type *, int); -extern void _SLparse_start (SLang_Load_Type *); -extern int _SLget_rpn_token (_SLang_Token_Type *); -extern void _SLcompile_byte_compiled (void); - -extern int (*_SLprep_eval_hook) (char *); - -#ifdef HAVE_VSNPRINTF -#define _SLvsnprintf vsnprintf -#else -extern int _SLvsnprintf (char *, unsigned int, char *, va_list); -#endif - -#ifdef HAVE_SNPRINTF -# define _SLsnprintf snprintf -#else -extern int _SLsnprintf (char *, unsigned int, char *, ...); -#endif - -#undef _INLINE_ -#if defined(__GNUC__) && _SLANG_USE_INLINE_CODE -# define _INLINE_ __inline__ -#else -# define _INLINE_ -#endif - - -#endif /* _PRIVATE_SLANG_H_ */ -- cgit v1.2.1