⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 _slang.h

📁 一个C格式的脚本处理函数库源代码,可让你的C程序具有执行C格式的脚本文件
💻 H
📖 第 1 页 / 共 2 页
字号:
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_SYSTEMextern 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#endiftypedef 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_SUPPORTextern int _SLtt_get_bce_color_offset (void);#endifextern 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 (SLtype);extern VOID_STAR _SLclass_get_ptr_to_value (SLang_Class_Type *, SLang_Object_Type *);extern void _SLclass_type_mismatch_error (SLtype, SLtype);extern int _SLclass_init (void);extern int _SLclass_copy_class (SLtype, SLtype);extern int (*_SLclass_get_typecast (SLtype, SLtype, int))(SLtype, VOID_STAR, unsigned int, SLtype, VOID_STAR);extern int (*_SLclass_get_binary_fun (int, SLang_Class_Type *, SLang_Class_Type *, SLang_Class_Type **, int))(int, SLtype, VOID_STAR, unsigned int, SLtype, VOID_STAR, unsigned int, VOID_STAR);extern int (*_SLclass_get_unary_fun (int, SLang_Class_Type *, SLang_Class_Type **, int))(int, SLtype, VOID_STAR, unsigned int, VOID_STAR);extern int _SLarith_register_types (void);extern SLtype _SLarith_Arith_Types [];extern int _SLang_is_arith_type (SLtype);extern void _SLang_set_arith_type (SLtype, unsigned char);#if _SLANG_OPTIMIZE_FOR_SPEEDextern int _SLang_get_class_type (SLtype);extern void _SLang_set_class_type (SLtype, SLtype);#endifextern int _SLarith_bin_op (SLang_Object_Type *, SLang_Object_Type *, int);extern int _SLarray_add_bin_op (SLtype);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	0x7FFFextern 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 (SLtype, VOID_STAR, unsigned int,		   SLtype, 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 (SLtype, unsigned int);extern void _SLarray_cl_foreach_close (SLtype, SLang_Foreach_Context_Type *);extern int _SLarray_cl_foreach (SLtype, SLang_Foreach_Context_Type *);extern int _SLarray_matrix_multiply (void);extern void (*_SLang_Matrix_Multiply)(void);extern int _SLarray_next_index (int *, int *, unsigned int);extern int _SLarray_init_slarray (void);extern SLang_Array_Type *SLang_create_array1 (SLtype, int, VOID_STAR, int *, unsigned int, int);extern int _SLassoc_aput (SLtype, unsigned int);extern int _SLassoc_aget (SLtype, unsigned 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   SLtype type;}_SLang_Token_Type;extern void _SLcompile (_SLang_Token_Type *);extern void (*_SLcompile_ptr)(_SLang_Token_Type *);/* slmisc.c */extern char *_SLskip_whitespace (char *s);/* slospath.c */extern char *_SLpath_find_file (char *);   /* slstring returned *//* *** 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 ILLEGAL_TOKEN	0x00	       /* no token has this value */#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 METHOD_TOKEN	0x24#define IS_LVALUE_TOKEN (((t) <= METHOD_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			0xFFtypedef 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#elseextern int _SLvsnprintf (char *, unsigned int, char *, va_list);#endif#ifdef HAVE_SNPRINTF# define _SLsnprintf snprintf#elseextern int _SLsnprintf (char *, unsigned int, char *, ...);#endifextern int _SLsecure_issetugid (void);extern char *_SLsecure_getenv (char *);#undef _INLINE_#if defined(__GNUC__) && _SLANG_USE_INLINE_CODE# define _INLINE_ __inline__#else# define _INLINE_#endif#endif				       /* _PRIVATE_SLANG_H_ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -