/* File: QD3DStorage.h Contains: Abstraction to deal with various types of stream-based storage devices Version: Technology: Quickdraw 3D 1.6 Release: QuickTime 7.3 Copyright: (c) 2007 (c) 1995-1999 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 __QD3DSTORAGE__ #define __QD3DSTORAGE__ #ifndef __QD3D__ #include #endif #if TARGET_OS_MAC #ifndef __MACTYPES__ #include #endif #ifndef __FILES__ #include #endif #endif /* TARGET_OS_MAC */ #if TARGET_OS_WIN32 #include #endif /* TARGET_OS_WIN32 */ #include #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=power #elif PRAGMA_STRUCT_PACKPUSH #pragma pack(push, 2) #elif PRAGMA_STRUCT_PACK #pragma pack(2) #endif #if PRAGMA_ENUM_ALWAYSINT #if defined(__fourbyteints__) && !__fourbyteints__ #define __QD3DSTORAGE__RESTORE_TWOBYTEINTS #pragma fourbyteints on #endif #pragma enumsalwaysint on #elif PRAGMA_ENUM_OPTIONS #pragma option enum=int #elif PRAGMA_ENUM_PACK #if __option(pack_enums) #define __QD3DSTORAGE__RESTORE_PACKED_ENUMS #pragma options(!pack_enums) #endif #endif /****************************************************************************** ** ** ** Storage Routines ** ** ** *****************************************************************************/ #if CALL_NOT_IN_CARBON /* * Q3Storage_GetType() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3ObjectType ) Q3Storage_GetType(TQ3StorageObject storage); /* * Q3Storage_GetSize() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Storage_GetSize( TQ3StorageObject storage, unsigned long * size); /* * Reads "dataSize" bytes starting at offset in storage, copying into data. * sizeRead returns the number of bytes filled in. * * You may assume if *sizeRead < dataSize, then EOF is at offset + *sizeRead */ /* * Q3Storage_GetData() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Storage_GetData( TQ3StorageObject storage, unsigned long offset, unsigned long dataSize, unsigned char * data, unsigned long * sizeRead); /* * Write "dataSize" bytes starting at offset in storage, copying from data. * sizeWritten returns the number of bytes filled in. * * You may assume if *sizeRead < dataSize, then EOF is at offset + *sizeWritten */ /* * Q3Storage_SetData() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Storage_SetData( TQ3StorageObject storage, unsigned long offset, unsigned long dataSize, const unsigned char * data, unsigned long * sizeWritten); /****************************************************************************** ** ** ** Memory Storage Prototypes ** ** ** *****************************************************************************/ /* * Q3MemoryStorage_GetType() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3ObjectType ) Q3MemoryStorage_GetType(TQ3StorageObject storage); /* * These calls COPY the buffer into QD3D space */ /* * Q3MemoryStorage_New() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3StorageObject ) Q3MemoryStorage_New( const unsigned char * buffer, unsigned long validSize); /* * Q3MemoryStorage_Set() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3MemoryStorage_Set( TQ3StorageObject storage, const unsigned char * buffer, unsigned long validSize); /* * These calls use the pointer given - you must dispose it when you're through */ #endif /* CALL_NOT_IN_CARBON */ #if CALL_NOT_IN_CARBON /* * Q3MemoryStorage_NewBuffer() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3StorageObject ) Q3MemoryStorage_NewBuffer( unsigned char * buffer, unsigned long validSize, unsigned long bufferSize); /* * Q3MemoryStorage_SetBuffer() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3MemoryStorage_SetBuffer( TQ3StorageObject storage, unsigned char * buffer, unsigned long validSize, unsigned long bufferSize); /* * Q3MemoryStorage_GetBuffer() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3MemoryStorage_GetBuffer( TQ3StorageObject storage, unsigned char ** buffer, unsigned long * validSize, unsigned long * bufferSize); #endif /* CALL_NOT_IN_CARBON */ #if TARGET_OS_MAC /****************************************************************************** ** ** ** Macintosh Handles Prototypes ** ** ** *****************************************************************************/ /* Handle Storage is a subclass of Memory Storage */ #if CALL_NOT_IN_CARBON /* * Q3HandleStorage_New() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3StorageObject ) Q3HandleStorage_New( Handle handle, unsigned long validSize); /* * Q3HandleStorage_Set() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3HandleStorage_Set( TQ3StorageObject storage, Handle handle, unsigned long validSize); /* * Q3HandleStorage_Get() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3HandleStorage_Get( TQ3StorageObject storage, Handle * handle, unsigned long * validSize); /****************************************************************************** ** ** ** Macintosh Storage Prototypes ** ** ** *****************************************************************************/ /* * Q3MacintoshStorage_New() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3StorageObject ) Q3MacintoshStorage_New(short fsRefNum); /* Note: This storage is assumed open */ /* * Q3MacintoshStorage_Set() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3MacintoshStorage_Set( TQ3StorageObject storage, short fsRefNum); /* * Q3MacintoshStorage_Get() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3MacintoshStorage_Get( TQ3StorageObject storage, short * fsRefNum); /* * Q3MacintoshStorage_GetType() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3ObjectType ) Q3MacintoshStorage_GetType(TQ3StorageObject storage); /****************************************************************************** ** ** ** Macintosh FSSpec Storage Prototypes ** ** ** *****************************************************************************/ /* * Q3FSSpecStorage_New() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3StorageObject ) Q3FSSpecStorage_New(const FSSpec * fs); /* * Q3FSSpecStorage_Set() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3FSSpecStorage_Set( TQ3StorageObject storage, const FSSpec * fs); /* * Q3FSSpecStorage_Get() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3FSSpecStorage_Get( TQ3StorageObject storage, FSSpec * fs); #endif /* CALL_NOT_IN_CARBON */ #endif /* TARGET_OS_MAC */ #if TARGET_OS_WIN32 /****************************************************************************** ** ** ** Win32 HANDLE Storage Prototypes ** ** ** *****************************************************************************/ #if CALL_NOT_IN_CARBON /* * Q3Win32Storage_New() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3StorageObject ) Q3Win32Storage_New(HANDLE hFile); /* * Q3Win32Storage_Set() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Win32Storage_Set( TQ3StorageObject storage, HANDLE hFile); /* * Q3Win32Storage_Get() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3Win32Storage_Get( TQ3StorageObject storage, HANDLE * hFile); #endif /* CALL_NOT_IN_CARBON */ #endif /* TARGET_OS_WIN32 */ /****************************************************************************** ** ** ** Unix Prototypes ** ** The Unix Storage prototypes have been obsoleted. ** ** ** *****************************************************************************/ /****************************************************************************** ** ** ** Unix Path Prototypes ** ** ** *****************************************************************************/ #if CALL_NOT_IN_CARBON /* * Q3UnixPathStorage_New() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3StorageObject ) Q3UnixPathStorage_New(const char * pathName); /* C string */ /* * Q3UnixPathStorage_Set() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3UnixPathStorage_Set( TQ3StorageObject storage, const char * pathName); /* C string */ /* * Q3UnixPathStorage_Get() * * Availability: * Non-Carbon CFM: not available * CarbonLib: not available * Mac OS X: not available */ EXTERN_API_C( TQ3Status ) Q3UnixPathStorage_Get( TQ3StorageObject storage, char * pathName); /* pathName is a buffer */ #endif /* CALL_NOT_IN_CARBON */ #if PRAGMA_ENUM_ALWAYSINT #pragma enumsalwaysint reset #ifdef __QD3DSTORAGE__RESTORE_TWOBYTEINTS #pragma fourbyteints off #endif #elif PRAGMA_ENUM_OPTIONS #pragma option enum=reset #elif defined(__QD3DSTORAGE__RESTORE_PACKED_ENUMS) #pragma options(pack_enums) #endif #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 /* __QD3DSTORAGE__ */