sys7.1-doc-wip/Interfaces/CIncludes/DatabaseAccess.h
2019-07-27 22:37:48 +08:00

290 lines
10 KiB
C

/************************************************************
Created: Monday, July 22, 1991 at 4:03 PM
DatabaseAccess.h
C Interface to the Macintosh Libraries
Copyright Apple Computer, Inc. 1989-1991
All rights reserved
This file is used in these builds: ROM System
Change History (most recent first):
<27> 9/10/91 MH Remove typeChar. It was intentionally moved to AppleEvents.h in
<25> but not noted in change history. Then erroneously replaced
in <26> (by moi)
<26> 9/10/91 MH Replace def of typeChar inadvertantly dropped in <25>
<25> 7/23/91 JL Match Pascal File: Fixed comments, Added ColInfoHandle and
ColTypesHandle typedefs. Changed field types in ResultRecord to
use new types. Added typeNone constant.
<24> 6/14/91 JL Changed Ptr of ResListElem struct to ResListPtr to match pascal
Interface file. Removed conditionalized constants: typeBoolean -
> typeFloat. They belong in AppleEvents.h. Updated copyright
date.
<22> 12/12/90 JL Put formal paramter names back.
<21> 11/8/90 JL Changed all #defines to anonymous enums
<20> 11/4/90 dba get rid of stuff after #endif (not allowed by the ANSI
standard);
use (void) instead of ();
used constStr255Parameter;
got rid of some extraneous parameter names;
made some parameters void* instead of Ptr
<19> 10/9/90 JAL CPlusPlus update. Took out unNeeded Noditionals.
<18> 9/7/90 ngk Conditionalized the definition of some data types if AppleEvents
has alreday been included.
<17> 8/2/90 JSM Add kDBNullFlag.
<16> 7/1/90 JSM Change typeChar constant from 'char' to 'TEXT'.
<15> 7/1/90 JSM Update some DBType constants to conform to AppleEvents
conventions.
<14> 4/27/90 JSM Remove QuitDBPack call.
<13> 3/13/90 JSM Remove kDBGetItemEndOfRow message, add DBColInfoRecord, update
ResultsRecord, bump version number on InitDBPack, change names
of ResultsHandler routines to ResultHandler.
<12> 2/26/90 JSM Change selectors to use new dispatcher, eliminate gaps between
return codes, bump version on InitDBPack.
<11> 2/22/90 JSM Add kDBStartQueryComplete.
<9> 2/8/90 JSM Restore change history.
<7> 2/6/90 JSM Remove rcDBCancel and rcDBStatusCancel, add
kDBGetQueryResultsComplete.
<6> 2/5/90 JSM Remove obsolete return code rcDBBadCol.
<4> 1/4/90 JSM Change some variable names in response to suggestions from
documentation.
<3> 12/22/89 JSM Add kDBLastColFlag.
<2> 12/19/89 JSM Cleanup after initial checkin.
<1> 12/19/89 JSM Adding to public includes for the first time.
<2.2> 11/7/89 JSM Added status functions, changed DBUnGetVal to DBUnGetItem,
bumped version on InitDBPack.
<2.1> 10/6/89 JSM Updated to make SnarfMan a PACK.
<2.0> 8/29/89 JSM Updated for new version 2 API.
<1.8> 8/7/89 JSM Added new rc's, added colLens to ResultsRecord, added kill and
results-to-text stuff.
<1.7> 7/26/89 JSM Added new return code rcDBAsyncNotSupp.
<1.6> 7/19/89 JSM Changed 'type' to 'theType' in ResListElem, 'type' to 'dataType'
elsewhere.
<1.5> 6/22/89 JSM DBType now OSType, removed handle in ResListElem, updated
DBGetRow interface.
<1.4> 6/9/89 JSM Added 4 byte data types, ddevRef to async param block.
<1.3> 5/31/89 JSM Removed rcDBReady and rcDBSize errors, added async support.
<1.2> 5/18/89 JSM Removed selectors, now return OSErrs, added version and id to
QueryRecord, now use lowercase resource types.
<1.1> 4/28/89 JSM Added high-level information.
<1.0> 4/11/89 JSM Added to EASE for the first time.
************************************************************/
#ifndef __DATABASEACCESS__
#define __DATABASEACCESS__
#ifndef __RESOURCES__
#include <Resources.h>
#endif
enum {
/* error and status codes */
rcDBNull = -800,
rcDBValue = -801,
rcDBError = -802,
rcDBBadType = -803,
rcDBBreak = -804,
rcDBExec = -805,
rcDBBadSessID = -806,
rcDBBadSessNum = -807, /* bad session number for DBGetConnInfo */
rcDBBadDDEV = -808, /* bad ddev specified on DBInit */
rcDBAsyncNotSupp = -809, /* ddev does not support async calls */
rcDBBadAsyncPB = -810, /* tried to kill a bad pb */
rcDBNoHandler = -811, /* no app handler for specified data type */
rcDBWrongVersion = -812, /* incompatible versions */
rcDBPackNotInited = -813, /* attempt to call other routine before InitDBPack */
/* 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,
/* data type codes */
#define typeNone 'none'
#define typeDate 'date'
#define typeTime 'time'
#define typeTimeStamp 'tims'
#define typeDecimal 'deci'
#define typeMoney 'mone'
#define typeVChar 'vcha'
#define typeVBin 'vbin'
#define typeLChar 'lcha'
#define typeLBin 'lbin'
#define typeDiscard 'disc'
/* "dummy" types for DBResultsToText */
#define typeUnknown 'unkn'
#define typeColBreak 'colb'
#define typeRowBreak 'rowb'
/* pass this in to DBGetItem for any data type */
#define typeAnyType (DBType)0
/* infinite timeout value for DBGetItem */
kDBWaitForever = -1,
/* flags for DBGetItem */
kDBLastColFlag = 0x0001,
kDBNullFlag = 0x0004
};
typedef OSType DBType;
/* structure for asynchronous parameter block */
struct DBAsyncParamBlockRec {
ProcPtr 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 */
};
typedef struct DBAsyncParamBlockRec DBAsyncParamBlockRec;
typedef DBAsyncParamBlockRec *DBAsyncParmBlkPtr;
/* structure for resource list in QueryRecord */
struct ResListElem {
ResType theType; /* resource type */
short id; /* resource id */
};
typedef struct ResListElem ResListElem;
typedef ResListElem *ResListPtr, **ResListHandle;
/* structure for query list in QueryRecord */
typedef Handle **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, **QueryHandle;
/* structure of column types array in ResultsRecord */
typedef Handle ColTypesHandle;
/* structure for column info in ResultsRecord */
struct DBColInfoRecord {
short len;
short places;
short flags;
};
typedef struct DBColInfoRecord DBColInfoRecord;
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;
#ifdef __cplusplus
extern "C" {
#endif
pascal OSErr InitDBPack(void)
= {0x3F3C,0x0004,0x303C,0x0100,0xA82F};
pascal OSErr DBInit(long *sessID,ConstStr63Param ddevName,ConstStr255Param host,
ConstStr255Param user,ConstStr255Param passwd,ConstStr255Param connStr,
DBAsyncParmBlkPtr asyncPB)
= {0x303C,0x0E02,0xA82F};
pascal OSErr DBEnd(long sessID,DBAsyncParmBlkPtr asyncPB)
= {0x303C,0x0403,0xA82F};
pascal 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)
= {0x303C,0x1704,0xA82F};
pascal OSErr DBGetSessionNum(long sessID,short *sessNum,DBAsyncParmBlkPtr asyncPB)
= {0x303C,0x0605,0xA82F};
pascal OSErr DBSend(long sessID,char *text,short len,DBAsyncParmBlkPtr asyncPB)
= {0x303C,0x0706,0xA82F};
pascal OSErr DBSendItem(long sessID,DBType dataType,short len,short places,
short flags,void *buffer,DBAsyncParmBlkPtr asyncPB)
= {0x303C,0x0B07,0xA82F};
pascal OSErr DBExec(long sessID,DBAsyncParmBlkPtr asyncPB)
= {0x303C,0x0408,0xA82F};
pascal OSErr DBState(long sessID,DBAsyncParmBlkPtr asyncPB)
= {0x303C,0x0409,0xA82F};
pascal OSErr DBGetErr(long sessID,long *err1,long *err2,Str255 item1,Str255 item2,
Str255 errorMsg,DBAsyncParmBlkPtr asyncPB)
= {0x303C,0x0E0A,0xA82F};
pascal OSErr DBBreak(long sessID,Boolean abort,DBAsyncParmBlkPtr asyncPB)
= {0x303C,0x050B,0xA82F};
pascal OSErr DBGetItem(long sessID,long timeout,DBType *dataType,short *len,
short *places,short *flags,void *buffer,DBAsyncParmBlkPtr asyncPB)
= {0x303C,0x100C,0xA82F};
pascal OSErr DBUnGetItem(long sessID,DBAsyncParmBlkPtr asyncPB)
= {0x303C,0x040D,0xA82F};
pascal OSErr DBKill(DBAsyncParmBlkPtr asyncPB)
= {0x303C,0x020E,0xA82F};
pascal OSErr DBGetNewQuery(short queryID,QueryHandle *query)
= {0x303C,0x030F,0xA82F};
pascal OSErr DBDisposeQuery(QueryHandle query)
= {0x303C,0x0210,0xA82F};
pascal OSErr DBStartQuery(long *sessID,QueryHandle query,ProcPtr statusProc,
DBAsyncParmBlkPtr asyncPB)
= {0x303C,0x0811,0xA82F};
pascal OSErr DBGetQueryResults(long sessID,ResultsRecord *results,long timeout,
ProcPtr statusProc,DBAsyncParmBlkPtr asyncPB)
= {0x303C,0x0A12,0xA82F};
pascal OSErr DBResultsToText(ResultsRecord *results,Handle *theText)
= {0x303C,0x0413,0xA82F};
pascal OSErr DBInstallResultHandler(DBType dataType,ProcPtr theHandler,
Boolean isSysHandler)
= {0x303C,0x0514,0xA82F};
pascal OSErr DBRemoveResultHandler(DBType dataType)
= {0x303C,0x0215,0xA82F};
pascal OSErr DBGetResultHandler(DBType dataType,ProcPtr *theHandler,Boolean getSysHandler)
= {0x303C,0x0516,0xA82F};
#ifdef __cplusplus
}
#endif
#endif