public class ClassDefinition extends java.lang.Object implements ProgressParserTokenTypes
Provides support for the following namespaces:
Modifier and Type | Class and Description |
---|---|
protected static class |
ClassDefinition.DataStoreType
Data store identifier.
|
private static class |
ClassDefinition.MemberData
Stores a member's data.
|
Modifier and Type | Field and Description |
---|---|
private boolean |
builtin
Flag marking if this is a built-in Progress class.
|
private java.util.Set<java.lang.String> |
directDotNet
Direct .NET references.
|
private boolean |
dotnet
Flag to differentiate between 4GL classes and .NET classes.
|
private java.util.Set<java.lang.String> |
dotnetDerived
.NET classes in the parent hierarchy.
|
private java.util.Set<ClassDefinition> |
dotnetProcessed
Classes for which we've already calculated .NET dependencies.
|
private java.lang.String |
filename
The filename of the .cls that defined this class/interface.
|
private java.util.Set<java.lang.String> |
fuzzyErrors
Track fuzzy lookup errors and suppress detailed output on duplicates.
|
private java.util.Map<java.lang.String,java.util.Map<SignatureKey,ClassDefinition.MemberData>> |
imethods
Instance methods mapped by name.
|
private java.util.Set<java.lang.String> |
indirectDotNet
Indirect .NET references.
|
private java.util.Set<java.lang.String> |
interfaces
List of implemented interfaces.
|
private java.util.Map<ClassDefinition.DataStoreType,java.util.Map<java.lang.String,ClassDefinition.MemberData>> |
istores
Instance data stores.
|
private java.lang.String |
javaClassName
The fully qualified converted Java name for this legacy class.
|
private java.util.Map<java.lang.String,java.lang.String> |
javaMethodNames
A map of legacy method signatures to Java names.
|
private java.lang.Object |
lock
Internal lock object.
|
private java.lang.String |
name
Fully qualified name of the class or interface.
|
static NameConverter |
nconvert
The converter to use for generating Java names.
|
static boolean |
nowrapObjects
Flag to indicate whether tracing is ON.
|
private OOType |
otype
Flag marking the type of this OO 4GL compile unit.
|
private ClassDefinition[] |
parents
Super class definition.
|
private boolean |
processed
Flag indicating that this class was processed (fully parsed) after it was pre-scanned.
|
private SchemaDictionary |
schemaDict
Provides schema lookup for this class' scope.
|
private java.util.Map<java.lang.String,java.util.Map<SignatureKey,ClassDefinition.MemberData>> |
smethods
Static methods mapped by name.
|
private java.util.Map<ClassDefinition.DataStoreType,java.util.Map<java.lang.String,ClassDefinition.MemberData>> |
sstores
Static data stores.
|
private int |
tempIdx
Temporary ID number (before AST IDs are assigned).
|
ABBREVIATED, AGGREGATE, ALTER_TABLE, AMBIGUOUS, ANNOTATION, ANY_LOCK, AREA, ARGUMENTS, AS_BUTTON, ASSIGN, ASSIGNMENT, AST_NODE, AT, ATTR_CHAR, ATTR_CLASS, ATTR_COM_HANDLE, ATTR_DATE, ATTR_DATETIME, ATTR_DATETIME_TZ, ATTR_DEC, ATTR_HANDLE, ATTR_INT, ATTR_INT64, ATTR_LOGICAL, ATTR_LONGCHAR, ATTR_MEMPTR, ATTR_POLY, ATTR_RAW, ATTR_RECID, ATTR_ROWID, BACKSLASH, BEGIN_ATTR, BEGIN_ATTR_METH, BEGIN_BUFFERTYPES, BEGIN_CALLGRAPH, BEGIN_FIELDTYPES, BEGIN_FUNCTYPES, BEGIN_FWD_EXTENSION, BEGIN_INDEX_MATCH_TYPES, BEGIN_LVALUE, BEGIN_METATYPES, BEGIN_METH, BEGIN_MULTIWORD, BEGIN_NATIVE_VARTYPES, BEGIN_OO_METH, BEGIN_RECORDTYPES, BEGIN_RESERVED, BEGIN_SCHEMA, BEGIN_SCHEMAKW, BEGIN_UNRESERVED, BEGIN_VARTYPES, BEGIN_WIDGETS, BEGINS_MATCH, BITWISE_AND, BITWISE_NOT, BITWISE_OR, BITWISE_XOR, BLOCK, BOGUS, BOOL_FALSE, BOOL_TRUE, BROKEN_PREPROC_ARG, BUFFER, BUFFER_SCOPE, CARET, CATEGORY, CHILD_PROCESS, CLASS_DEF, CLASS_EVENT, CLASS_NAME, CLIENT_WHERE, CLIENT_WHERE_SUBST, CLOSE_CURSOR, CLOSE_QUERY, CLOSE_STORED_PROCEDURE, CMT_CLOSE, CMT_OPEN, COLON, COLOR_PHRASE, COLUMN_LIST, COLUMN_REF, COM_INVOCATION, COM_METHOD, COM_OBJECT, COM_PARAMETER, COM_PROPERTY, COMMA, COMMAND_TEXT, COMMAND_TOKENS, COMMENT, CONNECT_OPTIONS, CONNECT_TEXT, CONSTRUCTOR, CONTENT_ARRAY, COPY_FROM_SB, COPY_TO_SB, CREATE_ALIAS, CREATE_BROWSE, CREATE_BUFFER, CREATE_CALL, CREATE_CLIENT_PRINCIPAL, CREATE_DATA_SOURCE, CREATE_DATABASE, CREATE_DATASET, CREATE_GENERIC_OCX, CREATE_INDEX, CREATE_OBJECT, CREATE_QUERY, CREATE_REPORT, CREATE_SAX_ATTRIBUTES, CREATE_SAX_READER, CREATE_SAX_WRITER, CREATE_SERVER, CREATE_SMTP_EMAIL, CREATE_SOAP_HEADER, CREATE_SOAP_HEADER_ENTRYREF, CREATE_SOCKET, CREATE_SRV_SOCKET, CREATE_TABLE, CREATE_TEMP_TABLE, CREATE_TIMER, CREATE_VIEW, CREATE_WIDGET, CREATE_WIDGET_POOL, CREATE_X_DOCUMENT, CREATE_X_NODEREF, CUSTOMER_SPECIFIC, CYCLE_ON_LIMIT, DATA_RELATION, DATA_SET, DATA_SOURCE, DATA_SOURCE_BUFFER, DATA_SOURCE_QUERY, DATABASE, DATE_LITERAL, DATETIME_LITERAL, DATETIME_TZ_LITERAL, DB_EVENT, DB_REF_NON_STATIC, DB_SYMBOL, DDE_ADVISE, DDE_EXECUTE, DDE_GET, DDE_INITIATE, DDE_REQUEST, DDE_SEND, DDE_SERVER, DDE_TERMINATE, DEC_LITERAL, DECLARE_CURSOR, DEFINE_BROWSE, DEFINE_BUFFER, DEFINE_BUTTON, DEFINE_DATA_SOURCE, DEFINE_DATASET, DEFINE_ENUM, DEFINE_EVENT, DEFINE_FIELD, DEFINE_FRAME, DEFINE_IMAGE, DEFINE_MENU, DEFINE_PARAMETER, DEFINE_PROPERTY, DEFINE_PROPERTY_GET, DEFINE_PROPERTY_SET, DEFINE_QUERY, DEFINE_RECTANGLE, DEFINE_STREAM, DEFINE_SUB_MENU, DEFINE_TEMP_TABLE, DEFINE_VARIABLE, DEFINE_WORK_TABLE, DELETE_ALIAS, DELETE_FROM, DELETE_OBJECT, DELETE_PROCEDURE, DELETE_WIDGET, DELETE_WIDGET_POOL, DESCRIPTION, DESTRUCTOR, DIGIT, DISABLE_TRIGGERS, DIVIDE, DLL_CALL_TYPE_LITERAL, DOT, DOTNET_DELEGATE, DROP_INDEX, DROP_TABLE, DROP_VIEW, DSTRING, DUMP_NAME, DYNAMIC, EDITING_BLOCK, EMBEDDED_ASSIGNMENT, EMBEDDED_SQL, EMPTY_TEMP_TABLE, END_ATTR, END_ATTR_METH, END_BUFFERTYPES, END_CALLGRAPH, END_FIELDTYPES, END_FUNCTYPES, END_FWD_EXTENSION, END_INDEX_MATCH_TYPES, END_LVALUE, END_METATYPES, END_METH, END_MULTIWORD, END_NATIVE_VARTYPES, END_OO_METH, END_RECORDTYPES, END_RESERVED, END_SCHEMA, END_SCHEMAKW, END_UNRESERVED, END_VARTYPES, END_WIDGETS, ENUM_DEF, ENUM_VALUE, EOF, EQUALITY_MATCH, EQUALS, EVENT, EVENT_LIST, EVENT_SIGNATURE, EXCLUSIVE_LOCK_LITERAL, EXPANDED_SCOPE, EXPORT_FIELD, EXPRESSION, EXTERNAL_PROCEDURE, FIELD_BIGINT, FIELD_BLOB, FIELD_BYTE, FIELD_CHAR, FIELD_CLASS, FIELD_CLOB, FIELD_COM_HANDLE, FIELD_DATE, FIELD_DATETIME, FIELD_DATETIME_TZ, FIELD_DEC, FIELD_DOUBLE, FIELD_FIXCHAR, FIELD_FLOAT, FIELD_HANDLE, FIELD_INT, FIELD_INT64, FIELD_LOGICAL, FIELD_RAW, FIELD_RECID, FIELD_ROWID, FIELD_SHORT, FIELD_TIME, FIELD_TIMESTAMP, FILE_RESOURCE, FILENAME, FILEROOT, FILTER_SPEC, FORM_ITEM, FORMAT_PHRASE, FRAME_ALLOC, FRAME_ELEMENT, FRAME_LOCK, FRAME_PHRASE, FRAME_SCOPE, FRAME_UNLOCK, FREE_REFERENCE, FROZEN, FUNC_CALL_TYPE_LITERAL, FUNC_CHAR, FUNC_CLASS, FUNC_COM_HANDLE, FUNC_DATE, FUNC_DATETIME, FUNC_DATETIME_TZ, FUNC_DEC, FUNC_HANDLE, FUNC_INT, FUNC_INT64, FUNC_LOGICAL, FUNC_LONGCHAR, FUNC_MEMPTR, FUNC_POLY, FUNC_RAW, FUNC_RECID, FUNC_ROWID, FUNCTION, FUNCTION_CALL, GET_ATTR_CTYPE_LITERAL, GROUP_BY, GT, GTE, HANDLE_TO, HEX_DIGIT, HEX_LITERAL, HIDDEN, IMPORT_FIELD, IN_WIDGET_POOL, INCLUDE_FILE, INCLUDES, INCREMENT, INDEX, INDEX_FIELD, INLINE_VAR_DEF, INLINE_VAR_DEF_ARRAY, INNER_BLOCK, INNER_JOIN, INPUT_CLEAR, INPUT_CLOSE, INPUT_FROM, INPUT_OUTPUT_CLOSE, INPUT_OUTPUT_THRU, INPUT_THRU, INSERT_INTO, INT_PROC, INTERFACE_DEF, INTERNAL_PROCEDURE, IO_OPTIONS, IPC_RESOURCE, IS_NOT_NULL, IS_NULL, JUNK, KEY_FIELD, KEY_FUNCTION, KW_3D, KW_ABBV, KW_ABORT, KW_ABS, KW_ABSTRACT, KW_ACC_CHG, KW_ACC_RCHG, KW_ACCEL, KW_ACCUM, KW_ACT_FORM, KW_ACT_WIN, KW_ACTIVATE, KW_ACTIVE, KW_ACTOR, KW_ADD, KW_ADD_1ST, KW_ADD_BCCA, KW_ADD_BUF, KW_ADD_C_C, KW_ADD_C_F, KW_ADD_C_N, KW_ADD_CC_A, KW_ADD_EVTP, KW_ADD_F_F, KW_ADD_F_N, KW_ADD_HENT, KW_ADD_IDXF, KW_ADD_IMG, KW_ADD_INVL, KW_ADD_L_C, KW_ADD_L_N, KW_ADD_LAST, KW_ADD_LIKF, KW_ADD_LIKI, KW_ADD_N_N, KW_ADD_NEWF, KW_ADD_NEWI, KW_ADD_PREL, KW_ADD_REL, KW_ADD_SLOC, KW_ADD_SRCB, KW_ADD_SUP, KW_ADD_TAB, KW_ADD_TO_A, KW_ADM_DATA, KW_ADM_TO, KW_ADVISE, KW_AFT_BUFF, KW_AFT_FILL, KW_AFT_R_F, KW_AFT_ROID, KW_AFT_TBL, KW_ALERT_BX, KW_ALIAS, KW_ALIGN, KW_ALL, KW_ALLW_C_S, KW_ALLW_REP, KW_ALT_KEY, KW_ALTER, KW_ALW_ON_T, KW_AMBIG, KW_ANALYZ, KW_AND, KW_ANSI_ONL, KW_ANY, KW_ANY_KEY, KW_ANY_PRT, KW_ANYWHERE, KW_APP_INFO, KW_APP_PW, KW_APP_UID, KW_APPEND, KW_APPEND_C, KW_APPEND_L, KW_APPL, KW_APPL_A_B, KW_APPL_CBK, KW_APPL_CID, KW_APPLY, KW_AREA, KW_ARR_MSG, KW_AS, KW_AS_THRD, KW_ASC, KW_ASCEND, KW_ASCII_2H, KW_ASK_OVER, KW_ASSEMBLY, KW_ASSIGN, KW_AST_ACTI, KW_ASYNC, KW_ASYNC_RC, KW_ASYNC_RH, KW_AT, KW_AT_W_BRW, KW_ATT_DSRC, KW_ATT_FILE, KW_ATT_PLST, KW_ATT_URL, KW_ATTR, KW_ATTR_NAM, KW_AUD_CTRL, KW_AUD_ENAB, KW_AUD_EV_C, KW_AUD_POL, KW_AUTHEN_F, KW_AUTHORZN, KW_AUTO_COM, KW_AUTO_D_X, KW_AUTO_DEL, KW_AUTO_END, KW_AUTO_GO, KW_AUTO_IND, KW_AUTO_RES, KW_AUTO_RET, KW_AUTO_SYN, KW_AUTO_VAL, KW_AUTO_ZAP, KW_AUTOMATC, KW_AVAIL, KW_AVERAGE, KW_AVG, KW_AVL_FMTS, KW_AVL_MSGS, KW_B_ENDIAN, KW_B4_BUFF, KW_B4_FILL, KW_B4_HIDE, KW_B4_R_F, KW_B4_ROWID, KW_B4_TABLE, KW_BACK_TAB, KW_BACKGRND, KW_BACKSP, KW_BACKWARD, KW_BAS_LOGG, KW_BASE_ADE, KW_BASE_KEY, KW_BASE64_D, KW_BASE64_E, KW_BATCH_MO, KW_BATCH_SZ, KW_BEG_EV_G, KW_BEGINS, KW_BELL, KW_BETWEEN, KW_BGCOLOR, KW_BGCOLRGB, KW_BIGINT, KW_BINARY, KW_BIND, KW_BIND_WH, KW_BL_BTNFN, KW_BL_CGR_K, KW_BL_CURGR, KW_BL_G_KEY, KW_BL_GADD, KW_BL_GCLR, KW_BL_GIFP, KW_BL_GIKEY, KW_BL_IADD, KW_BL_ITMFN, KW_BLANK, KW_BLK_IT_D, KW_BLK_LVL, KW_BLOB, KW_BLOCK, KW_BORD_B_C, KW_BORD_B_P, KW_BORD_L_C, KW_BORD_L_P, KW_BORD_R_C, KW_BORD_R_P, KW_BORD_T_C, KW_BORD_T_P, KW_BOTH, KW_BOTTOM, KW_BOTTOM_C, KW_BOX, KW_BOX_SEL, KW_BREAK, KW_BREAK_L, KW_BROWSE, KW_BTN_LIST, KW_BTOS, KW_BUF_COMP, KW_BUF_COPY, KW_BUF_CREA, KW_BUF_DEL, KW_BUF_FLD, KW_BUF_GRPI, KW_BUF_GRPN, KW_BUF_HNDL, KW_BUF_NAME, KW_BUF_PARI, KW_BUF_REL, KW_BUF_TENI, KW_BUF_TENN, KW_BUF_VAL, KW_BUF_VLID, KW_BUFFER, KW_BUFFER_C, KW_BUFFER_L, KW_BUFPOOL, KW_BUFRPOOL, KW_BUILD_TR, KW_BUTTON, KW_BY, KW_BY_PTR, KW_BY_REF, KW_BY_VALUE, KW_BY_VAR_P, KW_BYTE, KW_BYTES_R, KW_BYTES_W, KW_C_NOD_D, KW_C_T_V_N, KW_CACHE, KW_CACHE_SZ, KW_CALBGCLR, KW_CALCUFMT, KW_CALENDAR, KW_CALFGCLR, KW_CALFMTST, KW_CALL, KW_CALL_NAM, KW_CALL_TYP, KW_CALLBACK, KW_CALTITBG, KW_CALTITFG, KW_CALTRLFG, KW_CALUPDWN, KW_CALVALUE, KW_CAN_CREA, KW_CAN_DEL, KW_CAN_DO, KW_CAN_DUMP, KW_CAN_FIND, KW_CAN_LOAD, KW_CAN_QRY, KW_CAN_READ, KW_CAN_SET, KW_CAN_WRT, KW_CANC_BRK, KW_CANCEL_B, KW_CANCEL_P, KW_CANCEL_R, KW_CANCELLD, KW_CAPFNT, KW_CAPFNTSZ, KW_CAPS, KW_CARE_PNT, KW_CASE, KW_CASE_SEN, KW_CAST, KW_CATCH, KW_CATEGORY, KW_CBIT, KW_CDECL, KW_CEASE, KW_CENTER, KW_CFG_NAME, KW_CHAINED, KW_CHAR, KW_CHAR_LEN, KW_CHARSET, KW_CHART, KW_CHECK, KW_CHECK_AM, KW_CHECK_BO, KW_CHECKED, KW_CHLD_BUF, KW_CHLD_NUM, KW_CHOICES, KW_CHOOSE, KW_CHR, KW_CLASS, KW_CLEA_TAB, KW_CLEA_WIN, KW_CLEAR, KW_CLIP, KW_CLNT_C_I, KW_CLNT_DIS, KW_CLNT_PRL, KW_CLNT_TTY, KW_CLNT_TYP, KW_CLNT_WS, KW_CLOB, KW_CLOB_COL, KW_CLOB_CP, KW_CLOB_TYP, KW_CLONE_ND, KW_CLOSE, KW_CLOSE_AP, KW_CLOSE_LG, KW_CLR_ALL, KW_CLR_AP_C, KW_CLR_ATTL, KW_CLR_BCCL, KW_CLR_CC_L, KW_CLR_EMBL, KW_CLR_LOG, KW_CLR_NIML, KW_CLR_NODS, KW_CLR_S_AR, KW_CLR_SEL, KW_CLR_TABS, KW_CLR_TO_L, KW_CLS_TYPE, KW_CNCL_R_A, KW_CNTRL_BX, KW_CNTRL_FR, KW_CNTRL_NM, KW_CODE, KW_CODEBASE, KW_COL, KW_COL_BGC, KW_COL_CP, KW_COL_DC, KW_COL_FGC, KW_COL_FONT, KW_COL_L_SA, KW_COL_LAB, KW_COL_MOV, KW_COL_NODE, KW_COL_OF, KW_COL_PFC, KW_COL_R_O, KW_COL_RES, KW_COL_SCR, KW_COL_SRT, KW_COLL_A_E, KW_COLL_ALL, KW_COLLATE, KW_COLON, KW_COLON_AL, KW_COLOR, KW_COLR_TAB, KW_COLUMNS, KW_COM_DATA, KW_COM_HNDL, KW_COM_SELF, KW_COMBO_BX, KW_COMMAND, KW_COMPARE, KW_COMPARES, KW_COMPILE, KW_COMPILER, KW_COMPLETE, KW_CONN, KW_CONN_ED, KW_CONNTYPE, KW_CONSTRUC, KW_CONTAINS, KW_CONTENTS, KW_CONTROL, KW_CONTROLS, KW_CONVERT, KW_COOKIE_D, KW_COPY, KW_COUNT, KW_COUNT_OF, KW_COVERAGE, KW_CP, KW_CP_CVT, KW_CPCASE, KW_CPCOLL, KW_CPINTERN, KW_CPLOG, KW_CPPRINT, KW_CPRCODEI, KW_CPRCODEO, KW_CPSTREAM, KW_CPTERM, KW_CPY_DSET, KW_CPY_LOB, KW_CPY_SATR, KW_CPY_TTBL, KW_CR_LK_SQ, KW_CRC, KW_CRC_VAL, KW_CRE_IMAG, KW_CREAT_LK, KW_CREAT_ND, KW_CREAT_NN, KW_CREAT_OA, KW_CREAT_RL, KW_CREAT_SN, KW_CREAT_TF, KW_CREATE, KW_CRT_COL, KW_CRT_MIMG, KW_CTOS, KW_CTX, KW_CTX_H, KW_CTX_H_F, KW_CTX_H_ID, KW_CTX_PATH, KW_CTX_POP, KW_CUR_CHAR, KW_CUR_CHG, KW_CUR_COL, KW_CUR_DATE, KW_CUR_DOWN, KW_CUR_ENV, KW_CUR_ITER, KW_CUR_LANG, KW_CUR_LEFT, KW_CUR_LINE, KW_CUR_OFF, KW_CUR_QRY, KW_CUR_R_M, KW_CUR_RES, KW_CUR_RGHT, KW_CUR_RQI, KW_CUR_RSI, KW_CUR_UP, KW_CUR_VAL, KW_CUR_WIN, KW_CURR_TAB, KW_CURRENCY, KW_CURRENT, KW_CURSOR, KW_CUT, KW_CVT_2OFF, KW_CVT_3D_C, KW_CVT_DT, KW_CYCLE, KW_DATA_BND, KW_DATA_E_R, KW_DATA_REL, KW_DATA_SCM, KW_DATA_SM, KW_DATA_SRC, KW_DATA_SRI, KW_DATABASE, KW_DATASET, KW_DATASRV, KW_DATATYPE, KW_DATE, KW_DATE_FMT, KW_DATE_SEP, KW_DATE_TZ, KW_DATETIME, KW_DAY, KW_DB_CTXT, KW_DB_LIST, KW_DB_REF, KW_DB_REM_H, KW_DBCOLL, KW_DBCP, KW_DBG_ALRT, KW_DBG_LST, KW_DBNAME, KW_DBPARAM, KW_DBREST, KW_DBTASKID, KW_DBTYPE, KW_DBVERS, KW_DCLK_EXP, KW_DCOLOR, KW_DD_OTREE, KW_DDE, KW_DDE_ERR, KW_DDE_ID, KW_DDE_ITEM, KW_DDE_NAME, KW_DDE_NOTI, KW_DDE_TOPI, KW_DEBLANK, KW_DEBUG, KW_DEBUGGER, KW_DEC, KW_DEC_SEP, KW_DECIMALS, KW_DECL_NSP, KW_DECLARE, KW_DECRYPT, KW_DEF_ACTN, KW_DEF_BUFH, KW_DEF_COMM, KW_DEF_EXTN, KW_DEF_NOXL, KW_DEF_POP, KW_DEF_STR, KW_DEF_UEVM, KW_DEF_VAL, KW_DEF_WIN, KW_DEFAULT, KW_DEFINE, KW_DEFLT_BN, KW_DEL_C_R, KW_DEL_CHAR, KW_DEL_COL, KW_DEL_COOK, KW_DEL_E_L, KW_DEL_FLD, KW_DEL_H_EN, KW_DEL_LINE, KW_DEL_NODE, KW_DEL_PROC, KW_DEL_R_L, KW_DEL_S_C, KW_DEL_S_R, KW_DEL_S_RS, KW_DEL_WORD, KW_DELEGATE, KW_DELETE, KW_DELIMIT, KW_DESCEND, KW_DESCR, KW_DESEL_FR, KW_DESEL_R, KW_DESEL_SR, KW_DESELCTN, KW_DESTRUCT, KW_DET_DSRC, KW_DIALOG, KW_DICT, KW_DIR, KW_DIRECTRY, KW_DIS_A_ZA, KW_DIS_CEDT, KW_DIS_D_TR, KW_DIS_L_TR, KW_DIS_REDR, KW_DIS_STRP, KW_DISABL_C, KW_DISABLE, KW_DISABLED, KW_DISCONN, KW_DISP, KW_DISP_MSG, KW_DISP_TYP, KW_DISP_TZ, KW_DISPATCH, KW_DISTINCT, KW_DLL_C_T, KW_DMP_NAME, KW_DO, KW_DOMAIN_D, KW_DOMAIN_N, KW_DOMAIN_T, KW_DOS, KW_DOUBLE, KW_DOWN, KW_DRAG_EN, KW_DRAG_NOD, KW_DRAG_OVR, KW_DRAGDROP, KW_DROP, KW_DROP_DWN, KW_DROP_FN, KW_DROP_LST, KW_DROP_TAR, KW_DSET_HND, KW_DSL_MGR, KW_DUMP, KW_DUMP_LGN, KW_DYN_CAST, KW_DYN_CURV, KW_DYN_ENUM, KW_DYN_FUNC, KW_DYN_INVK, KW_DYN_NEW, KW_DYN_NEXV, KW_DYN_PROP, KW_DYNAMIC, KW_E_PROC_C, KW_EACH, KW_ECHO, KW_EDGE_C, KW_EDGE_P, KW_EDIT_B_T, KW_EDIT_C_P, KW_EDIT_C_U, KW_EDIT_CLR, KW_EDIT_CPY, KW_EDIT_CUT, KW_EDIT_PAS, KW_EDIT_TAB, KW_EDIT_UND, KW_EDITING, KW_EDITOR, KW_EH_FL, KW_EH_SR, KW_ELSE, KW_EMB_FILE, KW_EMB_URL, KW_EMPTY, KW_EMPTY_DS, KW_EMPTY_SN, KW_EMPTY_TT, KW_ENABLE, KW_ENABLE_C, KW_ENABLE_E, KW_ENABLED, KW_ENC_AMK, KW_ENC_SALT, KW_ENCODE, KW_ENCODING, KW_ENCRYPT, KW_END, KW_END_B_SN, KW_END_DOC, KW_END_ELEM, KW_END_ERR, KW_END_EV_G, KW_END_F_D, KW_END_MOV, KW_END_RESZ, KW_END_RRES, KW_END_SEAR, KW_END_USER, KW_ENDKEY, KW_ENS_N_V, KW_ENT_EX_L, KW_ENT_TLST, KW_ENTER_MB, KW_ENTERED, KW_ENTRY, KW_ENUM, KW_EQ, KW_ERR_CODE, KW_ERR_COL, KW_ERR_OBJD, KW_ERR_ROW, KW_ERR_S_T, KW_ERR_STAT, KW_ERR_STR, KW_ERROR, KW_ESCAPE, KW_ETIME, KW_EVENTS, KW_EVT_ACTI, KW_EVT_GRID, KW_EVT_PROC, KW_EVT_TYPE, KW_EXC_LOCK, KW_EXCEPT, KW_EXCL_ID, KW_EXCL_WEB, KW_EXEC_LOG, KW_EXECUTE, KW_EXISTS, KW_EXIT, KW_EXITCODE, KW_EXP, KW_EXP_N_IC, KW_EXP_NODE, KW_EXP_ON_E, KW_EXP_SCLK, KW_EXPA_ALL, KW_EXPAND, KW_EXPANDBL, KW_EXPLICIT, KW_EXPORT, KW_EXPORT_P, KW_EXTENDED, KW_EXTENT, KW_EXTERN, KW_F_KEY_H, KW_FETCH, KW_FETCH_SR, KW_FGCOLOR, KW_FGCOLRGB, KW_FIELD, KW_FIL_C_D, KW_FIL_C_T, KW_FIL_INFO, KW_FIL_M_D, KW_FIL_M_T, KW_FIL_NAME, KW_FIL_OFF, KW_FIL_SIZE, KW_FIL_TYPE, KW_FILE, KW_FILL, KW_FILL_IN, KW_FILL_MOD, KW_FILL_WST, KW_FILLED, KW_FILTERS, KW_FINAL, KW_FINALLY, KW_FIND, KW_FIND_1ST, KW_FIND_BR, KW_FIND_CS, KW_FIND_CUR, KW_FIND_FD, KW_FIND_GLO, KW_FIND_LST, KW_FIND_NO, KW_FIND_NOD, KW_FIND_NXT, KW_FIND_PO, KW_FIND_PRV, KW_FIND_SEL, KW_FIND_UNI, KW_FIND_WA, KW_FINDER, KW_FIR_DSET, KW_FIRST, KW_FIRST_AR, KW_FIRST_BU, KW_FIRST_CH, KW_FIRST_CO, KW_FIRST_DS, KW_FIRST_FM, KW_FIRST_N, KW_FIRST_OB, KW_FIRST_OF, KW_FIRST_PR, KW_FIRST_QR, KW_FIRST_SO, KW_FIRST_SR, KW_FIRST_SS, KW_FIRST_TI, KW_FIT_LCOL, KW_FIX_C_L, KW_FIX_CP, KW_FIXCHAR, KW_FIXD_ONL, KW_FLAGS, KW_FLAT_BUT, KW_FLD_TRG, KW_FLOAT, KW_FLTR_MAP, KW_FMT_DT, KW_FMT_SA, KW_FNT_BOLD, KW_FNT_ITAL, KW_FNT_NAME, KW_FNT_SIZE, KW_FNT_UNDL, KW_FOC_ASEL, KW_FOC_NKEY, KW_FOC_NODE, KW_FOCUS, KW_FOCUS_R, KW_FOCUS_RS, KW_FONT, KW_FONT_TAB, KW_FOR, KW_FORCE_F, KW_FORE, KW_FORM, KW_FORM_INP, KW_FORM_LIN, KW_FORMAT, KW_FORMATTE, KW_FORWARD, KW_FR_COL, KW_FR_DB, KW_FR_DOWN, KW_FR_FIELD, KW_FR_FILE, KW_FR_INDEX, KW_FR_LINE, KW_FR_NAME, KW_FR_ROW, KW_FR_SPACE, KW_FR_VAL, KW_FR_X, KW_FR_Y, KW_FRAGMENT, KW_FRAME, KW_FREQ, KW_FROM, KW_FROM_CHR, KW_FROM_CUR, KW_FROM_PIX, KW_FROZEN, KW_FS_NKEY, KW_FS_NODE, KW_FULL_H_C, KW_FULL_H_P, KW_FULL_W_C, KW_FULL_W_P, KW_FULLPATH, KW_FUNC_C_T, KW_FUNCT, KW_FV_NODE, KW_FWD_ONLY, KW_G_C_BGCO, KW_G_C_FGCO, KW_G_COL_P, KW_G_COL_W, KW_GEN_MD5, KW_GEN_PBEK, KW_GEN_PBES, KW_GEN_RNDK, KW_GEN_UUID, KW_GET, KW_GET_1ST, KW_GET_A_CT, KW_GET_A_N, KW_GET_ATTL, KW_GET_ATTR, KW_GET_B_A, KW_GET_B_OR, KW_GET_BCCL, KW_GET_BDAT, KW_GET_BITS, KW_GET_BLUE, KW_GET_BR_C, KW_GET_BUFH, KW_GET_BYTE, KW_GET_BYTS, KW_GET_C_S, KW_GET_CBPC, KW_GET_CBPN, KW_GET_CC_L, KW_GET_CFG, KW_GET_CFGV, KW_GET_CGI, KW_GET_CGIL, KW_GET_CGIV, KW_GET_CGL, KW_GET_CGLV, KW_GET_CHG, KW_GET_CHLD, KW_GET_CLL, KW_GET_CLNT, KW_GET_CODP, KW_GET_COLL, KW_GET_COOK, KW_GET_CREL, KW_GET_CUR, KW_GET_D_E, KW_GET_D_F, KW_GET_DBCL, KW_GET_DBL, KW_GET_DIR, KW_GET_DS_B, KW_GET_DYN, KW_GET_EMBL, KW_GET_ERRC, KW_GET_ERRR, KW_GET_FCN, KW_GET_FILE, KW_GET_FLD, KW_GET_FLT, KW_GET_FNAM, KW_GET_FOFF, KW_GET_GRN, KW_GET_HD_E, KW_GET_I64, KW_GET_IBNN, KW_GET_IBQN, KW_GET_ITER, KW_GET_K_V, KW_GET_L_V, KW_GET_LAST, KW_GET_LIC, KW_GET_LNBI, KW_GET_LONG, KW_GET_MOP, KW_GET_MSG, KW_GET_MSGG, KW_GET_MSGS, KW_GET_N_AT, KW_GET_N_BG, KW_GET_N_FG, KW_GET_N_HC, KW_GET_N_N, KW_GET_NEXT, KW_GET_NLEV, KW_GET_NODE, KW_GET_NSN, KW_GET_NTXT, KW_GET_NUM, KW_GET_NVV, KW_GET_PAR, KW_GET_PARN, KW_GET_PREV, KW_GET_PROP, KW_GET_PRT, KW_GET_PSN, KW_GET_PTR, KW_GET_QNBI, KW_GET_R_R, KW_GET_RED, KW_GET_REL, KW_GET_RGB, KW_GET_S_O, KW_GET_SELW, KW_GET_SER, KW_GET_SHRT, KW_GET_SIG, KW_GET_SIMG, KW_GET_SNC, KW_GET_SRCB, KW_GET_STR, KW_GET_SZ, KW_GET_T_S, KW_GET_TBI, KW_GET_TBNN, KW_GET_TBQN, KW_GET_THCH, KW_GET_THPX, KW_GET_TI, KW_GET_TNOD, KW_GET_TO_L, KW_GET_TOPB, KW_GET_TWCH, KW_GET_TWPX, KW_GET_U_F, KW_GET_UBI, KW_GET_UL, KW_GET_USHT, KW_GET_VAL, KW_GET_VBI, KW_GET_VBNN, KW_GET_VBQN, KW_GET_WAIT, KW_GET_WKDR, KW_GETATTRI, KW_GETCLASS, KW_GLOBAL, KW_GO, KW_GO_ON, KW_GO_PEND, KW_GOTO, KW_GRANT, KW_GRAPHIC, KW_GRD_F_H, KW_GRD_F_V, KW_GRD_SNAP, KW_GRD_UHC, KW_GRD_UHP, KW_GRD_UWC, KW_GRD_UWP, KW_GRD_VIS, KW_GROUP, KW_GROUP_BX, KW_GT, KW_GTE, KW_GUID, KW_GW, KW_H_SCRL_P, KW_HANDLE, KW_HANDLER, KW_HAS_LOBS, KW_HAS_REC, KW_HAVING, KW_HEADER, KW_HEIGHT_C, KW_HEIGHT_P, KW_HELP, KW_HELP_SA, KW_HELP_TOP, KW_HEX_DECD, KW_HEX_ENCD, KW_HID_FLD, KW_HID_FLDL, KW_HIDDEN, KW_HIDE, KW_HINT, KW_HIT_TEST, KW_HIT_TFWD, KW_HOME, KW_HONOR_PK, KW_HONOR_RK, KW_HORIZ, KW_HOST_B_O, KW_HTML_BWS, KW_HTML_CHS, KW_HTML_ENC, KW_HTML_EOL, KW_HTML_EOP, KW_HTML_FRB, KW_HTML_FRE, KW_HTML_H_B, KW_HTML_H_E, KW_HTML_T_B, KW_HTML_T_E, KW_HTMLERR, KW_HWND, KW_HYPERLNK, KW_ICFPARM, KW_ICON, KW_IDEPHWND, KW_IDEWNTYP, KW_IDX_FLD, KW_IDX_HINT, KW_IDX_INFO, KW_IDX_REPO, KW_IF, KW_IGN_CMOD, KW_IL_BGCOL, KW_IL_HEIGH, KW_IL_IMG, KW_IL_LIST, KW_IL_MASK, KW_IL_OVER, KW_IL_UMASK, KW_IL_WIDTH, KW_IMAGE, KW_IMG_DOWN, KW_IMG_INS, KW_IMG_LIST, KW_IMG_ONLY, KW_IMG_SZ, KW_IMG_SZ_C, KW_IMG_SZ_P, KW_IMG_UP, KW_IMM_DISP, KW_IMP_NODE, KW_IMP_PRNC, KW_IMPLEMTS, KW_IMPORT, KW_IN, KW_IN_HNDL, KW_IN_OUT, KW_INACTIVE, KW_INC_EX_I, KW_INCR, KW_INDENT, KW_INDEX, KW_INDICAT, KW_INFO, KW_INH_BGC, KW_INH_FGC, KW_INHERITS, KW_INIT, KW_INIT_C_P, KW_INIT_D_T, KW_INIT_DIR, KW_INIT_FLT, KW_INIT_SA, KW_INIT_SES, KW_INITIATE, KW_INNER, KW_INNER_C, KW_INNER_L, KW_INPT_VAL, KW_INPUT, KW_INS_ATTR, KW_INS_B4, KW_INS_BTAB, KW_INS_COL, KW_INS_FILE, KW_INS_FLD, KW_INS_FLDD, KW_INS_FLDL, KW_INS_MODE, KW_INS_ROW, KW_INS_STR, KW_INS_TAB, KW_INSERT, KW_INST_PRC, KW_INT, KW_INT_ENT, KW_INT64, KW_INTERFAC, KW_INTERVAL, KW_INTO, KW_INVOKE, KW_IS, KW_IS_ATTR, KW_IS_C_VIS, KW_IS_CLASS, KW_IS_COLCP, KW_IS_CP_FX, KW_IS_DB_MT, KW_IS_JSON, KW_IS_LEAD, KW_IS_M_TEN, KW_IS_MSEL, KW_IS_N_EXP, KW_IS_OPEN, KW_IS_P_SET, KW_IS_PART, KW_IS_R_SEL, KW_IS_SEL, KW_IS_XML, KW_ISO_DATE, KW_ITEM, KW_ITEM_ROW, KW_ITER_CHG, KW_IUNKNOWN, KW_JAVA, KW_JOIN, KW_JOIN_BY, KW_KBLABEL, KW_KEEP_CON, KW_KEEP_MSG, KW_KEEP_SEC, KW_KEEP_TAB, KW_KEEP_ZOR, KW_KEY, KW_KEYCODE, KW_KEYFUNC, KW_KEYLAB, KW_KEYS, KW_KPAD_CLE, KW_KPAD_HOT, KW_KPAD_QRY, KW_KW, KW_KW_ALL, KW_L_ENDIAN, KW_L_TRIM, KW_LAB_BGC, KW_LAB_DC, KW_LAB_FGC, KW_LAB_FONT, KW_LAB_H_C, KW_LAB_PFC, KW_LABEL, KW_LABEL_SA, KW_LABELS, KW_LANDSCAP, KW_LANGUAGE, KW_LARGE, KW_LAST, KW_LAST_AR, KW_LAST_BAT, KW_LAST_CH, KW_LAST_EVT, KW_LAST_FRM, KW_LAST_OBJ, KW_LAST_OF, KW_LAST_PRC, KW_LAST_SOC, KW_LAST_SRV, KW_LAST_SS, KW_LAST_TI, KW_LASTKEY, KW_LC, KW_LCD_REFR, KW_LCD_SWIN, KW_LCD_WSTR, KW_LCHR_2NV, KW_LDBNAME, KW_LEAVE, KW_LEFT, KW_LEFT_AL, KW_LEFT_END, KW_LEFT_MC, KW_LEFT_MD, KW_LEFT_MDC, KW_LEFT_MU, KW_LENGTH, KW_LG_2_SM, KW_LIB, KW_LIB_C_C, KW_LIKE, KW_LIKE_SEQ, KW_LINE, KW_LINE_CNT, KW_LIST_ITM, KW_LIST_PNM, KW_LISTING, KW_LISTINGS, KW_LIT_QSTN, KW_LOAD, KW_LOAD_DMN, KW_LOAD_I_D, KW_LOAD_I_I, KW_LOAD_I_U, KW_LOAD_ICO, KW_LOAD_IMG, KW_LOAD_M_P, KW_LOAD_PIC, KW_LOAD_S_I, KW_LOADCTRL, KW_LOB_AREA, KW_LOB_BYTE, KW_LOB_DIR, KW_LOB_SIZE, KW_LOC_C_N, KW_LOC_HOST, KW_LOC_L_N, KW_LOC_NAME, KW_LOC_P_ID, KW_LOC_PORT, KW_LOC_S_ID, KW_LOC_TYPE, KW_LOC_V_I, KW_LOCK_REG, KW_LOCKED, KW_LOG, KW_LOG_A_EV, KW_LOG_E_TS, KW_LOG_EN_T, KW_LOG_HOST, KW_LOG_ID, KW_LOG_MGR, KW_LOG_STAT, KW_LOG_THRS, KW_LOGF_NAM, KW_LOGG_LEV, KW_LOGICAL, KW_LOGOUT, KW_LONG, KW_LONGCHAR, KW_LOOKAHD, KW_LOOKUP, KW_LST_EVNT, KW_LST_PAIR, KW_LST_QRY, KW_LST_SET, KW_LST_WID, KW_LT, KW_LTE, KW_M_D_I_P, KW_M_U_I_P, KW_MACH_CLS, KW_MAINMENU, KW_MAN_HIGH, KW_MAND, KW_MAP, KW_MARG_EX, KW_MARG_H_C, KW_MARG_H_P, KW_MARG_W_C, KW_MARG_W_P, KW_MARK_NEW, KW_MARK_RS, KW_MATCHES, KW_MAX, KW_MAX_BTN, KW_MAX_CHAR, KW_MAX_D_G, KW_MAX_H_C, KW_MAX_H_P, KW_MAX_HT, KW_MAX_LVL, KW_MAX_ROWS, KW_MAX_SZ, KW_MAX_VAL, KW_MAX_W_C, KW_MAX_W_P, KW_MAX_WID, KW_MAXIMIZE, KW_MD5_DIG, KW_MD5_VAL, KW_MDL_MC, KW_MDL_MD, KW_MDL_MDC, KW_MDL_MU, KW_MEMBER, KW_MEMPTR, KW_MENU, KW_MENU_BAR, KW_MENU_DRP, KW_MENU_ITM, KW_MENU_KEY, KW_MENU_MOU, KW_MERGE_BF, KW_MERGE_CH, KW_MERGE_RC, KW_MESSAGES, KW_METHOD, KW_MF_DFR, KW_MF_DI, KW_MF_DIP, KW_MF_DL, KW_MF_DR, KW_MF_DT, KW_MF_DTAX, KW_MF_DTAXL, KW_MF_DTAXR, KW_MF_DTB, KW_MF_DTBL, KW_MF_DTBR, KW_MF_DTSX, KW_MF_GF, KW_MF_GFH, KW_MF_GFSD, KW_MF_GFSR, KW_MF_GPH, KW_MF_GPN, KW_MF_GPW, KW_MF_GTW, KW_MF_GXY, KW_MF_GZF, KW_MF_INIT, KW_MF_IR, KW_MF_MPDF, KW_MF_P2MU, KW_MF_RP, KW_MF_SF, KW_MF_SFC, KW_MF_SFH, KW_MF_SI, KW_MF_SIA, KW_MF_SLA, KW_MF_SLC, KW_MF_SLM, KW_MF_SLS, KW_MF_SNP, KW_MF_SNTL, KW_MF_SPF, KW_MF_SPN, KW_MF_SPNP, KW_MF_SPNT, KW_MF_SPO, KW_MF_SR, KW_MF_STA, KW_MF_STC, KW_MF_STS, KW_MF_SXY, KW_MF_SZF, KW_MIN, KW_MIN_BTN, KW_MIN_CWCH, KW_MIN_CWPX, KW_MIN_H_C, KW_MIN_H_P, KW_MIN_SCHM, KW_MIN_SZ, KW_MIN_VAL, KW_MIN_W_C, KW_MIN_W_P, KW_MNEMON, KW_MOD, KW_MODIFIED, KW_MODIFIRS, KW_MONTH, KW_MOU_MC, KW_MOU_MD, KW_MOU_MDC, KW_MOU_MU, KW_MOU_MVC, KW_MOU_MVD, KW_MOU_MVDC, KW_MOU_MVU, KW_MOU_PTR, KW_MOU_SC, KW_MOU_SD, KW_MOU_SDC, KW_MOU_SU, KW_MOU_XC, KW_MOU_XD, KW_MOU_XDC, KW_MOU_XU, KW_MOUSE, KW_MOV_2_B, KW_MOV_2_T, KW_MOV_2EOF, KW_MOV_A_T, KW_MOV_B_T, KW_MOV_COL, KW_MOVABLE, KW_MOVE, KW_MPE, KW_MPTR_2NV, KW_MS_CLICK, KW_MS_DBCLK, KW_MS_DOWN, KW_MS_MOVE, KW_MS_UP, KW_MSG, KW_MSG_AFNT, KW_MSG_AMSG, KW_MSG_AREA, KW_MSG_DIG, KW_MSG_LINE, KW_MSICON, KW_MSPNTNUM, KW_MTIME, KW_MULT_CMP, KW_MULT_KEY, KW_MULTI_IN, KW_MULTIPLE, KW_MUST_EXI, KW_MUST_UND, KW_N_AEDIT, KW_N_BEDIT, KW_N_CLICK, KW_N_COLED, KW_N_COLING, KW_N_EXPED, KW_N_EXPING, KW_N_HEIGHT, KW_N_KEY_ID, KW_NAME, KW_NAMESP_P, KW_NAMESP_U, KW_NATIVE, KW_NE, KW_NEEDS_AP, KW_NEEDS_PR, KW_NESTED, KW_NEW, KW_NEW_INST, KW_NEW_LBL, KW_NEW_LINE, KW_NEW_ROW, KW_NEXT, KW_NEXT_COL, KW_NEXT_ERR, KW_NEXT_FR, KW_NEXT_PMT, KW_NEXT_RID, KW_NEXT_SIB, KW_NEXT_TAB, KW_NEXT_VAL, KW_NEXTWORD, KW_NNMSP_SL, KW_NO_APPLY, KW_NO_ARMSG, KW_NO_ASSGN, KW_NO_ATTR, KW_NO_ATTRL, KW_NO_AUTOV, KW_NO_BIND, KW_NO_BOX, KW_NO_COLS, KW_NO_CONS, KW_NO_CUR_V, KW_NO_CV_3D, KW_NO_CVT, KW_NO_DEBUG, KW_NO_DRAG, KW_NO_ECHO, KW_NO_EH_FL, KW_NO_EH_SR, KW_NO_EM_SP, KW_NO_EMBED, KW_NO_ERROR, KW_NO_FILL, KW_NO_FOCUS, KW_NO_HELP, KW_NO_HIDE, KW_NO_IDX_H, KW_NO_INHBG, KW_NO_INHFG, KW_NO_JOIN, KW_NO_LABEL, KW_NO_LOBS, KW_NO_LOCK, KW_NO_LOOKA, KW_NO_MAP, KW_NO_MSG, KW_NO_OVRRD, KW_NO_PAUSE, KW_NO_PRE, KW_NO_RET_V, KW_NO_ROW_M, KW_NO_SCH_M, KW_NO_SCR_V, KW_NO_SEP_C, KW_NO_SEPS, KW_NO_TAB_S, KW_NO_UNDL, KW_NO_UNDO, KW_NO_VALID, KW_NO_WAIT, KW_NO_WRAP, KW_NODE_BLD, KW_NODE_CHE, KW_NODE_CNT, KW_NODE_EXP, KW_NODE_ICO, KW_NODE_ID, KW_NODE_IDX, KW_NODE_KEY, KW_NODE_PAR, KW_NODE_TXT, KW_NODE_V2M, KW_NODE_VAL, KW_NODES, KW_NODV_2LC, KW_NON_SER, KW_NONE, KW_NORMAL, KW_NORMALZE, KW_NOT, KW_NOT_ACTV, KW_NOT_CS, KW_NOW, KW_NULL, KW_NULLALWD, KW_NUM_2RTN, KW_NUM_ALIA, KW_NUM_BUFF, KW_NUM_BUTT, KW_NUM_CH_R, KW_NUM_CHLN, KW_NUM_COL, KW_NUM_COPY, KW_NUM_D_P, KW_NUM_DBS, KW_NUM_DROP, KW_NUM_ENT, KW_NUM_FLD, KW_NUM_FMT, KW_NUM_FMTS, KW_NUM_HD_E, KW_NUM_ITER, KW_NUM_ITMS, KW_NUM_LK_C, KW_NUM_LNS, KW_NUM_LOGF, KW_NUM_MSG, KW_NUM_PARM, KW_NUM_PNTS, KW_NUM_REF, KW_NUM_REL, KW_NUM_REPL, KW_NUM_RES, KW_NUM_SEP, KW_NUM_SR, KW_NUM_SRCB, KW_NUM_SW, KW_NUM_TABS, KW_NUM_TOPB, KW_NUM_V_C, KW_NUMERIC, KW_OBJECT, KW_OCT_LEN, KW_OCX_MBTN, KW_OCX_MSHT, KW_OCX_MSX, KW_OCX_MSY, KW_OF, KW_OFF, KW_OFF_END, KW_OFF_HOME, KW_OK, KW_OK_CAN, KW_OLD, KW_OLE_AEFF, KW_OLE_CDRG, KW_OLE_DATF, KW_OLE_DD, KW_OLE_DEFC, KW_OLE_DGMD, KW_OLE_DGOV, KW_OLE_DRAG, KW_OLE_DRMD, KW_OLE_EFFE, KW_OLE_GIVF, KW_OLE_INVL, KW_OLE_NAML, KW_OLE_SETD, KW_OLE_STAT, KW_OLE_STDG, KW_OLE_X, KW_OLE_Y, KW_ON, KW_ON_FR_B, KW_ONLY, KW_OPEN, KW_OPEN_L_A, KW_OPEN_URL, KW_OPENMIME, KW_OPENPAGE, KW_OPENPOPU, KW_OPSYS, KW_OPTION, KW_OPTIONS, KW_OPTIONSF, KW_OR, KW_ORD_JOIN, KW_ORDER, KW_ORDINAL, KW_ORG_HAND, KW_ORG_ROID, KW_OS_APPND, KW_OS_CMD, KW_OS_COPY, KW_OS_DEL, KW_OS_DIR, KW_OS_DRV, KW_OS_ERR, KW_OS_G_ENV, KW_OS_MKDIR, KW_OS_REN, KW_OS_UID, KW_OS2, KW_OTHER, KW_OUT_HDR, KW_OUT_HH, KW_OUT_JOIN, KW_OUT_MSGS, KW_OUTER, KW_OUTPUT, KW_OUTPUTCT, KW_OVERLAY, KW_OVERRIDE, KW_OWN_DOC, KW_OWNER, KW_P2J_RC, KW_PAGE, KW_PAGE_B, KW_PAGE_DWN, KW_PAGE_LFT, KW_PAGE_NUM, KW_PAGE_RT, KW_PAGE_SZ, KW_PAGE_T, KW_PAGE_UP, KW_PAGE_WID, KW_PAGED, KW_PAR_BUFF, KW_PAR_FLDA, KW_PAR_FLDB, KW_PAR_IFLD, KW_PAR_IREL, KW_PAR_REL, KW_PAR_W_C, KW_PARENT, KW_PARM, KW_PARSE_ST, KW_PART_KEY, KW_PASCAL, KW_PASSWD_F, KW_PASTE, KW_PATHNAME, KW_PAUSE, KW_PB_APPEA, KW_PB_BRSTY, KW_PB_ENABL, KW_PB_MAX, KW_PB_MIN, KW_PB_ORIEN, KW_PB_SCROL, KW_PB_VALUE, KW_PBE_H_AL, KW_PBE_KEYR, KW_PDBNAME, KW_PERF, KW_PERSIST, KW_PFCOLOR, KW_PICK, KW_PICK_ARE, KW_PICK_BTH, KW_PIX_COL, KW_PIX_ROW, KW_PIXELS, KW_PK_PRIV, KW_PK_PROT, KW_POLY, KW_POP_MENU, KW_POP_ONLY, KW_PORTRAIT, KW_POS, KW_PRE_LBL, KW_PRECISN, KW_PREF_DS, KW_PREP_STR, KW_PREPARED, KW_PREPROC, KW_PRESEL, KW_PREV, KW_PREV_COL, KW_PREV_FR, KW_PREV_SIB, KW_PREV_T_I, KW_PREVWORD, KW_PRIM_P_P, KW_PRIMARY, KW_PRINT, KW_PRINTER, KW_PRIV_DAT, KW_PRIVATE, KW_PRIVILEG, KW_PRMT_FOR, KW_PRO_ARCH, KW_PROC, KW_PROC_C_T, KW_PROC_COM, KW_PROC_HND, KW_PROC_ST, KW_PROC_T_B, KW_PROC_TXT, KW_PROC_W_R, KW_PROCESS, KW_PROCNAME, KW_PROCTYPE, KW_PRODATAS, KW_PROFILER, KW_PROFILNG, KW_PROG_BAR, KW_PROG_SRC, KW_PROGNAME, KW_PROGRESS, KW_PROMPT, KW_PROMSGS, KW_PROPATH, KW_PROPERTY, KW_PROTECTD, KW_PROVER, KW_PROX_PWD, KW_PROX_UID, KW_PROXY, KW_PRS_C_D, KW_PRS_PROC, KW_PRT_C_H, KW_PRT_HDC, KW_PRT_NAME, KW_PRT_PORT, KW_PRT_SET, KW_PSC, KW_PUB_EVTS, KW_PUB_ID, KW_PUBLIC, KW_PUBLISH, KW_PUT, KW_PUT_BITS, KW_PUT_BYTE, KW_PUT_BYTS, KW_PUT_DBL, KW_PUT_FLT, KW_PUT_I64, KW_PUT_K_V, KW_PUT_LONG, KW_PUT_SHT, KW_PUT_STR, KW_PUT_UL, KW_PUT_USHT, KW_QRY_CLOS, KW_QRY_OFF, KW_QRY_OPEN, KW_QRY_PREP, KW_QRY_TUNE, KW_QUAL_UID, KW_QUE_MSG, KW_QUERY, KW_QUEST, KW_QUIT, KW_QUOTER, KW_R_INDEX, KW_R_TRIM, KW_RADIO_B, KW_RADIO_S, KW_RANDOM, KW_RAW, KW_RAW_TRAN, KW_RCOD_INF, KW_READ, KW_READ_AVL, KW_READ_E_N, KW_READ_FIL, KW_READ_JSN, KW_READ_ONL, KW_READ_RES, KW_READ_XML, KW_READ_XSC, KW_READKEY, KW_REAL, KW_REC_LEN, KW_RECALL, KW_RECID, KW_RECT, KW_RECURSE, KW_REF_ONLY, KW_REFR_A_P, KW_REFRABLE, KW_REFRESH, KW_REG_DMN, KW_REJ_CHGS, KW_REJ_RCHG, KW_REJECTED, KW_REL_FLDS, KW_RELEASE, KW_RELS_ACT, KW_REM_ATTR, KW_REM_CHLD, KW_REM_EVTP, KW_REM_HOST, KW_REM_NOCO, KW_REM_NODE, KW_REM_PORT, KW_REM_SUP, KW_REMOTE, KW_REP_CHLD, KW_REP_STXT, KW_REPEAT, KW_REPL_CRE, KW_REPL_DEL, KW_REPL_WRI, KW_REPLACE, KW_REPORT, KW_REPORTS, KW_REPOS, KW_REPOS_2I, KW_REPOS_2R, KW_REPOS_B, KW_REPOS_F, KW_REPOS_M, KW_REQ_INFO, KW_REQUEST, KW_RES_BASE, KW_RESET, KW_RESIZABL, KW_RESIZE, KW_RESORT, KW_REST_RID, KW_REST_ROW, KW_RESULT, KW_RESUME_D, KW_RET_2SD, KW_RET_INS, KW_RET_SHAP, KW_RET_VAL, KW_RET_VDT, KW_RET_VLT, KW_RETAIN, KW_RETRY, KW_RETRY_C, KW_RETURN, KW_RETURNS, KW_REV_FROM, KW_REVERT, KW_REVOKE, KW_RFRSH_UI, KW_RGB_VAL, KW_RIGHT, KW_RIGHT_AL, KW_ROLE, KW_ROLES, KW_ROUND, KW_ROUNDED, KW_ROUTINEL, KW_ROW, KW_ROW_CRT, KW_ROW_CRTD, KW_ROW_DEL, KW_ROW_DELD, KW_ROW_DISP, KW_ROW_ENTR, KW_ROW_H_C, KW_ROW_H_P, KW_ROW_LEAV, KW_ROW_MARK, KW_ROW_MODD, KW_ROW_OF, KW_ROW_RESZ, KW_ROW_STAT, KW_ROW_UMOD, KW_ROW_UPD, KW_ROWID, KW_RPT_ADDC, KW_RPT_CAP, KW_RPT_CSV, KW_RPT_DOCX, KW_RPT_DSGN, KW_RPT_GSRC, KW_RPT_GSRR, KW_RPT_HTML, KW_RPT_ICSV, KW_RPT_PDF, KW_RPT_RTF, KW_RPT_SRC, KW_RPT_XLS, KW_RPT_XLSX, KW_RSP_INFO, KW_RT_END, KW_RT_MC, KW_RT_MD, KW_RT_MDC, KW_RT_MU, KW_RTOPSYS, KW_RULE, KW_RULE_ROW, KW_RULE_Y, KW_RUN, KW_RUN_PROC, KW_RUN_W_O, KW_S_C_BGCO, KW_S_C_FGCO, KW_S_COL_C, KW_S_COL_W, KW_SAVE, KW_SAVE_AS, KW_SAVE_FIL, KW_SAVE_RCH, KW_SAVE_WST, KW_SAX_ATTR, KW_SAX_COMP, KW_SAX_PARE, KW_SAX_PARF, KW_SAX_PARN, KW_SAX_PARS, KW_SAX_READ, KW_SAX_RUNN, KW_SAX_UNIN, KW_SAX_WBEG, KW_SAX_WCOM, KW_SAX_WCON, KW_SAX_WELM, KW_SAX_WERR, KW_SAX_WIDL, KW_SAX_WRIT, KW_SAX_WTAG, KW_SCH_CHG, KW_SCH_LOC, KW_SCH_MARS, KW_SCH_PATH, KW_SCHEMA, KW_SCR_2CR, KW_SCR_2ITM, KW_SCR_2SR, KW_SCR_DELT, KW_SCR_LEFT, KW_SCR_MODE, KW_SCR_NODC, KW_SCR_NOT, KW_SCR_NTOP, KW_SCR_OFFS, KW_SCR_RPOS, KW_SCR_RT, KW_SCR_VERT, KW_SCR_WLNS, KW_SCREEN, KW_SCRN_IO, KW_SCRN_LNS, KW_SCRN_VAL, KW_SCROLL, KW_SCROLL_H, KW_SCROLL_V, KW_SCROLLBA, KW_SCROLLBL, KW_SCROLLIN, KW_SDBNAME, KW_SEAL, KW_SEAL_TST, KW_SEAR_SLF, KW_SEAR_TRG, KW_SEARCH, KW_SECTION, KW_SECUR_P, KW_SEEK, KW_SEL_ALL, KW_SEL_END, KW_SEL_FOCR, KW_SEL_LST, KW_SEL_NEXT, KW_SEL_NID, KW_SEL_NKEY, KW_SEL_NODE, KW_SEL_PREV, KW_SEL_ROW, KW_SEL_SFVN, KW_SEL_STRT, KW_SEL_TXT, KW_SELECT, KW_SELECTBL, KW_SELECTED, KW_SELECTN, KW_SELF, KW_SEND, KW_SEND_SQL, KW_SENSITIV, KW_SEP_CONN, KW_SEP_FGC, KW_SEPS, KW_SEQUENCE, KW_SERIALAB, KW_SERIALZH, KW_SERIALZN, KW_SERIALZR, KW_SERVER, KW_SESS_END, KW_SESSION, KW_SESSN_ID, KW_SET, KW_SET_A_CT, KW_SET_A_L, KW_SET_A_N, KW_SET_ACTR, KW_SET_ACTX, KW_SET_ATTR, KW_SET_B_OR, KW_SET_BLUE, KW_SET_BRK, KW_SET_BUF, KW_SET_C_IC, KW_SET_C_P, KW_SET_C_S, KW_SET_C_VI, KW_SET_CB_P, KW_SET_CBAC, KW_SET_CLNT, KW_SET_COMM, KW_SET_CONT, KW_SET_COOK, KW_SET_CPTM, KW_SET_DBCL, KW_SET_DYN, KW_SET_EVMO, KW_SET_F_D, KW_SET_GRN, KW_SET_IMGF, KW_SET_IMGH, KW_SET_IMGW, KW_SET_ISRC, KW_SET_JMOD, KW_SET_JSTX, KW_SET_JSTY, KW_SET_LSTK, KW_SET_M_UN, KW_SET_MSEL, KW_SET_N_BG, KW_SET_N_F, KW_SET_N_FG, KW_SET_N_HC, KW_SET_NODE, KW_SET_NTXT, KW_SET_ODST, KW_SET_OPT, KW_SET_PARM, KW_SET_PENW, KW_SET_PROP, KW_SET_PTR, KW_SET_R_P, KW_SET_RED, KW_SET_RGB, KW_SET_ROLL, KW_SET_RPOS, KW_SET_RRP, KW_SET_S_AR, KW_SET_S_O, KW_SET_SEL, KW_SET_SERD, KW_SET_SNC, KW_SET_SWIN, KW_SET_SZ, KW_SET_T_S, KW_SET_TBME, KW_SET_TN_I, KW_SET_TSTA, KW_SET_U_F, KW_SET_W_S, KW_SET_WAIT, KW_SET_WKDR, KW_SETTINGS, KW_SETUSER, KW_SH_LOCK, KW_SHA1_DIG, KW_SHARED, KW_SHORT, KW_SHOW_BUT, KW_SHOW_HDR, KW_SHOW_ITB, KW_SHOW_ST, KW_SHR_D_F, KW_SIDE_L, KW_SIDE_L_H, KW_SIGNATUR, KW_SILENT, KW_SIMPLE, KW_SING_RUN, KW_SINGLE, KW_SINGLTON, KW_SIZE, KW_SIZE_C, KW_SIZE_P, KW_SKIP, KW_SKIP_D_R, KW_SLIDER, KW_SMAL_ICO, KW_SMAL_TTL, KW_SMALLINT, KW_SMTP_EML, KW_SMTP_PW, KW_SMTP_VAL, KW_SMTPFROM, KW_SMTPHOST, KW_SMTPHTML, KW_SMTPPORT, KW_SMTPREPL, KW_SMTPSUBJ, KW_SMTPTEXT, KW_SMTPUSER, KW_SOAP_F, KW_SOAP_F_A, KW_SOAP_F_C, KW_SOAP_F_D, KW_SOAP_F_N, KW_SOAP_F_R, KW_SOAP_F_S, KW_SOAP_FMH, KW_SOAP_FSC, KW_SOAP_HDR, KW_SOAP_HER, KW_SOAP_VER, KW_SOCKET, KW_SOME, KW_SOR_C_C, KW_SOR_COLS, KW_SORT, KW_SORT_ASC, KW_SORT_MAP, KW_SORT_NUM, KW_SOURCE, KW_SPACE, KW_SPRSHEET, KW_SQL, KW_SQL_WID, KW_SQRT, KW_SRC_PROC, KW_SRV_C_B, KW_SRV_C_BR, KW_SRV_C_C, KW_SRV_C_I, KW_SRV_OP_M, KW_SRV_SOCK, KW_SSL_SRVN, KW_ST_2_FIT, KW_STANDALN, KW_START, KW_START_BS, KW_START_DC, KW_START_EL, KW_START_MV, KW_START_RR, KW_START_RS, KW_START_SC, KW_STARTING, KW_STAT_A_F, KW_STAT_DET, KW_STATIC, KW_STATUS, KW_STATUS_A, KW_STDCALL, KW_STOP, KW_STOP_AFT, KW_STOP_D, KW_STOP_PRS, KW_STOPPED, KW_STORPROC, KW_STR_VAL, KW_STR_XREF, KW_STREAM, KW_STRIC_ER, KW_STRICT, KW_STRING, KW_STRM_HND, KW_STRM_IO, KW_STUP_PAR, KW_SUB_AVG, KW_SUB_CNT, KW_SUB_M_H, KW_SUB_MAX, KW_SUB_MENU, KW_SUB_MIN, KW_SUB_TOT, KW_SUBSCRIB, KW_SUBSTIT, KW_SUBSTR, KW_SUBTYPE, KW_SUM, KW_SUP_NS_P, KW_SUP_PROC, KW_SUP_WARN, KW_SUPER, KW_SUPW_LST, KW_SYM_EN_A, KW_SYM_EN_I, KW_SYM_EN_K, KW_SYM_SUPP, KW_SYNCHRON, KW_SYS_A_B, KW_SYS_DLG, KW_SYS_HELP, KW_SYS_ID, KW_TAB, KW_TAB_CRCL, KW_TAB_HAND, KW_TAB_IDX, KW_TAB_LIST, KW_TAB_ML, KW_TAB_MOD, KW_TAB_NUM, KW_TAB_POS, KW_TAB_SCAN, KW_TAB_SHOW, KW_TAB_STOP, KW_TAB_TRG, KW_TABLE, KW_TABS, KW_TABSET, KW_TAG, KW_TAR_PROC, KW_TARGET, KW_TEMP_DIR, KW_TEMP_TAB, KW_TEN_ID, KW_TENNAME, KW_TERM, KW_TERM_HK, KW_TERMINAT, KW_TEXT, KW_TEXTEDIT, KW_THEN, KW_THIS_OBJ, KW_THIS_PRC, KW_THO_SEP, KW_THR_SAFE, KW_THROUGH, KW_THROW, KW_TIC_MARK, KW_TIME, KW_TIME_SRC, KW_TIMER, KW_TIMESTMP, KW_TIMEZONE, KW_TITL_BGC, KW_TITL_DC, KW_TITL_FGC, KW_TITL_FON, KW_TITLE, KW_TN_TOID, KW_TNOD_VAL, KW_TO, KW_TO_ROWID, KW_TODAY, KW_TOGGL_BX, KW_TOOLTIP, KW_TOOLTIPS, KW_TOP, KW_TOP_COL, KW_TOP_NAVQ, KW_TOP_ONLY, KW_TOPIC, KW_TOTAL, KW_TRAC_CHG, KW_TRACING, KW_TRAILING, KW_TRAN_I_P, KW_TRAN_MOD, KW_TRANS, KW_TRANSPAR, KW_TRC_FILT, KW_TREE_R_H, KW_TREELIST, KW_TREEVIEW, KW_TRIG_COL, KW_TRIG_NOD, KW_TRIGGER, KW_TRIGGERS, KW_TRIM, KW_TRUNC, KW_TT_PREP, KW_TTCP, KW_TXT_CURS, KW_TXT_SEG, KW_TXT_SEL, KW_TYPE, KW_TYPE_OF, KW_U_CTRL, KW_U_MSG, KW_U_PCTRL, KW_U_SERIAL, KW_UNBOX, KW_UNBUF, KW_UNDERLIN, KW_UNDO, KW_UNDO_T_S, KW_UNFORMAT, KW_UNION, KW_UNIQ_ID, KW_UNIQ_KEY, KW_UNIQ_MAT, KW_UNIQUE, KW_UNIX, KW_UNIX_END, KW_UNL_HID, KW_UNLOAD, KW_UNS_BYTE, KW_UNS_LONG, KW_UNS_SHRT, KW_UNSUBSCR, KW_UP, KW_UPD_ATTR, KW_UPDATE, KW_UPLOAD, KW_URL, KW_URL_DECO, KW_URL_ENCO, KW_URL_FLD, KW_URL_FLDL, KW_URL_FMT, KW_URL_PW, KW_URL_UID, KW_USE, KW_USE_DCT, KW_USE_FIL, KW_USE_IDX, KW_USE_REV, KW_USE_TXT, KW_USE_UND, KW_USE_WIDP, KW_USER_ID, KW_USERID, KW_USING, KW_USR_DATA, KW_UTC_OFF, KW_V_N_CNT, KW_V_SCRL_P, KW_V6DISP, KW_V6FRAME, KW_VAL_CHG, KW_VAL_ENAB, KW_VAL_EVT, KW_VAL_EXPR, KW_VAL_HND, KW_VAL_MSG, KW_VAL_OBJ, KW_VAL_SEAL, KW_VAL_XML, KW_VALEXP, KW_VALIDATE, KW_VALMG_SA, KW_VALMSG, KW_VALUE, KW_VALUES, KW_VAR, KW_VERBOSE, KW_VERSION, KW_VERT, KW_VIEW, KW_VIEW_AS, KW_VIEW_FCR, KW_VIRT_HC, KW_VIRT_HP, KW_VIRT_WC, KW_VIRT_WP, KW_VISIBLE, KW_VMS, KW_VOID, KW_WA_H_P, KW_WA_W_P, KW_WA_X, KW_WA_Y, KW_WAIT, KW_WAIT_FOR, KW_WARN, KW_WC_AD_AP, KW_WEB, KW_WEB_CTX, KW_WEB_OUT, KW_WEEK, KW_WHEN, KW_WHERE, KW_WHERE_ST, KW_WHILE, KW_WID_ENT, KW_WID_HAND, KW_WID_ID, KW_WID_LEAV, KW_WID_POOL, KW_WIDGET, KW_WIDTH, KW_WIDTH_C, KW_WIDTH_P, KW_WIN_CLOS, KW_WIN_DMIN, KW_WIN_MAX, KW_WIN_MIN, KW_WIN_NAME, KW_WIN_NORM, KW_WIN_RESI, KW_WIN_REST, KW_WIN_STAT, KW_WIN_SYS, KW_WINDOW, KW_WITH, KW_WORD_IDX, KW_WORD_WRP, KW_WORK_TAB, KW_WR_CDATA, KW_WR_CHARS, KW_WR_CMNT, KW_WR_D_ELM, KW_WR_DATA, KW_WR_E_ELM, KW_WR_ENT_R, KW_WR_EXDTD, KW_WR_FRAGM, KW_WR_JSON, KW_WR_MSG, KW_WR_PRINS, KW_WR_STAT, KW_WR_XML, KW_WR_XMLSC, KW_WRITE, KW_X, KW_X_DOC, KW_X_NODE, KW_X_OF, KW_XCODE, KW_XML_DTYP, KW_XML_E_EL, KW_XML_NNAM, KW_XML_NTYP, KW_XML_S_ER, KW_XML_SCHP, KW_XML_SNSP, KW_XOR, KW_XPR2PDF, KW_XREF, KW_XREF_XML, KW_Y, KW_Y_OF, KW_YEAR, KW_YEAR_OFF, KW_YES_NO, KW_YES_NO_C, LABEL, LABEL_DEF, LANGUAGES, LBRACKET, LEFT_OUTER_JOIN, LETTER, LIBRARY_PROCEDURE, LIBRARY_REF, LPARENS, LT, LTE, MANDATORY, MANY_TO_ONE, METH_CHAR, METH_CLASS, METH_COM_HANDLE, METH_DATE, METH_DATETIME, METH_DATETIME_TZ, METH_DEC, METH_HANDLE, METH_INT, METH_INT64, METH_LOGICAL, METH_LONGCHAR, METH_MEMPTR, METH_POLY, METH_RAW, METH_RECID, METH_ROWID, METH_VOID, METHOD_DEF, METHOD_INVOCATION, MINUS, MISSING, MORE, MULTIPLY, NATIVE_API, NATIVE_PROCESS, NATIVE_PROGRAM_RESOURCE, NETWORK_CONNECTION, NO_LOCK_LITERAL, NO_MATCH, NO_REFERENCE, NO_TRANSACTION, NO_WAIT_LITERAL, NOT_BETWEEN, NOT_ENTERED, NOT_EQ, NOT_EXISTS, NOT_IN, NOT_LIKE, NOT_NULL, NULL_TREE_LOOKAHEAD, NUM_LITERAL, OBJECT_INVOCATION, OCX_CONTROL, ONE_TO_MANY, ONE_TO_ONE, OO_METH_CHAR, OO_METH_CLASS, OO_METH_COM_HANDLE, OO_METH_DATE, OO_METH_DATETIME, OO_METH_DATETIME_TZ, OO_METH_DEC, OO_METH_HANDLE, OO_METH_INT, OO_METH_INT64, OO_METH_LOGICAL, OO_METH_LONGCHAR, OO_METH_MEMPTR, OO_METH_POLY, OO_METH_RAW, OO_METH_RECID, OO_METH_ROWID, OO_METH_VOID, OPEN_CURSOR, OPEN_QUERY, OPTION, ORDER, ORDER_BY, OUTPUT_CLOSE, OUTPUT_THRU, OUTPUT_TO, PARAMETER, PARENT_CHILD_RELATION, PARENT_ID_RELATION, PLUS, PORT_TYPE, POSITION, PROC_CALL_TYPE_LITERAL, PROCEDURE, PROCEDURE_FILE, PROCESS_EVENTS, PROPERTIES, PROPERTY_INVOCATION, PUT_CURSOR, PUT_FIELD, PUT_SCREEN, QUERY, QUERY_SUBST, RANGE_MATCH, RAW_STRING, RBRACKET, READ_AVAILABLE_LITERAL, READ_EXACT_NUM_LITERAL, RECORD_PHRASE, RELEASE_EXTERNAL, RELEASE_OBJECT, RIGHT_OUTER_JOIN, RPARENS, RSTRING, RUN_FILENAME, RUN_FILENAME_ON_SERVER, RUN_INT_PROC, RUN_INT_PROC_ON_SERVER, RUN_LIBRARY_REF, RUN_LIBRARY_REF_ON_SERVER, RUN_PORT_TYPE_ON_SERVER, RUN_PORT_TYPE_VALUE_ON_SERVER, RUN_STORED_PROCEDURE, RUN_SUPER, RUN_VALUE, RUN_VALUE_ON_SERVER, RUNTIME_BROWSE_OPTIONS, RUNTIME_FRAME_OPTIONS, SAVE_CACHE, SCHEMA_FILE, SEARCH_SELF_LITERAL, SEARCH_TARGET_LITERAL, SELF_REFERENCE, SEQUENCE, SET_ATTR_CTYPE_LITERAL, SHARE_LOCK_LITERAL, SHARED_LIBRARY, SLASH_SLASH, SORT_MATCH, SQL_WIDTH, SSTRING, STATEMENT, STR_OPTIONS, STREAM, STRING, STRONG_REFERENCE, SUB_TRANSACTION, SUPPORT_LVL_FULL, SUPPORT_LVL_FULL_WITH_LIMITATIONS, SUPPORT_LVL_NONE, SUPPORT_LVL_PARTIAL, SYM_CHAR, SYMBOL, SYS_HANDLE, SYSTEM_DIALOG_COLOR, SYSTEM_DIALOG_FONT, SYSTEM_DIALOG_GET_DIR, SYSTEM_DIALOG_GET_FILE, SYSTEM_DIALOG_PRINTER_SETUP, TABLE, TEMP_TABLE, TILDE, TRAILER, TRANSACTION, TRANSACTION_DISTINCT, TRANSACTION_MODE_AUTO, TRIGGER_BLOCK, TRIGGER_PHRASE, TRIGGER_PROCEDURE, UN_MINUS, UN_PLUS, UNKNOWN_RESOURCE, UNKNOWN_TOKEN, UNKNOWN_VAL, UNQUOTED_TEXT, UPDATE_SQL, VALEXP, VALID_SYM_CHAR, VALIDATION, VALMG_SA, VALMSG, VAR_BYTE, VAR_CHAR, VAR_CLASS, VAR_COM_HANDLE, VAR_DATE, VAR_DATETIME, VAR_DATETIME_TZ, VAR_DEC, VAR_DOUBLE, VAR_FLOAT, VAR_HANDLE, VAR_INT, VAR_INT64, VAR_LOGICAL, VAR_LONG, VAR_LONGCHAR, VAR_MEMPTR, VAR_POLY, VAR_RAW, VAR_RECID, VAR_ROWID, VAR_SHORT, VAR_ULONG, VAR_USHORT, WEAK_REFERENCE, WEB_PROC, WHEN_LIST, WHERE_CURRENT_OF, WID_BROWSE, WID_BROWSE_COL, WID_BUTTON, WID_COMBO, WID_DIALOG, WID_EDITOR, WID_FILL_IN, WID_FRAME, WID_IMAGE, WID_LITERAL, WID_MENU, WID_MENU_ITM, WID_RADIO, WID_RECT, WID_SEL_LST, WID_SLIDER, WID_SUB_MENU, WID_TEXT, WID_TOGGLE, WID_WINDOW, WIDGET_LIST, WIDGET_POOL, WITH_CHECK_OPTION, WITH_GRANT_OPTION, WORD_MATCH, WORK_TABLE, WS, XSTRING
Constructor and Description |
---|
ClassDefinition(java.lang.String name,
ClassDefinition[] parents,
java.util.Set<java.lang.String> interfaces,
boolean builtin,
OOType otype,
boolean dotnet,
java.lang.String filename)
Construct an instance and load any superclass or interface hierarchy
that is needed.
|
ClassDefinition(SymbolResolver sym,
java.lang.String qname)
Given a fully qualified legacy class name, load a new definition by looking into the AST for
oo-data-member nodes and populate the members. |
Modifier and Type | Method and Description |
---|---|
void |
addDataSet(Variable var,
Aast node,
java.lang.String name,
int type,
int access,
boolean isStatic,
boolean inMethod)
Add the named dataset to this class.
|
void |
addDataSource(Variable var,
Aast node,
java.lang.String name,
int type,
int access,
boolean isStatic,
boolean inMethod)
Add the named data source to this class.
|
void |
addMethod(java.lang.String name,
int type,
int access,
boolean isStatic,
Aast node,
Aast ret)
Add the named method to this class.
|
void |
addQuery(java.lang.String name,
Aast node,
int type,
int access,
boolean isStatic,
boolean inMethod)
Add the named query to this class.
|
void |
addTable(Aast node,
java.lang.String name,
int type,
int access,
boolean isStatic,
SchemaDictionary schemaDict,
boolean inMethod)
Add the named temp-table or buffer to this class.
|
void |
addVariable(java.lang.String name,
Variable var,
Aast node,
int access,
boolean isStatic,
java.lang.String qname,
boolean provisional)
Add a data member (variable) or property to this class.
|
private ClassDefinition.MemberData |
addWorker(ClassDefinition.DataStoreType stype,
java.lang.String name,
ParameterKey[] signature,
Variable var,
int type,
int access,
boolean isStatic,
java.lang.String qname,
int tempIdx)
Add the resource to the given maps, if it is not already present OR if it is present
under a more restrictive access type (we must store the least restrictive of the types
to allow operator overloading to work properly).
|
private void |
annotateCallSignature(Aast call,
ParameterKey[] callSig,
ParameterKey[] defSig)
Process a method call to mark any "fuzzy" parameters with the wrapper type that must
be used for the actual call.
|
void |
annotateMethodCall(java.lang.String mname,
ParameterKey[] signature,
int access,
boolean isStatic,
boolean internal,
Aast node)
Annotate the given method invocation reference with details for the specified method
in this class.
|
<R> R |
calcFromParentGraph(java.util.function.Function<ClassDefinition,R> func,
java.util.function.Predicate<R> continu,
R defVal)
Recursively process the parent hierarchy to calculate a value.
|
private java.util.List<ClassDefinition.MemberData> |
candidates(java.lang.String name,
int num,
int access,
boolean isStatic,
boolean internal,
boolean first,
java.util.Set<SignatureKey> exist)
Get the list of all possible methods that could match in this class AND its parent classes.
|
private ClassDefinition.MemberData |
checkAccessRights(ClassDefinition.MemberData mdat,
int access)
Confirm that the given member is accessible at the access level specified.
|
void |
cleanupObjectResources()
Cleanup any object resources which should not remain in memory.
|
static java.lang.String |
computeLegacySignature(java.lang.String mname,
LegacySignature lsig)
Given a Java method with a
LegacySignature , compute its 4GL signature. |
private ClassDefinition.MemberData |
createMethod(java.lang.String name,
ParameterKey[] sig,
int accessMode,
boolean isStatic,
int retType,
java.lang.String qualified,
java.lang.String javaname,
int extent,
int tempIdx)
Create a new method definition and track it.
|
private void |
defineExceptions(java.util.ArrayList<java.lang.String> save,
boolean isStatic)
Pull out our lists of temp-tables and buffers so they can be used for
cleanup.
|
void |
derivedFromDotNet()
Check the parent hierarchy to determine if the 4GL class has a .NET ancestor.
|
private ClassDefinition.MemberData |
exactMethodLookup(java.lang.String name,
ParameterKey[] sig,
int access,
boolean isStatic,
boolean internal)
Find the named method based on an exact signature match.
|
private java.lang.String |
fromJava(java.lang.String type)
Convert the specified Java-style type to a legacy BDT compatible type, if possible.
|
private ClassDefinition.MemberData |
fuzzyMethodLookup(java.lang.String name,
ParameterKey[] caller,
int access,
boolean isStatic,
boolean internal,
Aast node)
Find the named method based on a fuzzy signature match.
|
java.lang.String |
getConvertedMethodName(java.lang.String legacySig)
Get the Java method name for a legacy signature.
|
java.util.Set<java.lang.String> |
getDefinedMethods()
Get all defined methods in this class.
|
java.util.Set<java.lang.String> |
getDerivedDotNet()
Obtains the derived (parent hierarchy) .NET references, if any.
|
java.util.Set<java.lang.String> |
getDirectDotNet()
Obtains the direct .NET references, if any.
|
private int |
getExtent(java.lang.String sig)
Get the extent value from a parameter's type.
|
java.lang.String |
getFilename()
Obtains the filename of the .cls that defined this class/interface.
|
java.util.Set<java.lang.String> |
getIndirectDotNet()
Obtains the indirect .NET references, if any.
|
java.util.Set<java.lang.String> |
getInterfaces()
Obtains the list of interfaces implemented by this class.
|
java.lang.String |
getJavaPackage()
Get the converted Java package for this definition.
|
java.lang.String |
getJavaSimpleName()
Get the converted simple Java class name for this definition.
|
private java.util.Map<java.lang.String,ClassDefinition.MemberData> |
getMemberStore(ClassDefinition.DataStoreType type,
boolean isStatic)
Obtain the static or instance member map or create (and return) it if it doesn't
already exist.
|
java.lang.String |
getName()
Obtains the name of this class.
|
ClassDefinition[] |
getParents()
Obtains the parent class definition for this class.
|
SchemaDictionary |
getSchemaDict()
Obtain the backing schema dictionary, if it exists.
|
java.lang.String |
getSimpleName()
Get the simple legacy name for this class.
|
java.util.Set<java.lang.Long> |
getTableIds()
Get the AST IDs for all static or instance table definitions.
|
private ClassDefinition.MemberData |
guessMethod(java.lang.String name,
int access,
boolean isStatic,
boolean internal)
Find the named method without any knowledge of the signature.
|
int |
guessMethodType(java.lang.String name,
int access,
boolean isStatic,
boolean internal)
Find the named method without any knowledge of the signature.
|
boolean |
hasDirectDotNet()
Reports if the class has any direct .NET references.
|
boolean |
hasIndirectDotNet()
Reports if the class has any indirect .NET references.
|
(package private) void |
initialize(ConvertedClassName cclass)
Initialize the converted class details using this definition.
|
boolean |
isBuiltIn()
Access the flag that denotes if this is a built-in class definition.
|
boolean |
isClass()
Access the flag that denotes if this is a class definition.
|
boolean |
isDerivedFromDotNet()
Report if the parent hierarchy includes a .NET ancestor.
|
boolean |
isDotNet()
Access the flag that denotes if this is a .NET class definition.
|
boolean |
isEnum()
Access the flag that denotes if this is an enum definition.
|
private boolean |
isExtentMatch(java.lang.String defSig,
java.lang.String callSig)
Detect if any extent specification in the parameters are a fuzzy match or if neither have
an extent specification.
|
boolean |
isIndirectDotNetReference()
Reports if the a reference to this class should be considered an indirect .NET reference
in the calling class.
|
boolean |
isInterface()
Access the flag that denotes if this is an interface definition.
|
boolean |
isJava()
Access the flag that denotes if this is a Java class definition.
|
boolean |
isMock()
The method indicates whether this inctance represents a "mock" class definition
used to resolve symbols during class pre-scan mode in case the class file has not been
parsed.
|
private boolean |
isNarrowingTypeMatch(java.lang.String caller,
java.lang.String callee)
Check if the callee's type can be written back to a wider caller's type, when viewed from the
caller to callee, this looks like a "narrowing" operation.
|
static boolean |
isPolySignature(ParameterKey[] parms)
Detect if the signature contains a polymorphic type (is
BaseDataType ). |
boolean |
isProcessed()
Check if this class definition was already fully parsed.
|
private boolean |
isSetParam(java.lang.String method)
Reports if the class name is Progress.Lang.ParameterList and the method name is
setParameter() . |
boolean |
isStaticDataMember(java.lang.String name,
int access)
Reports if the given data member is a static member of the given class.
|
private boolean |
isWideningTypeMatch(java.lang.String caller,
java.lang.String callee)
Check if the caller's type can be matched to a wider type in the callee's signature.
|
private void |
loadBuiltinDefinition()
Load the FWD implementation for a builtin, non-.NET class.
|
int |
lookupDataSet(java.lang.String name,
int access,
boolean isStatic)
Obtain the token type of the dataset member given the name and access mode.
|
Variable |
lookupDataSetWrapper(java.lang.String name,
int access,
boolean isStatic)
Obtain the token type of the dataset member given the name and access mode.
|
int |
lookupDataSource(java.lang.String name,
int access,
boolean isStatic)
Obtain the token type of the data source member given the name and access mode.
|
Variable |
lookupDataSourceWrapper(java.lang.String name,
int access,
boolean isStatic)
Obtain the token type of the data source member given the name and access mode.
|
private ClassDefinition.MemberData |
lookupHierarchy(ClassDefinition.DataStoreType type,
java.lang.String name,
int access,
boolean isStatic)
Obtain the member given the name and access mode.
|
private ClassDefinition.MemberData |
lookupMethodWorker(java.lang.String name,
ParameterKey[] sig,
int access,
boolean isStatic,
boolean internal,
Aast node)
Obtain the method's member given the name and access mode.
|
int |
lookupQuery(java.lang.String name,
int access,
boolean isStatic)
Obtain the token type of the query member given the name and access mode.
|
int |
lookupTable(java.lang.String name,
int access,
boolean isStatic)
Obtain the token type of the temp-table or buffer given the name and access mode.
|
int |
lookupVariable(java.lang.String name,
int access,
boolean isStatic)
Obtain the token type of the data member (variable) or property given
the name and access mode.
|
java.lang.String |
lookupVariableClassName(java.lang.String name,
int access,
boolean isStatic)
Obtain the fully qualified class name of the object instance
represented by the data member (variable) or property given
the name and access mode.
|
Variable |
lookupVariableWrapper(java.lang.String name,
int access,
boolean isStatic)
Obtain the
Variable wrapper for the data member (variable) or property given
the name and access mode. |
private ClassDefinition.MemberData |
lookupWorker(java.util.Map<java.lang.String,ClassDefinition.MemberData> map,
java.lang.String name,
int access)
Find the named resource in the given map.
|
void |
markDotNetUsage(ClassDefinition ref)
Calculate if the given reference is a direct or indirect .NET reference and update out
counters.
|
int |
nextTempIdx()
Get the next
tempIdx value. |
void |
parseFinished()
The parse for this entire file has finished, and the AST IDs have been computed.
|
void |
processParentGraph(java.util.function.Consumer<ClassDefinition> consumer)
Recursively process the parent hierarchy to execute a consumer.
|
private void |
registerVirtual(java.lang.String name,
java.lang.String ori,
java.lang.String meth,
boolean statc,
int rtype,
java.lang.String qname,
ParameterKey[] parms)
Helper method to register a virtual enum method.
|
private void |
registerVirtualEnumMethods(java.lang.String name,
boolean flags)
Add the 'virtual' enum methods, so they can be resolved by the parser.
|
private java.lang.String |
renderSignature(java.lang.String name,
ParameterKey[] sig)
Generate a text descriptor of the method signature that includes the mode and type of
each parameter.
|
void |
setJavaClassName(java.lang.String name)
Set the converted, fully qualified Java name, for this class.
|
void |
setProcessed(boolean state)
Set the fully parse state of this class.
|
boolean |
testParentGraph(java.util.function.Predicate<ClassDefinition> check)
Recursively process the parent hierarchy to test if the given parent matches some
condition.
|
public static final boolean nowrapObjects
public static final NameConverter nconvert
private java.util.Set<java.lang.String> fuzzyErrors
private java.util.Map<ClassDefinition.DataStoreType,java.util.Map<java.lang.String,ClassDefinition.MemberData>> istores
private java.util.Map<ClassDefinition.DataStoreType,java.util.Map<java.lang.String,ClassDefinition.MemberData>> sstores
private java.util.Map<java.lang.String,java.util.Map<SignatureKey,ClassDefinition.MemberData>> imethods
private java.util.Map<java.lang.String,java.util.Map<SignatureKey,ClassDefinition.MemberData>> smethods
private java.lang.Object lock
private SchemaDictionary schemaDict
private final java.lang.String name
private final ClassDefinition[] parents
private final java.util.Set<java.lang.String> interfaces
private final boolean builtin
private final boolean dotnet
private final OOType otype
private final java.lang.String filename
private int tempIdx
private java.util.Set<ClassDefinition> dotnetProcessed
private java.util.Set<java.lang.String> dotnetDerived
private java.util.Set<java.lang.String> directDotNet
private java.util.Set<java.lang.String> indirectDotNet
private boolean processed
private java.util.Map<java.lang.String,java.lang.String> javaMethodNames
private java.lang.String javaClassName
public ClassDefinition(java.lang.String name, ClassDefinition[] parents, java.util.Set<java.lang.String> interfaces, boolean builtin, OOType otype, boolean dotnet, java.lang.String filename)
name
- Fully qualified name of the class or interface.parents
- List of parent classes, only interfaces can have more than 1. Pass
null
if there is no explicit super class.interfaces
- Collection of fully qualified interface names that are
implemented by this class.builtin
- true
if this definition is built-in to Progress.otype
- Flag marking the type of this OO 4GL compile unit.dotnet
- true
if this is a .NET definition,
false
if this is a 4GL definition.filename
- The filename of the .cls that defined this class/interface.public ClassDefinition(SymbolResolver sym, java.lang.String qname) throws SchemaException
oo-data-member
nodes and populate the members.sym
- The symbol resolver.qname
- The qualified legacy name for the class.SchemaException
- If temp-tables from this definition couldn't be loaded.public static boolean isPolySignature(ParameterKey[] parms)
BaseDataType
).parms
- Parameter array.true
if a parameter is polymorphic.private void loadBuiltinDefinition()
public static java.lang.String computeLegacySignature(java.lang.String mname, LegacySignature lsig)
LegacySignature
, compute its 4GL signature.mname
- The legacy method name.lsig
- The legacy signature annotation.public java.lang.String getConvertedMethodName(java.lang.String legacySig)
legacySig
- The legacy signature.null
if no match is found.public void setProcessed(boolean state)
state
- The processed state.public boolean isProcessed()
processed
flag.public void derivedFromDotNet()
public boolean isDerivedFromDotNet()
true
if an ancestor is a .NET class.public java.util.Set<java.lang.String> getDerivedDotNet()
public void markDotNetUsage(ClassDefinition ref)
ref
- The class being referenced.public boolean hasDirectDotNet()
true
if the class has any direct .NET references.public java.util.Set<java.lang.String> getDirectDotNet()
public boolean hasIndirectDotNet()
true
if the class has any indirect .NET references.public java.util.Set<java.lang.String> getIndirectDotNet()
public boolean isIndirectDotNetReference()
true
if the class is NOT a .NET class AND it is derived from a .NET
class or has its own direct or indirect references to a .NET class.public java.util.Set<java.lang.Long> getTableIds()
public void parseFinished()
public java.lang.String getName()
public java.lang.String getSimpleName()
public void setJavaClassName(java.lang.String name)
name
- The qualified Java name.public java.lang.String getJavaSimpleName()
public java.lang.String getJavaPackage()
public java.lang.String getFilename()
public ClassDefinition[] getParents()
null
if there is no
explicit parent.public java.util.Set<java.lang.String> getInterfaces()
public boolean isBuiltIn()
true
if this is a built-in class.public boolean isClass()
true
if this is a class definition.public boolean isInterface()
true
if this is an interface definition.public boolean isEnum()
true
if this is an enum definition.public boolean isDotNet()
true
if this is a .NET class.public boolean isJava()
true
if this is a Java class.public boolean isMock()
true
is this instance represents a "mock" class definition,
false
otherwise.public int nextTempIdx()
tempIdx
value.public void addMethod(java.lang.String name, int type, int access, boolean isStatic, Aast node, Aast ret)
name
- Method name.type
- Return type for the method.access
- Access mode (KW_PUBLIC
, KW_PROTECTD
or KW_PRIVATE
).isStatic
- true
if the method is static.node
- The AST to be annotated or null
if no node needs
annotations.ret
- The AST for the method's return type. This is used to copy OO annotations back to
the method node.public int guessMethodType(java.lang.String name, int access, boolean isStatic, boolean internal)
If a positive value is returned, the caller can be assured that there is an accessible method with that name BUT the actual type of the return value cannot be known until the signature is known. This is due to the fact that the same method name can be present with differing return values and only the parameter signature matching can differentiate the exact method that will be called.
Do not call this from any location where the type must be known authoritatively.
name
- Resource name.access
- Access mode (KW_PUBLIC
, KW_PROTECTD
or
KW_PRIVATE
).isStatic
- If true
, only static methods will be looked up.
Otherwise any method can be returned.internal
- true
if the lookup is internal to the current class definition.-1
if no match exists.public void annotateMethodCall(java.lang.String mname, ParameterKey[] signature, int access, boolean isStatic, boolean internal, Aast node)
null
.mname
- Method name, null
for a c'tor invocation.signature
- Array of type values for the parameter list, in left to right order.access
- Access mode (KW_PUBLIC
, KW_PROTECTD
or KW_PRIVATE
).isStatic
- true
if the method is static.internal
- true
if the lookup is internal to the current class definition.node
- The AST to be annotated.public void addVariable(java.lang.String name, Variable var, Aast node, int access, boolean isStatic, java.lang.String qname, boolean provisional)
name
- Variable or property name.var
- Variable instance.node
- The definition node for this member.access
- Access mode (KW_PUBLIC
, KW_PROTECTD
or KW_PRIVATE
).isStatic
- true
if the variable/property is static.qname
- Fully qualified class name where the resource represents an
object instance, otherwise null
.provisional
- true
if this definition has not been finalized.public int lookupVariable(java.lang.String name, int access, boolean isStatic)
If the resource does not exist in this class definition the parent (if one exists) will be checked. This means a recursive call can occur here.
name
- Variable or property name.access
- Access mode (KW_PUBLIC
, KW_PROTECTD
or KW_PRIVATE
).isStatic
- If true
, only static methods will be looked up.
Otherwise any method can be returned.public java.lang.String lookupVariableClassName(java.lang.String name, int access, boolean isStatic)
If the resource does not exist in this class definition the parent (if one exists) will be checked. This means a recursive call can occur here.
name
- Variable or property name.access
- Access mode (KW_PUBLIC
, KW_PROTECTD
or KW_PRIVATE
).isStatic
- true
if this is a static reference.null
if no such variable exists.public Variable lookupVariableWrapper(java.lang.String name, int access, boolean isStatic)
Variable
wrapper for the data member (variable) or property given
the name and access mode.
If the resource does not exist in this class definition the parent (if one exists) will be checked. This means a recursive call can occur here.
name
- Variable or property name.access
- Access mode (KW_PUBLIC
, KW_PROTECTD
or KW_PRIVATE
).isStatic
- true
if this is a static reference.null
if no such variable exists.public void cleanupObjectResources()
public SchemaDictionary getSchemaDict()
null
if it was never set.public void addTable(Aast node, java.lang.String name, int type, int access, boolean isStatic, SchemaDictionary schemaDict, boolean inMethod)
node
- The definition AST.name
- Temp-table or buffer name.type
- The integer token type representing the type of table.access
- Access mode (KW_PROTECTD
or KW_PRIVATE
).isStatic
- true
if the method is static.schemaDict
- The schema dictionary that manages the temp-tables and buffers for this
class.inMethod
- Flag indicating we are in a method definition.public int lookupTable(java.lang.String name, int access, boolean isStatic)
If the resource does not exist in this class definition the parent (if one exists) will be checked. This means a recursive call can occur here.
name
- Temp-table or buffer name.access
- Access mode (KW_PUBLIC
, KW_PROTECTD
or KW_PRIVATE
).isStatic
- If true
, only static methods will be looked up.
Otherwise any method can be returned.public void addQuery(java.lang.String name, Aast node, int type, int access, boolean isStatic, boolean inMethod)
name
- Query name.node
- The AST to be annotated or null
if no node needs annotations.type
- The integer token type representing the type of table.access
- Access mode (KW_PROTECTD
or KW_PRIVATE
).isStatic
- true
if the method is static.public int lookupQuery(java.lang.String name, int access, boolean isStatic)
If the resource does not exist in this class definition the parent (if one exists) will be checked. This means a recursive call can occur here.
name
- Query name.access
- Access mode (KW_PUBLIC
, KW_PROTECTD
or KW_PRIVATE
).isStatic
- If true
, only static methods will be looked up.
Otherwise any method can be returned.public void addDataSet(Variable var, Aast node, java.lang.String name, int type, int access, boolean isStatic, boolean inMethod)
var
- The associated variable for this data-set.node
- The definition AST.name
- Dataset name.type
- The integer token type representing the type of table.access
- Access mode (KW_PROTECTD
or KW_PRIVATE
).isStatic
- true
if the method is static.inMethod
- Flag indicating we are in a method definition.public int lookupDataSet(java.lang.String name, int access, boolean isStatic)
If the resource does not exist in this class definition the parent (if one exists) will be checked. This means a recursive call can occur here.
name
- Dataset name.access
- Access mode (KW_PUBLIC
, KW_PROTECTD
or KW_PRIVATE
).isStatic
- If true
, only static methods will be looked up.
Otherwise any method can be returned.public Variable lookupDataSetWrapper(java.lang.String name, int access, boolean isStatic)
If the resource does not exist in this class definition the parent (if one exists) will be checked. This means a recursive call can occur here.
name
- Dataset name.access
- Access mode (KW_PUBLIC
, KW_PROTECTD
or KW_PRIVATE
).isStatic
- If true
, only static methods will be looked up.
Otherwise any method can be returned.public void addDataSource(Variable var, Aast node, java.lang.String name, int type, int access, boolean isStatic, boolean inMethod)
var
- The associated variable for this data-set.node
- The definition AST.name
- Data source name.type
- The integer token type representing the type of table.access
- Access mode (KW_PROTECTD
or KW_PRIVATE
).isStatic
- true
if the method is static.inMethod
- Flag indicating we are in a method definition.public int lookupDataSource(java.lang.String name, int access, boolean isStatic)
If the resource does not exist in this class definition the parent (if one exists) will be checked. This means a recursive call can occur here.
name
- Data source name.access
- Access mode (KW_PUBLIC
, KW_PROTECTD
or KW_PRIVATE
).isStatic
- If true
, only static methods will be looked up.
Otherwise any method can be returned.public Variable lookupDataSourceWrapper(java.lang.String name, int access, boolean isStatic)
If the resource does not exist in this class definition the parent (if one exists) will be checked. This means a recursive call can occur here.
name
- Data source name.access
- Access mode (KW_PUBLIC
, KW_PROTECTD
or KW_PRIVATE
).isStatic
- If true
, only static methods will be looked up.
Otherwise any method can be returned.public boolean isStaticDataMember(java.lang.String name, int access)
name
- Member name to lookup.access
- Access mode (KW_PUBLIC
, KW_PROTECTD
or KW_PRIVATE
).true
if the member is static. false
otherwise
including the case where the member does not exist at all.public java.util.Set<java.lang.String> getDefinedMethods()
public boolean testParentGraph(java.util.function.Predicate<ClassDefinition> check)
check
- Delegated code to check the condition.true
if the condition is matched anywhere in the parent graph.public <R> R calcFromParentGraph(java.util.function.Function<ClassDefinition,R> func, java.util.function.Predicate<R> continu, R defVal)
func
- Delegated code to calculate the value.continu
- A condition which if it returns true
, then the next schema
dictionary should be tried. On false
, the current result is
returned.defVal
- Default value to return if no parents exist.null
if no value is calculated.public void processParentGraph(java.util.function.Consumer<ClassDefinition> consumer)
consumer
- Delegated code to process the value.void initialize(ConvertedClassName cclass)
This will expose to the conversion rules details about the class member's, like converted Java name.
cclass
- The instance which needs to be initialized.private java.util.Map<java.lang.String,ClassDefinition.MemberData> getMemberStore(ClassDefinition.DataStoreType type, boolean isStatic)
type
- The data store type to lookup.isStatic
- true
if the static map is to be returned, false
for
the instance version.null
.private ClassDefinition.MemberData lookupHierarchy(ClassDefinition.DataStoreType type, java.lang.String name, int access, boolean isStatic)
type
- Type of data store to check.name
- Variable/data member name.access
- Access mode (KW_PUBLIC
, KW_PROTECTD
or KW_PRIVATE
).isStatic
- If true
, only static methods will be looked up.
Otherwise any method can be returned.null
if no such variable or data
member exists.private java.lang.String renderSignature(java.lang.String name, ParameterKey[] sig)
name
- Method name.sig
- The method signature.private void annotateCallSignature(Aast call, ParameterKey[] callSig, ParameterKey[] defSig)
call
- The OO_METH_* node whose parameters will be annotated.callSig
- The array of parameter types that is the method definition signature.private ClassDefinition.MemberData guessMethod(java.lang.String name, int access, boolean isStatic, boolean internal)
If a non-null value is returned, the caller can be assured that there is an accessible method with that name BUT the actual type/details of the method cannot be known until the signature is known. This is due to the fact that the same method name can be present with differing return values/parameter signature and only the parameter signature matching can differentiate the exact method that will be called.
Do not call this from any location where the method details must be known authoritatively.
name
- Resource name.access
- Access mode (KW_PUBLIC
, KW_PROTECTD
or
KW_PRIVATE
).isStatic
- If true
, only static methods will be looked up.
Otherwise any method can be returned.internal
- true
if the lookup is internal to the current class definition.null
if no match exists.private ClassDefinition.MemberData lookupMethodWorker(java.lang.String name, ParameterKey[] sig, int access, boolean isStatic, boolean internal, Aast node)
name
- Method name.sig
- Array describing the signature of the method call.access
- Access mode (KW_PUBLIC
, KW_PROTECTD
or KW_PRIVATE
).isStatic
- If true
, only static methods will be looked up.
Otherwise any method can be returned.internal
- true
if the lookup is internal to the current class definition.node
- The AST referencing this method.null
if no such variable or data
member exists.private ClassDefinition.MemberData exactMethodLookup(java.lang.String name, ParameterKey[] sig, int access, boolean isStatic, boolean internal)
name
- Resource name.sig
- Method call signature.access
- Access mode (KW_PUBLIC
, KW_PROTECTD
or
KW_PRIVATE
).isStatic
- If true
, only static methods will be looked up.
Otherwise any method can be returned.internal
- true
if the lookup is internal to the current class definition.null
if no match exists.private boolean isExtentMatch(java.lang.String defSig, java.lang.String callSig)
It is assumed that any exact matches are handled elsewhere.
defSig
- Definition parameter type spec.callSig
- Call parameter type spec.true
if a fixed extent call parm is passed to an indeterminate extent def
parm or if neither have an extent spec.private int getExtent(java.lang.String sig)
sig
- The parameter's type.private ClassDefinition.MemberData fuzzyMethodLookup(java.lang.String name, ParameterKey[] caller, int access, boolean isStatic, boolean internal, Aast node)
name
- Resource name.caller
- Method call signature.access
- Access mode (KW_PUBLIC
, KW_PROTECTD
or
KW_PRIVATE
).isStatic
- If true
, only static methods will be looked up.
Otherwise any method can be returned.internal
- true
if the lookup is internal to the current class definition.node
- The AST referencing this method.null
if no match exists.private boolean isSetParam(java.lang.String method)
setParameter()
.method
- The method name.true
if this is a setParameter call.private java.util.List<ClassDefinition.MemberData> candidates(java.lang.String name, int num, int access, boolean isStatic, boolean internal, boolean first, java.util.Set<SignatureKey> exist)
name
- Method name.num
- Number of parameters.access
- Access mode (KW_PUBLIC
, KW_PROTECTD
or KW_PRIVATE
).isStatic
- If true
, only static methods will be looked up. Otherwise any method can be
returned.internal
- true
if the lookup is internal to the current class definition.first
- true
if the first match should be immediately returned as the result.exist
- The set of existing methods already represented in the list.private java.lang.String fromJava(java.lang.String type)
type
- The Java type, in jobject> extends<
format.private boolean isNarrowingTypeMatch(java.lang.String caller, java.lang.String callee)
Primitive types narrow as follows:
Caller Type Callee Parameter Types -------------- ---------------------- int64 integer decimal integer, int64 longchar character datetime date datetime-tz date, datetime
Object types narrow by these rules:
caller
- The caller's passed instance's data type.callee
- The candidate callee method's parameter data type.true
if a narrowing operation is possible.private boolean isWideningTypeMatch(java.lang.String caller, java.lang.String callee)
Primitive types widen as follows:
Caller Type Callee Parameter Types -------------- ---------------------- integer int64, decimal int64 decimal character longchar date datetime, datetime-tz datetime datetime-tz
Object types narrow by these rules:
caller
- The caller's passed instance's data type.callee
- The candidate callee method's parameter data type.true
if a widening operation is possible.private ClassDefinition.MemberData checkAccessRights(ClassDefinition.MemberData mdat, int access)
mdat
- Member data, may be null
.access
- Access mode (KW_PUBLIC
, KW_PROTECTD
or
KW_PRIVATE
).null
access is not allowed or
if the member is null
on input.private ClassDefinition.MemberData addWorker(ClassDefinition.DataStoreType stype, java.lang.String name, ParameterKey[] signature, Variable var, int type, int access, boolean isStatic, java.lang.String qname, int tempIdx)
stype
- Type of data store to check.name
- Resource name.signature
- Parameter signature for methods or null
.var
- Variable reference for var resources or null
.type
- Token type.access
- Access mode (KW_PUBLIC
, KW_PROTECTD
or KW_PRIVATE
).isStatic
- true
if the variable/property is static.qname
- Fully qualified class name where the resource represents an
object instance, otherwise null
.tempIdx
- Temporary ID.ClassDefinition.MemberData
instance.private ClassDefinition.MemberData lookupWorker(java.util.Map<java.lang.String,ClassDefinition.MemberData> map, java.lang.String name, int access)
map
- Dictionary for all resources regardless of access mode.name
- Resource name.access
- Access mode (KW_PUBLIC
, KW_PROTECTD
or KW_PRIVATE
).null
if no match exists.private void defineExceptions(java.util.ArrayList<java.lang.String> save, boolean isStatic)
save
- Set of temp-tables and buffers.isStatic
- true
to process static resources, otherwise instance resources.private void registerVirtualEnumMethods(java.lang.String name, boolean flags)
GetEnum
method for all enums and the instance SetFlag
, ToggleFlag
and
UnsetFlag
for flags enums.name
- Fully qualified class name of this enum.flags
- true
if this is a flags enum.private void registerVirtual(java.lang.String name, java.lang.String ori, java.lang.String meth, boolean statc, int rtype, java.lang.String qname, ParameterKey[] parms)
name
- Fully qualified class name of this enum.ori
- Legacy method name.meth
- Converted method name.statc
- true
if this is a static method, false
for instance methods.rtype
- Method's return token type.qname
- Fully qualified OO name of the return type or null
for non-object return types.parms
- The signature details.private ClassDefinition.MemberData createMethod(java.lang.String name, ParameterKey[] sig, int accessMode, boolean isStatic, int retType, java.lang.String qualified, java.lang.String javaname, int extent, int tempIdx)
name
- The legacy method name.sig
- The method signature.accessMode
- The access mode.isStatic
- Flag indicating if the method is static or not.retType
- The return type.qualified
- The qualified legacy class name, for methods returning object.javaname
- The converted java name.extent
- The extent (for the return type).tempIdx
- The tempIdx to use.