00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __SPProperties__
00021 #define __SPProperties__
00022
00023
00024
00025
00026
00027
00028
00029
00030 #include "SPTypes.h"
00031 #include "SPMdata.h"
00032 #include "SPPiPL.h"
00033 #include "AiBasicTypes.h"
00034
00035 #include "SPHeaderBegin.h"
00036
00037 #ifdef __cplusplus
00038 extern "C" {
00039 #endif
00040
00041
00042
00043
00044
00045
00046
00047
00049 #define kSPPropertiesSuite "SP Properties Suite"
00050
00051 #define kSPPropertiesSuiteVersion2 2
00052
00053 #define kSPPropertiesSuiteVersion kSPPropertiesSuiteVersion2 // minimal is default
00054
00055 #define kSPPropertiesSuiteVersion3 3
00056
00060 #define kSPPropertiesCaller "SP Properties"
00061
00064 #define kSPPropertiesAcquireSelector "Acquire"
00065
00068 #define kSPPropertiesReleaseSelector "Release"
00069
00070
00071
00072
00073
00074
00075
00077 typedef struct SPProperty *SPPropertyRef;
00079 typedef struct SPPropertyList *SPPropertyListRef;
00081 typedef struct SPPropertyListIterator *SPPropertyListIteratorRef;
00082
00084 typedef struct SPPropertiesMessage {
00086 SPMessageData d;
00087
00093 PIType vendorID;
00095 PIType propertyKey;
00098 ai::int32 propertyID;
00099
00101 void *property;
00104 ai::int32 refCon;
00108 ai::int32 cacheable;
00109
00110 } SPPropertiesMessage;
00111
00112
00113
00114
00115
00116
00117
00129 typedef struct SPPropertiesSuite {
00130
00135 SPAPI SPErr (*AllocatePropertyList)( SPPropertyListRef *propertyList );
00142 SPAPI SPErr (*FreePropertyList)( SPPropertyListRef propertyList );
00143
00155 SPAPI SPErr (*AddProperties)( SPPropertyListRef propertyList, PIPropertyList *pList, ai::int32 refCon, ai::int32 cacheable );
00156
00171 SPAPI SPErr (*AddProperty)( SPPropertyListRef propertyList, PIType vendorID, PIType propertyKey, ai::int32 propertyID, PIProperty *p,
00172 ai::int32 refCon, ai::int32 cacheable, SPPropertyRef *property );
00173
00183 SPAPI SPErr (*FindProperty)( SPPropertyListRef propertyList, PIType vendorID, PIType propertyKey, ai::int32 propertyID, SPPropertyRef *property );
00184
00191 SPAPI SPErr (*NewPropertyListIterator)( SPPropertyListRef propertyList, SPPropertyListIteratorRef *iter );
00199 SPAPI SPErr (*NextProperty)( SPPropertyListIteratorRef iter, SPPropertyRef *property );
00204 SPAPI SPErr (*DeletePropertyListIterator)( SPPropertyListIteratorRef iter );
00205
00210 SPAPI SPErr (*GetPropertyPIProperty)( SPPropertyRef property, PIProperty **p );
00215 SPAPI SPErr (*GetPropertyRefCon)( SPPropertyRef property, ai::int32 *refCon );
00223 SPAPI SPErr (*GetPropertyCacheable)( SPPropertyRef property, ai::int32 *cacheable );
00232 SPAPI SPErr (*GetPropertyAllocatedByPlugin)( SPPropertyRef property, ai::int32 *allocatedByPlugin );
00233
00234
00241 SPAPI SPBoolean (*SPHasMultiplePropertyLists)(SPPropertyListRef propertyList);
00247 SPAPI SPErr (*GetNextPropertyList)(SPPropertyListRef propertyList, SPPropertyListRef *nextPropertyList);
00258 SPAPI SPErr (*FindPropertyLocal)( SPPropertyListRef propertyList, PIType vendorID, PIType propertyKey,
00259 ai::int32 propertyID, SPPropertyRef *property );
00260
00261 } SPPropertiesSuite;
00262
00263
00265 SPAPI SPErr SPAllocatePropertyList( SPPropertyListRef *propertyList );
00267 SPAPI SPErr SPFreePropertyList( SPPropertyListRef propertyList );
00268
00270 SPAPI SPErr SPAddProperties( SPPropertyListRef propertyList, PIPropertyList *pList, ai::int32 refCon,
00271 ai::int32 cacheable );
00272
00274 SPAPI SPErr SPAddProperty( SPPropertyListRef propertyList, PIType vendorID, PIType propertyKey,
00275 ai::int32 propertyID, PIProperty *p, ai::int32 refCon, ai::int32 cacheable, SPPropertyRef *property );
00276
00278 SPAPI SPErr SPFindProperty( SPPropertyListRef propertyList, PIType vendorID, PIType propertyKey,
00279 ai::int32 propertyID, SPPropertyRef *property );
00280
00282 SPAPI SPErr SPNewPropertyListIterator( SPPropertyListRef propertyList, SPPropertyListIteratorRef *iter );
00284 SPAPI SPErr SPNextProperty( SPPropertyListIteratorRef iter, SPPropertyRef *property );
00286 SPAPI SPErr SPDeletePropertyListIterator( SPPropertyListIteratorRef iter );
00287
00289 SPAPI SPErr SPGetPropertyPIProperty( SPPropertyRef property, PIProperty **p );
00291 SPAPI SPErr SPGetPropertyRefCon( SPPropertyRef property, ai::int32 *refCon );
00293 SPAPI SPErr SPGetPropertyCacheable( SPPropertyRef property, ai::int32 *cacheable );
00295 SPAPI SPErr SPGetPropertyAllocatedByPlugin( SPPropertyRef property, ai::int32 *allocatedByPlugin );
00296
00298 SPAPI SPBoolean SPHasMultiplePropertyLists(SPPropertyListRef propertyList);
00300 SPAPI SPErr SPGetNextPropertyList(SPPropertyListRef propertyList, SPPropertyListRef *nextPropertyList);
00301
00303 SPAPI SPErr SPFindPropertyLocal( SPPropertyListRef propertyList, PIType vendorID,
00304 PIType propertyKey, ai::int32 propertyID, SPPropertyRef *property );
00305
00306
00307
00308
00309
00310
00311
00312 #include "SPErrorCodes.h"
00313
00314 #ifdef __cplusplus
00315 }
00316 #endif
00317
00318 #include "SPHeaderEnd.h"
00319
00320 #endif