Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

156 lines
4.3 KiB

#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 */