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.
566 lines
14 KiB
566 lines
14 KiB
/* |
|
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 <QD3D.h> |
|
#endif |
|
|
|
|
|
#if TARGET_OS_MAC |
|
#ifndef __MACTYPES__ |
|
#include <MacTypes.h> |
|
#endif |
|
|
|
#ifndef __FILES__ |
|
#include <Files.h> |
|
#endif |
|
|
|
#endif /* TARGET_OS_MAC */ |
|
|
|
|
|
#if TARGET_OS_WIN32 |
|
#include <windows.h> |
|
#endif /* TARGET_OS_WIN32 */ |
|
|
|
#include <stdio.h> |
|
|
|
|
|
#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__ */ |
|
|
|
|