summaryrefslogtreecommitdiff
path: root/common/quicktime_win32/AEHelpers.h
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /common/quicktime_win32/AEHelpers.h
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'common/quicktime_win32/AEHelpers.h')
-rw-r--r--common/quicktime_win32/AEHelpers.h579
1 files changed, 579 insertions, 0 deletions
diff --git a/common/quicktime_win32/AEHelpers.h b/common/quicktime_win32/AEHelpers.h
new file mode 100644
index 0000000..c9de9b7
--- /dev/null
+++ b/common/quicktime_win32/AEHelpers.h
@@ -0,0 +1,579 @@
+/*
+ File: AEHelpers.h
+
+ Contains: AEPrint, AEBuild and AEStream for Carbon
+
+ Version: QuickTime 7.3
+
+ Copyright: (c) 2007 (c) 1999-2001 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/
+
+*/
+/*
+ * Originally from AEGIzmos by Jens Alfke, circa 1992.
+ */
+#ifndef __AEHELPERS__
+#define __AEHELPERS__
+
+#ifndef __APPLEEVENTS__
+#include <AppleEvents.h>
+#endif
+
+#ifndef __AEDATAMODEL__
+#include <AEDataModel.h>
+#endif
+
+#include <stdarg.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=mac68k
+#elif PRAGMA_STRUCT_PACKPUSH
+ #pragma pack(push, 2)
+#elif PRAGMA_STRUCT_PACK
+ #pragma pack(2)
+#endif
+
+/*
+ * AEBuild:
+ *
+ * AEBuild provides a very high level abstraction for building
+ * complete AppleEvents and complex ObjectSpeciers. Using AEBuild it
+ * is easy to produce a textual representation of an AEDesc. The
+ * format is similar to the stdio printf call, where meta data is
+ * extracted from a format string and used to build the final
+ * representation.
+ *
+ * The structure of the format string is described here:
+ *
+ * < describe it >
+ */
+/* Syntax Error Codes: */
+typedef UInt32 AEBuildErrorCode;
+enum {
+ aeBuildSyntaxNoErr = 0, /* (No error) */
+ aeBuildSyntaxBadToken = 1, /* Illegal character */
+ aeBuildSyntaxBadEOF = 2, /* Unexpected end of format string */
+ aeBuildSyntaxNoEOF = 3, /* Unexpected extra stuff past end */
+ aeBuildSyntaxBadNegative = 4, /* "-" not followed by digits */
+ aeBuildSyntaxMissingQuote = 5, /* Missing close "'" */
+ aeBuildSyntaxBadHex = 6, /* Non-digit in hex string */
+ aeBuildSyntaxOddHex = 7, /* Odd # of hex digits */
+ aeBuildSyntaxNoCloseHex = 8, /* Missing "." */
+ aeBuildSyntaxUncoercedHex = 9, /* Hex string must be coerced to a type */
+ aeBuildSyntaxNoCloseString = 10, /* Missing """ */
+ aeBuildSyntaxBadDesc = 11, /* Illegal descriptor */
+ aeBuildSyntaxBadData = 12, /* Bad data value inside (...) */
+ aeBuildSyntaxNoCloseParen = 13, /* Missing ")" after data value */
+ aeBuildSyntaxNoCloseBracket = 14, /* Expected "," or "]" */
+ aeBuildSyntaxNoCloseBrace = 15, /* Expected "," or "}" */
+ aeBuildSyntaxNoKey = 16, /* Missing keyword in record */
+ aeBuildSyntaxNoColon = 17, /* Missing ":" after keyword in record */
+ aeBuildSyntaxCoercedList = 18, /* Cannot coerce a list */
+ aeBuildSyntaxUncoercedDoubleAt = 19 /* "@@" substitution must be coerced */
+};
+
+/* A structure containing error state.*/
+
+struct AEBuildError {
+ AEBuildErrorCode fError;
+ UInt32 fErrorPos;
+};
+typedef struct AEBuildError AEBuildError;
+/*
+ Create an AEDesc from the format string. AEBuildError can be NULL, in which case
+ no explicit error information will be returned.
+*/
+/*
+ * AEBuildDesc()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.1 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+AEBuildDesc(
+ AEDesc * dst,
+ AEBuildError * error, /* can be NULL */
+ const char * src,
+ ...);
+
+
+/* varargs version of AEBuildDesc*/
+/*
+ * vAEBuildDesc()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.1 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+vAEBuildDesc(
+ AEDesc * dst,
+ AEBuildError * error, /* can be NULL */
+ const char * src,
+ va_list args);
+
+
+
+/* Append parameters to an existing AppleEvent*/
+/*
+ * AEBuildParameters()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.1 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+AEBuildParameters(
+ AppleEvent * event,
+ AEBuildError * error, /* can be NULL */
+ const char * format,
+ ...);
+
+
+/* varargs version of AEBuildParameters*/
+/*
+ * vAEBuildParameters()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.1 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+vAEBuildParameters(
+ AppleEvent * event,
+ AEBuildError * error, /* can be NULL */
+ const char * format,
+ va_list args);
+
+
+/* Building an entire Apple event:*/
+/*
+ * AEBuildAppleEvent()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.1 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+AEBuildAppleEvent(
+ AEEventClass theClass,
+ AEEventID theID,
+ DescType addressType,
+ const void * addressData,
+ long addressLength,
+ short returnID,
+ long transactionID,
+ AppleEvent * result,
+ AEBuildError * error, /* can be NULL */
+ const char * paramsFmt,
+ ...);
+
+
+/* varargs version of AEBuildAppleEvent*/
+/*
+ * vAEBuildAppleEvent()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.1 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+vAEBuildAppleEvent(
+ AEEventClass theClass,
+ AEEventID theID,
+ DescType addressType,
+ const void * addressData,
+ long addressLength,
+ short returnID,
+ long transactionID,
+ AppleEvent * resultEvt,
+ AEBuildError * error, /* can be NULL */
+ const char * paramsFmt,
+ va_list args);
+
+
+/*
+ * AEPrintDescToHandle
+ *
+ * AEPrintDescToHandle provides a way to turn an AEDesc into a textual
+ * representation. This is most useful for debugging calls to
+ * AEBuildDesc and friends. The Handle returned should be disposed by
+ * the caller. The size of the handle is the actual number of
+ * characters in the string.
+ */
+/*
+ * AEPrintDescToHandle()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.1 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+AEPrintDescToHandle(
+ const AEDesc * desc,
+ Handle * result);
+
+
+/*
+ * AEStream:
+ *
+ * The AEStream interface allows you to build AppleEvents by appending
+ * to an opaque structure (an AEStreamRef) and then turning this
+ * structure into an AppleEvent. The basic idea is to open the
+ * stream, write data, and then close it - closing it produces an
+ * AEDesc, which may be partially complete, or may be a complete
+ * AppleEvent.
+ */
+typedef struct OpaqueAEStreamRef* AEStreamRef;
+/*
+ Create and return an AEStreamRef
+ Returns NULL on memory allocation failure
+*/
+/*
+ * AEStreamOpen()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.1 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( AEStreamRef )
+AEStreamOpen(void);
+
+
+/*
+ Closes and disposes of an AEStreamRef, producing
+ results in the desc. You must dispose of the desc yourself.
+ If you just want to dispose of the AEStreamRef, you can pass NULL for desc.
+*/
+/*
+ * AEStreamClose()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.1 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+AEStreamClose(
+ AEStreamRef ref,
+ AEDesc * desc);
+
+
+/*
+ Prepares an AEStreamRef for appending data to a newly created desc.
+ You append data with AEStreamWriteData
+*/
+/*
+ * AEStreamOpenDesc()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.1 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+AEStreamOpenDesc(
+ AEStreamRef ref,
+ DescType newType);
+
+
+/* Append data to the previously opened desc.*/
+/*
+ * AEStreamWriteData()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.1 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+AEStreamWriteData(
+ AEStreamRef ref,
+ const void * data,
+ Size length);
+
+
+/*
+ Finish a desc. After this, you can close the stream, or adding new
+ descs, if you're assembling a list.
+*/
+/*
+ * AEStreamCloseDesc()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.1 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+AEStreamCloseDesc(AEStreamRef ref);
+
+
+/* Write data as a desc to the stream*/
+/*
+ * AEStreamWriteDesc()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.1 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+AEStreamWriteDesc(
+ AEStreamRef ref,
+ DescType newType,
+ const void * data,
+ Size length);
+
+
+/* Write an entire desc to the stream*/
+/*
+ * AEStreamWriteAEDesc()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.1 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+AEStreamWriteAEDesc(
+ AEStreamRef ref,
+ const AEDesc * desc);
+
+
+/*
+ Begin a list. You can then append to the list by doing
+ AEStreamOpenDesc, or AEStreamWriteDesc.
+*/
+/*
+ * AEStreamOpenList()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.1 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+AEStreamOpenList(AEStreamRef ref);
+
+
+/* Finish a list.*/
+/*
+ * AEStreamCloseList()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.1 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+AEStreamCloseList(AEStreamRef ref);
+
+
+/*
+ Begin a record. A record usually has type 'reco', however, this is
+ rather generic, and frequently a different type is used.
+*/
+/*
+ * AEStreamOpenRecord()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.1 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+AEStreamOpenRecord(
+ AEStreamRef ref,
+ DescType newType);
+
+
+/* Change the type of a record.*/
+/*
+ * AEStreamSetRecordType()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.1 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+AEStreamSetRecordType(
+ AEStreamRef ref,
+ DescType newType);
+
+
+/* Finish a record*/
+/*
+ * AEStreamCloseRecord()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.1 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+AEStreamCloseRecord(AEStreamRef ref);
+
+
+/*
+ Add a keyed descriptor to a record. This is analogous to AEPutParamDesc.
+ it can only be used when writing to a record.
+*/
+/*
+ * AEStreamWriteKeyDesc()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.1 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+AEStreamWriteKeyDesc(
+ AEStreamRef ref,
+ AEKeyword key,
+ DescType newType,
+ const void * data,
+ Size length);
+
+
+/*
+ OpenDesc for a keyed record entry. You can use AEStreamWriteData
+ after opening a keyed desc.
+*/
+/*
+ * AEStreamOpenKeyDesc()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.1 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+AEStreamOpenKeyDesc(
+ AEStreamRef ref,
+ AEKeyword key,
+ DescType newType);
+
+
+/* Write a key to the stream - you can follow this with an AEWriteDesc.*/
+/*
+ * AEStreamWriteKey()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.1 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+AEStreamWriteKey(
+ AEStreamRef ref,
+ AEKeyword key);
+
+
+/*
+ Create a complete AppleEvent. This creates and returns a new stream.
+ Use this call to populate the meta fields in an AppleEvent record.
+ After this, you can add your records, lists and other parameters.
+*/
+/*
+ * AEStreamCreateEvent()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.1 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( AEStreamRef )
+AEStreamCreateEvent(
+ AEEventClass clazz,
+ AEEventID id,
+ DescType targetType,
+ const void * targetData,
+ long targetLength,
+ short returnID,
+ long transactionID);
+
+
+/*
+ This call lets you augment an existing AppleEvent using the stream
+ APIs. This would be useful, for example, in constructing the reply
+ record in an AppleEvent handler. Note that AEStreamOpenEvent will
+ consume the AppleEvent passed in - you can't access it again until the
+ stream is closed. When you're done building the event, AEStreamCloseStream
+ will reconstitute it.
+*/
+/*
+ * AEStreamOpenEvent()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.1 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( AEStreamRef )
+AEStreamOpenEvent(AppleEvent * event);
+
+
+/* Mark a keyword as being an optional parameter.*/
+/*
+ * AEStreamOptionalParam()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: in CarbonLib 1.1 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSStatus )
+AEStreamOptionalParam(
+ AEStreamRef ref,
+ AEKeyword key);
+
+
+
+#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 /* __AEHELPERS__ */
+