123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- {$MACRO ON}
- (***********************************************************************
- *
- * Copyright (c) 1999-2000 Palm, Inc. or its subsidiaries.
- * All rights reserved.
- *
- * File: UDAMgr.h
- *
- * Release: Palm OS SDK 4.0 (63220)
- *
- * Description:
- * Unified Data Manager header file
- * Define type and generic macro to access data
- *
- * History:
- * Jun 08, 2000 Created by Alain BASTY
- *
- ************************************************************************)
- unit udamgr;
- interface
- uses palmos, coretraps, errorbase, exgmgr;
- (***********************************************************************
- * Generic options flags
- ************************************************************************)
- const
- kUDAEndOfReader = 1;
- kUDAMoreData = 2;
- (***********************************************************************
- * Generic control
- ************************************************************************)
- const
- kUDAReinitialize = 1;
- (***********************************************************************
- * Generic error codes
- ************************************************************************)
- const
- udaErrControl = udaErrorClass or 1;
- (***********************************************************************
- * General types
- ************************************************************************)
- type
- UDABufferSize = UInt16;
- const
- kUDAZeroTerminatedBuffer = $FFFF;
- (***********************************************************************
- * Types of callback functions
- ************************************************************************)
- type
- UDAObjectPtr = ^UDAObjectType;
- UDAReaderPtr = ^UDAReaderType;
- UDAWriterPtr = ^UDAWriterType;
- UDADeleteFunction = procedure (var ioObject: UDAObjectPtr);
- //!!! UDAControlFunction = function (ioObject: UDAObjectPtr; parameter: UInt16; args: va_list): Err;
- UDAReadFunction = function (ioReader: UDAReaderPtr; var buffer: UInt8; bufferSize: UDABufferSize; var error: Err): UDABufferSize;
- UDAWriteFunction = function (ioWriter: UDAWriterPtr): Err;
- UDAFlushFunction = function (ioWriter: UDAWriterPtr): Err;
- UDAObjectType = record
- optionFlags: UInt16;
- deleteF: UDADeleteFunction;
- controlF: Pointer; //!!!UDAControlFunction;
- end;
- UDAObjectTag = UDAObjectType;
- UDAReaderType = record
- // The Reader is a base object
- optionFlags: UInt16 ;
- deleteF: UDADeleteFunction;
- controlF: Pointer; //!!!UDAControlFunction;
- // Specific Reader fields
- readF: UDAReadFunction;
- end;
- UDAReaderTag = UDAReaderType;
- UDAFilterType = record
- // The Filter is a base Object
- optionFlags: UInt16;
- deleteF: UDADeleteFunction;
- controlF: Pointer; //!!!UDAControlFunction;
- // The Filter is a Reader
- readF: UDAReadFunction;
- // Specific Filter fields
- upperReader: ^UDAReaderType;
- end;
- UDAFilterTag = UDAFilterType;
- UDAWriterType = record
- // The Writer is a base Object
- optionFlags: UInt16;
- deleteF: UDADeleteFunction;
- controlF: Pointer; //!!!UDAControlFunction;
- // Specific Writer fields
- initiateWriteF: UDAWriteFunction;
- flushF: UDAFlushFunction;
- upperReader: ^UDAReaderType;
- end;
- UDAWriterTag = UDAWriterType;
- (***********************************************************************
- * Generic macro to access generic functions
- ************************************************************************)
- (*
- #define UDADelete(ioObject) (( *(ioObject->deleteF))((UDAObjectType** )(&(ioObject))))
- #define UDARead(ioReader, bufferToFillP, bufferSizeInBytes, error) (( *(ioReader->readF))((UDAReaderType* )(ioReader), (bufferToFillP), (bufferSizeInBytes), (error)))
- #define UDAEndOfReader(ioReader) (((ioReader)->optionFlags & kUDAEndOfReader) != 0)
- #define UDAMoreData(ioReader) (((ioReader)->optionFlags & kUDAMoreData) != 0)
- #define UDAFilterJoin(ioFilter, ioReader) (((UDAFilterType* )(ioFilter))->upperReader = ioReader)
- #define UDAWriterJoin(ioWriter, ioReader) (ioWriter->upperReader = ioReader)
- #define UDAInitiateWrite(ioWriter) (( *(ioWriter)->initiateWriteF))(ioWriter)
- #define UDAWriterFlush(ioWriter) (( *(ioWriter)->flushF))(ioWriter)
- *)
- (*****************************************************************
- * UDA API
- ****************************************************************)
- // Public UDAMgr function selectors
- const
- sysUdaControl = 0;
- sysUdaMemoryReaderNew = 1;
- sysUdaExchangeReaderNew = 11;
- sysUdaExchangeWriterNew = 12;
- // UDAMgr function prototypes
- //!!! function UDAControl(var ioObject: UDAObjectType; parameter: UInt16, ...): Err; syscall sysTrapUdaMgrDispatch, sysUdaControl;
- function UDAExchangeReaderNew(var socket: ExgSocketType): UDAReaderPtr;
- function UDAExchangeWriterNew(var socket: ExgSocketType; bufferSize: UDABufferSize): UDAWriterPtr;
- (***********************************************************************
- * Memory reader
- ************************************************************************)
- function UDAMemoryReaderNew(var bufferP: UInt8; bufferSizeInBytes: UDABufferSize): UDAReaderPtr;
- implementation
- function __UDAExchangeReaderNew(var socket: ExgSocketType): UDAReaderPtr; syscall sysTrapUdaMgrDispatch;
- function __UDAExchangeWriterNew(var socket: ExgSocketType; bufferSize: UDABufferSize): UDAWriterPtr; syscall sysTrapUdaMgrDispatch;
- function __UDAMemoryReaderNew(var bufferP: UInt8; bufferSizeInBytes: UDABufferSize): UDAReaderPtr; syscall sysTrapUdaMgrDispatch;
- function UDAExchangeReaderNew(var socket: ExgSocketType): UDAReaderPtr;
- begin
- asm
- move.l #$sysUdaExchangeReaderNew, D2;
- end;
- UDAExchangeReaderNew := __UDAExchangeReaderNew(socket);
- end;
- function UDAExchangeWriterNew(var socket: ExgSocketType; bufferSize: UDABufferSize): UDAWriterPtr;
- begin
- asm
- move.l #$sysUdaExchangeWriterNew, D2;
- end;
- UDAExchangeWriterNew := __UDAExchangeWriterNew(socket, bufferSize);
- end;
- function UDAMemoryReaderNew(var bufferP: UInt8; bufferSizeInBytes: UDABufferSize): UDAReaderPtr;
- begin
- asm
- move.l #$sysUdaMemoryReaderNew, D2;
- end;
- UDAMemoryReaderNew := __UDAMemoryReaderNew(bufferP, bufferSizeInBytes);
- end;
- end.
|