Show DatabaseAccess.h syntax highlighted
/*
File: DatabaseAccess.h
Contains: Database Access Manager Interfaces.
Version: Technology: System 7.5
Release: QuickTime 6.0.2
Copyright: (c) 1989-2001 by Apple Computer, Inc., all rights reserved
Bugs?: For bug reports, consult the following page on
the World Wide Web:
http://developer.apple.com/bugreporter/
*/
#ifndef __DATABASEACCESS__
#define __DATABASEACCESS__
#ifndef __RESOURCES__
#include "Resources.h"
#endif
#if PRAGMA_ONCE
#pragma once
#endif
#ifdef __cplusplus
extern "C" {
#endif
#if PRAGMA_IMPORT
#pragma import on
#endif
#if PRAGMA_STRUCT_ALIGN
#pragma options align=mac68k
#elif PRAGMA_STRUCT_PACKPUSH
#pragma pack(push, 2)
#elif PRAGMA_STRUCT_PACK
#pragma pack(2)
#endif
/* data type codes */
enum {
typeNone = FOUR_CHAR_CODE('none'),
typeDate = FOUR_CHAR_CODE('date'),
typeTime = FOUR_CHAR_CODE('time'),
typeTimeStamp = FOUR_CHAR_CODE('tims'),
typeDecimal = FOUR_CHAR_CODE('deci'),
typeMoney = FOUR_CHAR_CODE('mone'),
typeVChar = FOUR_CHAR_CODE('vcha'),
typeVBin = FOUR_CHAR_CODE('vbin'),
typeLChar = FOUR_CHAR_CODE('lcha'),
typeLBin = FOUR_CHAR_CODE('lbin'),
typeDiscard = FOUR_CHAR_CODE('disc'), /* "dummy" types for DBResultsToText */
typeUnknown = FOUR_CHAR_CODE('unkn'),
typeColBreak = FOUR_CHAR_CODE('colb'),
typeRowBreak = FOUR_CHAR_CODE('rowb'), /* pass this in to DBGetItem for any data type */
typeAnyType = 0
};
/* infinite timeout value for DBGetItem */
enum {
/* messages for status functions for DBStartQuery */
kDBUpdateWind = 0,
kDBAboutToInit = 1,
kDBInitComplete = 2,
kDBSendComplete = 3,
kDBExecComplete = 4,
kDBStartQueryComplete = 5
};
enum {
/* messages for status functions for DBGetQueryResults */
kDBGetItemComplete = 6,
kDBGetQueryResultsComplete = 7,
kDBWaitForever = -1
};
enum {
/* flags for DBGetItem */
kDBLastColFlag = 0x0001,
kDBNullFlag = 0x0004
};
typedef OSType DBType;
typedef struct DBAsyncParamBlockRec DBAsyncParamBlockRec;
typedef DBAsyncParamBlockRec * DBAsyncParmBlkPtr;
typedef CALLBACK_API( void , DBCompletionProcPtr )(DBAsyncParmBlkPtr pb);
/*
WARNING: DBCompletionProcPtr uses register based parameters under classic 68k
and cannot be written in a high-level language without
the help of mixed mode or assembly glue.
*/
typedef REGISTER_UPP_TYPE(DBCompletionProcPtr) DBCompletionUPP;
/* structure for asynchronous parameter block */
struct DBAsyncParamBlockRec {
DBCompletionUPP completionProc; /* pointer to completion routine */
OSErr result; /* result of call */
long userRef; /* for application's use */
long ddevRef; /* for ddev's use */
long reserved; /* for internal use */
};
/* structure for resource list in QueryRecord */
struct ResListElem {
ResType theType; /* resource type */
short id; /* resource id */
};
typedef struct ResListElem ResListElem;
typedef ResListElem * ResListPtr;
typedef ResListPtr * ResListHandle;
/* structure for query list in QueryRecord */
typedef Handle QueryArray[256];
typedef Handle * QueryListPtr;
typedef QueryListPtr * QueryListHandle;
struct QueryRecord {
short version; /* version */
short id; /* id of 'qrsc' this came from */
Handle queryProc; /* handle to query def proc */
Str63 ddevName; /* ddev name */
Str255 host; /* host name */
Str255 user; /* user name */
Str255 password; /* password */
Str255 connStr; /* connection string */
short currQuery; /* index of current query */
short numQueries; /* number of queries in list */
QueryListHandle queryList; /* handle to array of handles to text */
short numRes; /* number of resources in list */
ResListHandle resList; /* handle to array of resource list elements */
Handle dataHandle; /* for use by query def proc */
long refCon; /* for use by application */
};
typedef struct QueryRecord QueryRecord;
typedef QueryRecord * QueryPtr;
typedef QueryPtr * QueryHandle;
/* structure of column types array in ResultsRecord */
typedef DBType ColTypesArray[256];
typedef Handle ColTypesHandle;
/* structure for column info in ResultsRecord */
struct DBColInfoRecord {
short len;
short places;
short flags;
};
typedef struct DBColInfoRecord DBColInfoRecord;
typedef DBColInfoRecord ColInfoArray[256];
typedef Handle ColInfoHandle;
/* structure of results returned by DBGetResults */
struct ResultsRecord {
short numRows; /* number of rows in result */
short numCols; /* number of columns per row */
ColTypesHandle colTypes; /* data type array */
Handle colData; /* actual results */
ColInfoHandle colInfo; /* DBColInfoRecord array */
};
typedef struct ResultsRecord ResultsRecord;
enum {
/* messages sent to a 'ddev'*/
kDBInit = 0,
kDBEnd = 1,
kDBGetConnInfo = 2,
kDBGetSessionNum = 3,
kDBSend = 4,
kDBSendItem = 5,
kDBExec = 6,
kDBState = 7,
kDBGetErr = 8,
kDBBreak = 9,
kDBGetItem = 10,
kDBUngetItem = 11,
kDBKill = 12,
kDBOpen = 100,
kDBClose = 101,
kDBIdle = 102
};
typedef CALLBACK_API( OSErr , DBQueryDefProcPtr )(long *sessID, QueryHandle query);
typedef CALLBACK_API( Boolean , DBStatusProcPtr )(short message, OSErr result, short dataLen, short dataPlaces, short dataFlags, DBType dataType, Ptr dataPtr);
typedef CALLBACK_API( OSErr , DBResultHandlerProcPtr )(DBType dataType, short theLen, short thePlaces, short theFlags, Ptr theData, Handle theText);
typedef STACK_UPP_TYPE(DBQueryDefProcPtr) DBQueryDefUPP;
typedef STACK_UPP_TYPE(DBStatusProcPtr) DBStatusUPP;
typedef STACK_UPP_TYPE(DBResultHandlerProcPtr) DBResultHandlerUPP;
#if OPAQUE_UPP_TYPES
#if CALL_NOT_IN_CARBON
EXTERN_API(DBCompletionUPP)
NewDBCompletionUPP (DBCompletionProcPtr userRoutine);
EXTERN_API(DBQueryDefUPP)
NewDBQueryDefUPP (DBQueryDefProcPtr userRoutine);
EXTERN_API(DBStatusUPP)
NewDBStatusUPP (DBStatusProcPtr userRoutine);
EXTERN_API(DBResultHandlerUPP)
NewDBResultHandlerUPP (DBResultHandlerProcPtr userRoutine);
EXTERN_API(void)
DisposeDBCompletionUPP (DBCompletionUPP userUPP);
EXTERN_API(void)
DisposeDBQueryDefUPP (DBQueryDefUPP userUPP);
EXTERN_API(void)
DisposeDBStatusUPP (DBStatusUPP userUPP);
EXTERN_API(void)
DisposeDBResultHandlerUPP (DBResultHandlerUPP userUPP);
EXTERN_API(void)
InvokeDBCompletionUPP (DBAsyncParmBlkPtr pb,
DBCompletionUPP userUPP);
EXTERN_API(OSErr)
InvokeDBQueryDefUPP (long * sessID,
QueryHandle query,
DBQueryDefUPP userUPP);
EXTERN_API(Boolean)
InvokeDBStatusUPP (short message,
OSErr result,
short dataLen,
short dataPlaces,
short dataFlags,
DBType dataType,
Ptr dataPtr,
DBStatusUPP userUPP);
EXTERN_API(OSErr)
InvokeDBResultHandlerUPP (DBType dataType,
short theLen,
short thePlaces,
short theFlags,
Ptr theData,
Handle theText,
DBResultHandlerUPP userUPP);
#endif /* CALL_NOT_IN_CARBON */
#else
enum { uppDBCompletionProcInfo = 0x0000B802 }; /* register no_return_value Func(4_bytes:A1) */
enum { uppDBQueryDefProcInfo = 0x000003E0 }; /* pascal 2_bytes Func(4_bytes, 4_bytes) */
enum { uppDBStatusProcInfo = 0x000FAA90 }; /* pascal 1_byte Func(2_bytes, 2_bytes, 2_bytes, 2_bytes, 2_bytes, 4_bytes, 4_bytes) */
enum { uppDBResultHandlerProcInfo = 0x0003EAE0 }; /* pascal 2_bytes Func(4_bytes, 2_bytes, 2_bytes, 2_bytes, 4_bytes, 4_bytes) */
#define NewDBCompletionUPP(userRoutine) (DBCompletionUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDBCompletionProcInfo, GetCurrentArchitecture())
#define NewDBQueryDefUPP(userRoutine) (DBQueryDefUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDBQueryDefProcInfo, GetCurrentArchitecture())
#define NewDBStatusUPP(userRoutine) (DBStatusUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDBStatusProcInfo, GetCurrentArchitecture())
#define NewDBResultHandlerUPP(userRoutine) (DBResultHandlerUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDBResultHandlerProcInfo, GetCurrentArchitecture())
#define DisposeDBCompletionUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define DisposeDBQueryDefUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define DisposeDBStatusUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define DisposeDBResultHandlerUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
#pragma parameter InvokeDBCompletionUPP(__A1, __A0)
void InvokeDBCompletionUPP(DBAsyncParmBlkPtr pb, DBCompletionUPP userUPP) = 0x4E90;
#else
#define InvokeDBCompletionUPP(pb, userUPP) CALL_ONE_PARAMETER_UPP((userUPP), uppDBCompletionProcInfo, (pb))
#endif
#define InvokeDBQueryDefUPP(sessID, query, userUPP) (OSErr)CALL_TWO_PARAMETER_UPP((userUPP), uppDBQueryDefProcInfo, (sessID), (query))
#define InvokeDBStatusUPP(message, result, dataLen, dataPlaces, dataFlags, dataType, dataPtr, userUPP) (Boolean)CALL_SEVEN_PARAMETER_UPP((userUPP), uppDBStatusProcInfo, (message), (result), (dataLen), (dataPlaces), (dataFlags), (dataType), (dataPtr))
#define InvokeDBResultHandlerUPP(dataType, theLen, thePlaces, theFlags, theData, theText, userUPP) (OSErr)CALL_SIX_PARAMETER_UPP((userUPP), uppDBResultHandlerProcInfo, (dataType), (theLen), (thePlaces), (theFlags), (theData), (theText))
#endif
/* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
#define NewDBCompletionProc(userRoutine) NewDBCompletionUPP(userRoutine)
#define NewDBQueryDefProc(userRoutine) NewDBQueryDefUPP(userRoutine)
#define NewDBStatusProc(userRoutine) NewDBStatusUPP(userRoutine)
#define NewDBResultHandlerProc(userRoutine) NewDBResultHandlerUPP(userRoutine)
#define CallDBCompletionProc(userRoutine, pb) InvokeDBCompletionUPP(pb, userRoutine)
#define CallDBQueryDefProc(userRoutine, sessID, query) InvokeDBQueryDefUPP(sessID, query, userRoutine)
#define CallDBStatusProc(userRoutine, message, result, dataLen, dataPlaces, dataFlags, dataType, dataPtr) InvokeDBStatusUPP(message, result, dataLen, dataPlaces, dataFlags, dataType, dataPtr, userRoutine)
#define CallDBResultHandlerProc(userRoutine, dataType, theLen, thePlaces, theFlags, theData, theText) InvokeDBResultHandlerUPP(dataType, theLen, thePlaces, theFlags, theData, theText, userRoutine)
#if CALL_NOT_IN_CARBON
EXTERN_API( OSErr )
InitDBPack (void) FIVEWORDINLINE(0x3F3C, 0x0004, 0x303C, 0x0100, 0xA82F);
EXTERN_API( OSErr )
DBInit (long * sessID,
ConstStr63Param ddevName,
ConstStr255Param host,
ConstStr255Param user,
ConstStr255Param passwd,
ConstStr255Param connStr,
DBAsyncParmBlkPtr asyncPB) THREEWORDINLINE(0x303C, 0x0E02, 0xA82F);
EXTERN_API( OSErr )
DBEnd (long sessID,
DBAsyncParmBlkPtr asyncPB) THREEWORDINLINE(0x303C, 0x0403, 0xA82F);
EXTERN_API( OSErr )
DBGetConnInfo (long sessID,
short sessNum,
long * returnedID,
long * version,
Str63 ddevName,
Str255 host,
Str255 user,
Str255 network,
Str255 connStr,
long * start,
OSErr * state,
DBAsyncParmBlkPtr asyncPB) THREEWORDINLINE(0x303C, 0x1704, 0xA82F);
EXTERN_API( OSErr )
DBGetSessionNum (long sessID,
short * sessNum,
DBAsyncParmBlkPtr asyncPB) THREEWORDINLINE(0x303C, 0x0605, 0xA82F);
EXTERN_API( OSErr )
DBSend (long sessID,
Ptr text,
short len,
DBAsyncParmBlkPtr asyncPB) THREEWORDINLINE(0x303C, 0x0706, 0xA82F);
EXTERN_API( OSErr )
DBSendItem (long sessID,
DBType dataType,
short len,
short places,
short flags,
void * buffer,
DBAsyncParmBlkPtr asyncPB) THREEWORDINLINE(0x303C, 0x0B07, 0xA82F);
EXTERN_API( OSErr )
DBExec (long sessID,
DBAsyncParmBlkPtr asyncPB) THREEWORDINLINE(0x303C, 0x0408, 0xA82F);
EXTERN_API( OSErr )
DBState (long sessID,
DBAsyncParmBlkPtr asyncPB) THREEWORDINLINE(0x303C, 0x0409, 0xA82F);
EXTERN_API( OSErr )
DBGetErr (long sessID,
long * err1,
long * err2,
Str255 item1,
Str255 item2,
Str255 errorMsg,
DBAsyncParmBlkPtr asyncPB) THREEWORDINLINE(0x303C, 0x0E0A, 0xA82F);
EXTERN_API( OSErr )
DBBreak (long sessID,
Boolean abort,
DBAsyncParmBlkPtr asyncPB) THREEWORDINLINE(0x303C, 0x050B, 0xA82F);
EXTERN_API( OSErr )
DBGetItem (long sessID,
long timeout,
DBType * dataType,
short * len,
short * places,
short * flags,
void * buffer,
DBAsyncParmBlkPtr asyncPB) THREEWORDINLINE(0x303C, 0x100C, 0xA82F);
EXTERN_API( OSErr )
DBUnGetItem (long sessID,
DBAsyncParmBlkPtr asyncPB) THREEWORDINLINE(0x303C, 0x040D, 0xA82F);
EXTERN_API( OSErr )
DBKill (DBAsyncParmBlkPtr asyncPB) THREEWORDINLINE(0x303C, 0x020E, 0xA82F);
EXTERN_API( OSErr )
DBGetNewQuery (short queryID,
QueryHandle * query) THREEWORDINLINE(0x303C, 0x030F, 0xA82F);
EXTERN_API( OSErr )
DBDisposeQuery (QueryHandle query) THREEWORDINLINE(0x303C, 0x0210, 0xA82F);
EXTERN_API( OSErr )
DBStartQuery (long * sessID,
QueryHandle query,
DBStatusUPP statusProc,
DBAsyncParmBlkPtr asyncPB) THREEWORDINLINE(0x303C, 0x0811, 0xA82F);
EXTERN_API( OSErr )
DBGetQueryResults (long sessID,
ResultsRecord * results,
long timeout,
DBStatusUPP statusProc,
DBAsyncParmBlkPtr asyncPB) THREEWORDINLINE(0x303C, 0x0A12, 0xA82F);
EXTERN_API( OSErr )
DBResultsToText (ResultsRecord * results,
Handle * theText) THREEWORDINLINE(0x303C, 0x0413, 0xA82F);
EXTERN_API( OSErr )
DBInstallResultHandler (DBType dataType,
DBResultHandlerUPP theHandler,
Boolean isSysHandler) THREEWORDINLINE(0x303C, 0x0514, 0xA82F);
EXTERN_API( OSErr )
DBRemoveResultHandler (DBType dataType) THREEWORDINLINE(0x303C, 0x0215, 0xA82F);
EXTERN_API( OSErr )
DBGetResultHandler (DBType dataType,
DBResultHandlerUPP * theHandler,
Boolean getSysHandler) THREEWORDINLINE(0x303C, 0x0516, 0xA82F);
EXTERN_API( OSErr )
DBIdle (void) THREEWORDINLINE(0x303C, 0x00FF, 0xA82F);
#endif /* CALL_NOT_IN_CARBON */
#if PRAGMA_STRUCT_ALIGN
#pragma options align=reset
#elif PRAGMA_STRUCT_PACKPUSH
#pragma pack(pop)
#elif PRAGMA_STRUCT_PACK
#pragma pack()
#endif
#ifdef PRAGMA_IMPORT_OFF
#pragma import off
#elif PRAGMA_IMPORT
#pragma import reset
#endif
#ifdef __cplusplus
}
#endif
#endif /* __DATABASEACCESS__ */
See more files for this project here