home *** CD-ROM | disk | FTP | other *** search
- /*
- File: BentoHdr.cpp
-
- Contains: Bento Handlers
-
- Owned by: Vincent Lo
-
- Copyright: © 1993 - 1995 by Apple Computer, Inc., all rights reserved.
-
- Change History (most recent first):
-
- <2> 5/26/95 VL 1251403: Multithreading naming support.
- <1> 5/27/94 VL first checked in
-
- To Do:
- */
-
- #ifndef _BENTOHDR_
- #include "BentoHdr.h"
- #endif
-
- #ifndef __CM_API__
- #include "CMAPI.h"
- #endif
-
- #ifndef __CM_API_STDOBJIDS_
- #include "CMAPIIDs.h"
- #endif
-
- #ifndef __STRING__
- #include "string.h" // for strcmp
- #endif
-
- #pragma segment BentoHdr
-
- //==============================================================================
- // Function Prototype
- //==============================================================================
-
- CM_CFUNCTIONS
-
- CMHandlerAddr CM_FIXEDARGS containerMetahandler(CMType targetType, CMconst_CMGlobalName operationType);
-
- static CMRefCon open_Handler(CMRefCon attributes, CMOpenMode mode);
- static void close_Handler(CMRefCon refCon);
- static CMSize flush_Handler(CMRefCon refCon);
- static CMSize seek_Handler(CMRefCon refCon, CM_LONG posOff, CMSeekMode mode);
- static CMSize tell_Handler(CMRefCon refCon);
- static CMSize read_Handler(CMRefCon refCon, CMPtr buffer, CMSize elementSize, CMCount theCount);
- static CMSize write_Handler(CMRefCon refCon, CMPtr buffer, CMSize elementSize, CMCount theCount);
- static CMEofStatus eof_Handler(CMRefCon refCon);
- static CMBoolean trunc_Handler(CMRefCon refCon, CMSize containerSize);
- static CMSize containerSize_Handler(CMRefCon refCon);
- static void readLabel_Handler(CMRefCon refCon, CMMagicBytes magicByteSequence,
- CMContainerFlags *flags, CM_USHORT *bufSize,
- CM_USHORT *majorVersion, CM_USHORT *minorVersion,
- CMSize *tocOffset, CMSize *tocSize);
- static void writeLabel_Handler(CMRefCon refCon, CMMagicBytes magicByteSequence,
- CMContainerFlags flags, CM_USHORT bufSize,
- CM_USHORT majorVersion, CM_USHORT minorVersion,
- CMSize tocOffset, CMSize tocSize);
- static CMValue returnParentValue_Handler(CMRefCon refCon);
- static CM_UCHAR *returnContainerName_Handler(CMRefCon refCon);
- static CMType returnTargetType_Handler(CMRefCon refCon, CMContainer container);
- static void extractData_Handler(CMRefCon refCon, CMDataBuffer buffer,
- CMSize size, CMPrivateData data);
- static void formatData_Handler(CMRefCon refCon, CMDataBuffer buffer,
- CMSize size, CMPrivateData data);
-
- CM_END_CFUNCTIONS
-
- //------------------------------------------------------------------------------
- // containerMetahandler
- //------------------------------------------------------------------------------
- CMHandlerAddr CM_FIXEDARGS containerMetahandler(CMType targetType, CMconst_CMGlobalName operationType)
- {
- static char *operationTypes[] = {CMOpenOpType, /* 0 */
- CMCloseOpType, /* 1 */
- CMFlushOpType, /* 2 */
- CMSeekOpType, /* 3 */
- CMTellOpType, /* 4 */
- CMReadOpType, /* 5 */
- CMWriteOpType, /* 6 */
- CMEofOpType, /* 7 */
- CMTruncOpType, /* 8 */
- CMSizeOpType, /* 9 */
- CMReadLblOpType, /* 10 */
- CMWriteLblOpType, /* 11 */
- CMParentOpType, /* 12 */
- CMContainerOpName, /* 13 */
- CMTargetTypeOpType, /* 14 */
- CMExtractDataOpType, /* 15 */
- CMFormatDataOpType, /* 16 */
- NULL};
- char **t;
- CMType ignored = targetType;
-
- t = operationTypes - 1;
- while (*++t) if (strcmp((char *)operationType, *t) == 0) break;
-
- switch (t - operationTypes) {
- case 0: return ((CMHandlerAddr)open_Handler); /*CMOpenOpType */
- case 1: return ((CMHandlerAddr)close_Handler); /*CMCloseOpType */
- case 2: return ((CMHandlerAddr)flush_Handler); /*CMFlushOpType */
- case 3: return ((CMHandlerAddr)seek_Handler); /*CMSeekOpType */
- case 4: return ((CMHandlerAddr)tell_Handler); /*CMTellOpType */
- case 5: return ((CMHandlerAddr)read_Handler); /*CMReadOpType */
- case 6: return ((CMHandlerAddr)write_Handler); /*CMWriteOpType */
- case 7: return ((CMHandlerAddr)eof_Handler); /*CMEofOpType */
- case 8: return ((CMHandlerAddr)trunc_Handler); /*CMTruncOpType */
- case 9: return ((CMHandlerAddr)containerSize_Handler); /*CMSizeOpType */
- case 10: return ((CMHandlerAddr)readLabel_Handler); /*CMReadLblOpType */
- case 11: return ((CMHandlerAddr)writeLabel_Handler); /*CMWriteLblOpType */
- case 12: return ((CMHandlerAddr)returnParentValue_Handler); /*CMParentOpType */
- case 13: return ((CMHandlerAddr)returnContainerName_Handler);/*CMContainerOpName */
- case 14: return ((CMHandlerAddr)returnTargetType_Handler); /*CMTargetTypeOpType */
- case 15: return ((CMHandlerAddr)extractData_Handler); /*CMExtractDataOpType */
- case 16: return ((CMHandlerAddr)formatData_Handler); /*CMFormatDataOpType */
-
- default: return (NULL);
- }
- }
-
- //------------------------------------------------------------------------------
- // open_Handler
- //------------------------------------------------------------------------------
- static CMRefCon open_Handler(CMRefCon refCon, CMOpenMode mode)
- {
- return ((ODBentoHandlers*) refCon)->OpenHandler(mode);
- }
-
- //------------------------------------------------------------------------------
- // close_Handler
- //------------------------------------------------------------------------------
- static void close_Handler(CMRefCon refCon)
- {
- ((ODBentoHandlers*) refCon)->CloseHandler();
- }
-
- //------------------------------------------------------------------------------
- // flush_Handler
- //------------------------------------------------------------------------------
- static CMSize flush_Handler(CMRefCon refCon)
- {
- return ((ODBentoHandlers*) refCon)->FlushHandler();
- }
-
- //------------------------------------------------------------------------------
- // seek_Handler
- //------------------------------------------------------------------------------
- static CMSize seek_Handler(CMRefCon refCon, CM_LONG posOff, CMSeekMode mode)
- {
- return ((ODBentoHandlers*) refCon)->SeekHandler(posOff, mode);
-
- }
-
- //------------------------------------------------------------------------------
- // tell_Handler
- //------------------------------------------------------------------------------
- static CMSize tell_Handler(CMRefCon refCon)
- {
- return ((ODBentoHandlers*) refCon)->TellHandler();
- }
-
- //------------------------------------------------------------------------------
- // read_Handler
- //------------------------------------------------------------------------------
- static CMSize read_Handler(CMRefCon refCon,
- CMPtr buffer,
- CMSize elementSize,
- CMCount theCount)
- {
- return ((ODBentoHandlers*) refCon)->ReadHandler(buffer, elementSize, theCount);
- }
-
- //------------------------------------------------------------------------------
- // write_Handler
- //------------------------------------------------------------------------------
- static CMSize write_Handler(CMRefCon refCon,
- CMPtr buffer,
- CMSize elementSize,
- CMCount theCount)
- {
- return ((ODBentoHandlers*) refCon)->WriteHandler(buffer, elementSize, theCount);
- }
-
- //------------------------------------------------------------------------------
- // eof_Handler
- //------------------------------------------------------------------------------
- static CMEofStatus eof_Handler(CMRefCon refCon)
- {
- return ((ODBentoHandlers*) refCon)->EOFHandler();
-
- }
-
- //------------------------------------------------------------------------------
- // trunc_Handler
- //------------------------------------------------------------------------------
- static CMBoolean trunc_Handler(CMRefCon refCon, CMSize containerSize)
- {
- return ((ODBentoHandlers*) refCon)->TruncHandler(containerSize);
- }
-
- //------------------------------------------------------------------------------
- // containerSize_Handler
- //------------------------------------------------------------------------------
- static CMSize containerSize_Handler(CMRefCon refCon)
- {
- return ((ODBentoHandlers*) refCon)->ContainerSizeHandler();
-
- }
-
- //------------------------------------------------------------------------------
- // readLabel_Handler
- //------------------------------------------------------------------------------
- static void readLabel_Handler(CMRefCon refCon,
- CMMagicBytes magicByteSequence,
- CMContainerFlags *flags,
- CM_USHORT *bufSize,
- CM_USHORT *majorVersion,
- CM_USHORT *minorVersion,
- CMSize *tocOffset,
- CMSize *tocSize)
- {
- ((ODBentoHandlers*) refCon)->ReadLabelHandler(magicByteSequence, flags, bufSize,
- majorVersion, minorVersion,
- tocOffset, tocSize);
- }
-
- //------------------------------------------------------------------------------
- // writeLabel_Handler
- //------------------------------------------------------------------------------
- static void writeLabel_Handler(CMRefCon refCon,
- CMMagicBytes magicByteSequence,
- CMContainerFlags flags,
- CM_USHORT bufSize,
- CM_USHORT majorVersion,
- CM_USHORT minorVersion,
- CMSize tocOffset,
- CMSize tocSize)
- {
- ((ODBentoHandlers*) refCon)->WriteLabelHandler(magicByteSequence,
- flags, bufSize,
- majorVersion, minorVersion,
- tocOffset, tocSize);
- }
-
- //------------------------------------------------------------------------------
- // returnParentValue_Handler
- //------------------------------------------------------------------------------
- static CMValue returnParentValue_Handler(CMRefCon refCon)
- {
- return ((ODBentoHandlers*) refCon)->ReturnParentValueHandler();
- }
-
- //------------------------------------------------------------------------------
- // returnContainerName_Handler
- //------------------------------------------------------------------------------
- static CM_UCHAR *returnContainerName_Handler(CMRefCon refCon)
- {
- return ((ODBentoHandlers*) refCon)->ReturnContainerNameHandler();
- }
-
- //------------------------------------------------------------------------------
- // returnTargetType_Handler
- //------------------------------------------------------------------------------
- static CMType returnTargetType_Handler(CMRefCon refCon, CMContainer container)
- {
- return ((ODBentoHandlers*) refCon)->ReturnTargetTypeHandler(container);
- }
-
- //------------------------------------------------------------------------------
- // extractData_Handler
- //------------------------------------------------------------------------------
- static void extractData_Handler(CMRefCon refCon,
- CMDataBuffer buffer,
- CMSize size,
- CMPrivateData data)
- {
- ((ODBentoHandlers*) refCon)->ExtractDataHandler(buffer, size, data);
- }
-
- //------------------------------------------------------------------------------
- // formatData_Handler
- //------------------------------------------------------------------------------
- static void formatData_Handler(CMRefCon refCon,
- CMDataBuffer buffer,
- CMSize size,
- CMPrivateData data)
- {
- ((ODBentoHandlers*) refCon)->FormatDataHandler(buffer, size, data);
- }
-
- //------------------------------------------------------------------------------
- // ODBentoHandlers::ODBentoHandlers
- //------------------------------------------------------------------------------
- ODBentoHandlers::ODBentoHandlers()
- {
- }
-
- //------------------------------------------------------------------------------
- // ODBentoHandlers::~ODBentoHandlers
- //------------------------------------------------------------------------------
- ODBentoHandlers::~ODBentoHandlers()
- {
- }
-
-