#ifdef SYSTABLES typedef struct _cdesc /* Column Description */ { char *szColName; /* Column Name */ JET_COLTYP coltyp; /* Column Type */ JET_GRBIT grbit; /* Flag bits */ ULONG ulMaxLen; /* Max Length of Column */ } CDESC; typedef struct _idesc /* Index Description */ { char *szIdxName; /* Index Name */ char *szIdxKeys; /* Key String */ JET_GRBIT grbit; /* Flag bits */ } IDESC; typedef struct { const char *szName; CODECONST(CDESC) *pcdesc; CODECONST(IDESC) *pidesc; BYTE ccolumn; BYTE cindex; CPG cpg; JET_COLUMNID *rgcolumnid; } SYSTABLEDEF; #define itableSo 0 /* MSysObjects */ #define itableSc 1 /* MSysColumns */ #define itableSi 2 /* MSysIndexes */ #define itableSa 3 /* MSysACEs */ #define itableSq 4 /* MSysQueries */ #define itableSr 5 /* MSysRelationShips */ #define iMSO_Id 0 #define iMSO_ParentId 1 #define iMSO_Name 2 #define iMSO_Type 3 #define iMSO_DateCreate 4 #define iMSO_DateUpdate 5 #define iMSO_Rgb 6 #define iMSO_Lv 7 #define iMSO_Owner 8 #define iMSO_Database 9 #define iMSO_Connect 10 #define iMSO_ForeignName 11 #define iMSO_RmtInfoShort 12 #define iMSO_RmtInfoLong 13 #define iMSO_Flags 14 #define iMSO_LvExtra 15 #define iMSO_Description 16 #define iMSO_LvModule 17 #define iMSO_LvProp 18 #define iMSO_Pages 19 #define iMSO_Density 20 #define iMSC_ObjectId 0 #define iMSC_Name 1 #define iMSC_ColumnId 2 #define iMSC_Coltyp 3 #define iMSC_FAutoincrement 4 #define iMSC_FDisallowNull 5 #define iMSC_FVersion 6 #define iMSC_CodePage 7 #define iMSC_LanguageId 8 #define iMSC_Country 9 #define iMSC_FRestricted 10 #define iMSC_RmtInfoShort 11 #define iMSC_RmtInfoLong 12 #define iMSC_Description 13 #define iMSC_LvExtra 14 #define iMSC_POrder 15 #define iMSI_ObjectId 0 #define iMSI_Name 1 #define iMSI_FUnique 2 #define iMSI_FPrimary 3 #define iMSI_FDisallowNull 4 #define iMSI_FExcludeAllNull 5 #define iMSI_FClustered 6 #define iMSI_MatchType 7 #define iMSI_UpdateAction 8 #define iMSI_DeleteAction 9 #define iMSI_ObjectIdReference 10 #define iMSI_IdxidReference 11 #define iMSI_RgkeydReference 12 #define iMSI_RglocaleReference 13 #define iMSI_FDontEnforce 14 #define iMSI_RmtInfoShort 15 #define iMSI_RmtInfoLong 16 #define iMSI_LvExtra 17 #define iMSI_Description 18 #define iMSI_Density 19 // UNDONE: include later // #define iMSI_LanguageId 20 // #define iMSI_Country 21 /* max number of columns /**/ #define ilineSxMax 21 #define CheckTableObject( szTable ) \ { \ ERR err; \ OBJID objid; \ JET_OBJTYP objtyp; \ \ err = ErrFindObjidFromIdName( ppib, \ dbid, \ objidTblContainer, \ szTable, \ &objid, \ &objtyp ); \ if ( err >= JET_errSuccess ) \ { \ if ( objtyp == JET_objtypQuery ) \ return JET_errQueryNotSupported; \ if ( objtyp == JET_objtypLink ) \ return JET_errLinkNotSupported; \ if ( objtyp == JET_objtypSQLLink ) \ return JET_errSQLLinkNotSupported; \ } \ else \ return err; \ } /* prototypes /**/ ERR ErrSysTabCreate( PIB *ppib, DBID dbid ); ERR ErrSysTabInsert( PIB *ppib, DBID dbid, INT itable, LINE rgline[], OBJID objid ); ERR ErrSysTabDelete( PIB *ppib, DBID dbid, INT itable, CHAR *szName, OBJID objid ); ERR ErrSysTabRename( PIB *ppib, DBID dbid, CHAR *szNew, CHAR *szName, OBJID objid, INT itable ); ERR ErrSysTabTimestamp( PIB *ppib, DBID dbid, OBJID objid ); ERR ErrFindObjidFromIdName( PIB *ppib, DBID dbid, OBJID objidParentId, const CHAR *lszName, OBJID *pobjid, JET_OBJTYP *pobjtyp ); ERR ErrFindNameFromObjid( PIB *ppib, DBID dbid, OBJID objid, OUTLINE *poutName ); ERR VTAPI ErrIsamGetObjidFromName( JET_SESID sesid, JET_DBID vdbid, const char *lszCtrName, const char *lszObjName, OBJID *pobjid ); ERR VTAPI ErrIsamCreateObject( JET_SESID sesid, JET_DBID vdbid, OBJID objidParentId, const char *szName, JET_OBJTYP objtyp ); ERR VTAPI ErrIsamDeleteObject( JET_SESID sesid, JET_DBID vdbid, OBJID objid ); #endif /* SYSTABLES */