/********************************************************************************************************************************/ /* Created: 9-Apr-2009 11:44:34 by OpenVMS SDL EV2-3 */ /* Source: 09-APR-2009 11:44:10 DISK$SYSMAN:[LAISHEV.WORK.VTL]VTLDEF.SDL;196 */ /********************************************************************************************************************************/ /*** MODULE VTLDEF IDENT VTLDEF-1-X ***/ #ifndef __VTLDEF_LOADED #define __VTLDEF_LOADED 1 #pragma __nostandard /* This file uses non-ANSI-Standard features */ #pragma __member_alignment __save #pragma __nomember_alignment #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __save /* Save the previously-defined required ptr size */ #pragma __required_pointer_size __short /* And set ptr size default to 32-bit pointers */ #endif #ifdef __cplusplus extern "C" { #define __unknown_params ... #define __optional_params ... #else #define __unknown_params #define __optional_params ... #endif #ifndef __struct #if !defined(__VAXC) #define __struct struct #else #define __struct variant_struct #endif #endif #ifndef __union #if !defined(__VAXC) #define __union union #else #define __union variant_union #endif #endif /*++ */ /* */ /* Facility: */ /* VMS Tool Language */ /* */ /* Abstract: */ /* This is an interface module contains data structures definitions, */ /* constants, functions/procedures prototypes. */ /* */ /* Author: */ /* Ruslan R. Laishev */ /* */ /* Creation Date: 19-MAR-2009 */ /* */ /* Modification History: */ /* */ /*-- */ /* */ /* Token definition structure see %union in the vtl.bison */ /* */ #ifdef __NEW_STARLET typedef union _vtl_tok { __struct { unsigned int tok_l_len; unsigned char *tok_a_ptr; } tok_r_vchar; unsigned int tok_l_digit; } VTL_TOK; #if !defined(__VAXC) #define tok_l_len tok_r_vchar.tok_l_len #define tok_a_ptr tok_r_vchar.tok_a_ptr #endif /* #if !defined(__VAXC) */ #else /* __OLD_STARLET */ union vtl_tok { __struct { unsigned int tok_l_len; unsigned char *tok_a_ptr; } tok_r_vchar; unsigned int tok_l_digit; } ; #if !defined(__VAXC) #define tok_l_len tok_r_vchar.tok_l_len #define tok_a_ptr tok_r_vchar.tok_a_ptr #endif /* #if !defined(__VAXC) */ #endif /* #ifdef __NEW_STARLET */ /* */ /* VTL Tokens, Simple (single-byte) tokens */ /* */ #define VTL_TOK_QUOTE 34 #define VTL_TOK_HASH 35 #define VTL_TOK_COMMENT 35 #define VTL_TOK_DOT 46 #define VTL_TOK_MINUS 45 #define VTL_TOK_SLASH 47 #define VTL_TOK_STAR 42 #define VTL_TOK_DOLLAR 36 #define VTL_TOK_BRK_OP 40 #define VTL_TOK_BRK_CL 41 #define VTL_TOK_BLK_OP 123 #define VTL_TOK_BLK_CL 125 #define VTL_TOK_SQ_OP 91 #define VTL_TOK_SQ_CL 93 #define VTL_TOK_AN_OP 60 #define VTL_TOK_AN_CL 62 #define VTL_TOK_COMMA 44 #define VTL_TOK_TILDA 126 #define VTL_TOK_COLON 58 #define VTL_TOK_SEMI 59 #define VTL_TOK_PERCENT 37 #define VTL_TOK_SET 61 #define VTL_TOK_GT 62 #define VTL_TOK_LT 60 #define VTL_TOK_ADD 43 #define VTL_TOK_SUB 45 #define VTL_TOK_MUL 42 #define VTL_TOK_DIV 47 #define VTL_TOK_AND 38 #define VTL_TOK_OR 124 #define VTL_TOK_XOR 94 #define VTL_TOK_NOT 33 #define VTL_TOK_NEG 126 #define VTL_TOK_RMDR 37 #define VTL_TOK_UNAR 1024 #define VTL_TOK_SHFT 512 #define VTL_TOK_UADD 1067 /* += */ #define VTL_TOK_USUB 1069 /* -= */ #define VTL_TOK_UMUL 1066 /* *= */ #define VTL_TOK_UDIV 1071 /* /= */ #define VTL_TOK_UAND 1062 /* &= */ #define VTL_TOK_UOR 1148 /* |= */ #define VTL_TOK_UXOR 1118 /* ^= */ #define VTL_TOK_NEQ 1057 /* != */ #define VTL_TOK_UNEG 1150 /* ~= */ #define VTL_TOK_URMDR 1061 /* %= */ #define VTL_TOK_SHRT 574 /* >> */ #define VTL_TOK_SHLF 572 /* << */ #define VTL_TOK_USHRT 1598 /* >>= */ #define VTL_TOK_USHLF 1596 /* <<= */ /* */ /* VTL Tokens, Complez (multi-bytes) tokens */ /* */ #define VTL_TOK_INCLUDE 258 /* .INCLUDE DIRECTIVE */ #define VTL_TOK_DEFS 259 /* .DEFS DIRECTIVE */ #define VTL_TOK_CDD 260 /* .CDD DIRECTIVE */ #define VTL_TOK_DEFINE 261 /* .DEFINE DIRECTIVE */ #define VTL_TOK_ENTRY 262 /* entry () */ #define VTL_TOK_ROUTINE 263 /* Routine */ #define VTL_TOK_STRUCT 264 /* Structure type */ #define VTL_TOK_TYPEDEF 265 /* Type declaration */ #define VTL_TOK_CONST 266 /* Constant object */ #define VTL_TOK_UNSIGNED 267 /* Unsigned */ #define VTL_TOK_VOID 268 /* Void */ #define VTL_TOK_BYTE 269 /* Byte */ #define VTL_TOK_WORD 270 /* Word */ #define VTL_TOK_LONG 271 /* Longword */ #define VTL_TOK_QUAD 272 /* Quadword */ #define VTL_TOK_FLOAT 273 /* Float */ #define VTL_TOK_DOUBLE 274 /* Double float */ #define VTL_TOK_STRING 275 /* A general string */ #define VTL_TOK_DIM 276 /* A dimension of array */ #define VTL_TOK_ID 277 /* Identificator: variable or routine name */ #define VTL_TOK_FSPEC 278 /* File specification */ #define VTL_TOK_EOL 279 /* End of Line */ #define VTL_TOK_EOS 280 /* End of Stream */ #define VTL_TOK_DIGIT 281 /* Digit */ #define VTL_TOK_EQ 282 /* == */ #define VTL_TOK_GE 283 /* => */ #define VTL_TOK_LE 284 /* =< */ #define VTL_TOK_LAND 285 /* && */ #define VTL_TOK_LOR 286 /* || */ #define VTL_TOK_INCR 287 /* ++ */ #define VTL_TOK_DECR 288 /* -- */ #define VTL_TOK_QUOTED 289 /* String in quotes "...." */ /* */ /* Data types definition */ /* */ #define TYPE_M_BYTE 0x1 #define TYPE_M_WORD 0x2 #define TYPE_M_LONG 0x4 #define TYPE_M_QUAD 0x8 #define TYPE_M_FLOAT 0x10 #define TYPE_M_DOUBLE 0x20 #define TYPE_M_STRING 0x40 #define TYPE_M_UNSIGN 0x80 #define TYPE_M_CONST 0x100 #define TYPE_M_ENTRY 0x200 #ifdef __NEW_STARLET typedef struct _vtl_type { unsigned type_v_byte : 1; unsigned type_v_word : 1; unsigned type_v_long : 1; unsigned type_v_quad : 1; unsigned type_v_float : 1; unsigned type_v_double : 1; unsigned type_v_string : 1; unsigned type_v_unsign : 1; /* Signed/unsigned type of variable */ unsigned type_v_const : 1; /* Constant */ unsigned type_v_entry : 1; /* Routine */ unsigned type_v_fill_0_ : 6; } VTL_TYPE; #else /* __OLD_STARLET */ struct vtl_type { unsigned type_v_byte : 1; unsigned type_v_word : 1; unsigned type_v_long : 1; unsigned type_v_quad : 1; unsigned type_v_float : 1; unsigned type_v_double : 1; unsigned type_v_string : 1; unsigned type_v_unsign : 1; /* Signed/unsigned type of variable */ unsigned type_v_const : 1; /* Constant */ unsigned type_v_entry : 1; /* Routine */ unsigned type_v_fill_0_ : 6; } ; #endif /* #ifdef __NEW_STARLET */ /* */ /* Tree/node stuff */ /* */ #ifdef __NEW_STARLET typedef struct _vtl_key { unsigned char key_b_len; char key_t_sts [32]; } VTL_KEY; #else /* __OLD_STARLET */ struct vtl_key { unsigned char key_b_len; char key_t_sts [32]; } ; #endif /* #ifdef __NEW_STARLET */ #ifdef __NEW_STARLET typedef struct _vtl_node { void *tree_a_flink; void *tree_a_blink; unsigned short int tree_w_spare; void *tree_a_ptr; } VTL_NODE; #else /* __OLD_STARLET */ struct vtl_node { void *tree_a_flink; void *tree_a_blink; unsigned short int tree_w_spare; void *tree_a_ptr; } ; #endif /* #ifdef __NEW_STARLET */ /* */ /* Constant/Variable (id) structure */ /* */ #define VTL_ID_HDRSZ 45 #define VTL_ID_VALSZ 8 #ifdef __NEW_STARLET typedef struct _vtl_id { __struct { unsigned char id_b_len; char id_t_name [32]; } id_r_name; __union { unsigned int id_l_type; VTL_TYPE id_r_type; } id_r__u; unsigned int id_l_dim; /* Dimension */ unsigned int id_l_sz; /* An element size for STRING */ __union { char id_t_val; char id_b_val; short int id_w_val; int id_l_val; __int64 id_q_val; void *id_a_val; } id_r_val; } VTL_ID; #if !defined(__VAXC) #define id_b_len id_r_name.id_b_len #define id_t_name id_r_name.id_t_name #define id_l_type id_r__u.id_l_type #define id_r_type id_r__u.id_r_type #define id_t_val id_r_val.id_t_val #define id_b_val id_r_val.id_b_val #define id_w_val id_r_val.id_w_val #define id_l_val id_r_val.id_l_val #define id_q_val id_r_val.id_q_val #define id_a_val id_r_val.id_a_val #endif /* #if !defined(__VAXC) */ #else /* __OLD_STARLET */ struct vtl_id { __struct { unsigned char id_b_len; char id_t_name [32]; } id_r_name; __union { unsigned int id_l_type; struct vtl_type id_r_type; } id_r__u; unsigned int id_l_dim; /* Dimension */ unsigned int id_l_sz; /* An element size for STRING */ __union { char id_t_val; char id_b_val; short int id_w_val; int id_l_val; int id_q_val [2]; void *id_a_val; } id_r_val; } ; #if !defined(__VAXC) #define id_b_len id_r_name.id_b_len #define id_t_name id_r_name.id_t_name #define id_l_type id_r__u.id_l_type #define id_r_type id_r__u.id_r_type #define id_t_val id_r_val.id_t_val #define id_b_val id_r_val.id_b_val #define id_w_val id_r_val.id_w_val #define id_l_val id_r_val.id_l_val #define id_q_val id_r_val.id_q_val #define id_a_val id_r_val.id_a_val #endif /* #if !defined(__VAXC) */ #endif /* #ifdef __NEW_STARLET */ /* */ /* Routine */ /* */ #define RTN_VTL_MAXARGS 10 #ifdef __NEW_STARLET typedef struct _vtl_rtn { __struct { unsigned char rtn_b_len; char rtn_t_name [32]; } rtn_r_name; unsigned int rtn_l_argc; __struct { __union { unsigned int rtn_l_type; VTL_TYPE rtn_r_type; } rtn_r_type; } rtn_r_argv [10]; } VTL_RTN; #if !defined(__VAXC) #define rtn_b_len rtn_r_name.rtn_b_len #define rtn_t_name rtn_r_name.rtn_t_name #define rtn_r_type rtn_r_type #define rtn_l_type rtn_r_type.rtn_l_type #define rtn_r_type rtn_r_type.rtn_r_type #endif /* #if !defined(__VAXC) */ #else /* __OLD_STARLET */ struct vtl_rtn { __struct { unsigned char rtn_b_len; char rtn_t_name [32]; } rtn_r_name; unsigned int rtn_l_argc; __struct { __union { unsigned int rtn_l_type; struct vtl_type rtn_r_type; } rtn_r_type; } rtn_r_argv [10]; } ; #if !defined(__VAXC) #define rtn_b_len rtn_r_name.rtn_b_len #define rtn_t_name rtn_r_name.rtn_t_name #define rtn_l_type rtn_r_type.rtn_l_type #define rtn_r_type rtn_r_type.rtn_r_type #endif /* #if !defined(__VAXC) */ #endif /* #ifdef __NEW_STARLET */ /* */ /* A parser context structure */ /* */ #ifdef __cplusplus /* Define structure prototypes */ struct _id; #endif /* #ifdef __cplusplus */ #ifdef __NEW_STARLET typedef struct _vtl_ctx { unsigned int ctx_l_line; /* Line number */ __struct { unsigned char line_b_len; /* Line length */ char line_t_line [1024]; /* A line string buffer */ } ctx_ctx_line; unsigned int ctx_l_pos; /* A current position in the line buffer */ unsigned int ctx_l_lvl; /* A current recursion level */ struct _id *ctx_a_globals; /* A global symbol table */ struct _id *ctx_a_locals; /* A local symbol table */ } VTL_CTX; #if !defined(__VAXC) #define line_b_len ctx_ctx_line.line_b_len #define line_t_line ctx_ctx_line.line_t_line #endif /* #if !defined(__VAXC) */ #else /* __OLD_STARLET */ struct vtl_ctx { unsigned int ctx_l_line; /* Line number */ __struct { unsigned char line_b_len; /* Line length */ char line_t_line [1024]; /* A line string buffer */ } ctx_ctx_line; unsigned int ctx_l_pos; /* A current position in the line buffer */ unsigned int ctx_l_lvl; /* A current recursion level */ void *ctx_a_globals; /* A global symbol table */ void *ctx_a_locals; /* A local symbol table */ } ; #if !defined(__VAXC) #define line_b_len ctx_ctx_line.line_b_len #define line_t_line ctx_ctx_line.line_t_line #endif /* #if !defined(__VAXC) */ #endif /* #ifdef __NEW_STARLET */ /* */ /* Reverse Polish Notaion block */ /* */ /*AGGREGATE rpn STRUCTURE PREFIX VTL_ TAG RPN; */ /*END rpn; */ #pragma __member_alignment __restore #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __restore /* Restore the previously-defined required ptr size */ #endif #ifdef __cplusplus } #endif #pragma __standard #endif /* __VTLDEF_LOADED */