ai_array.h
1 /*
2  * Arnold API header file
3  * Copyright (c) 1998-2009 Marcos Fajardo, (c) 2009-2013 Solid Angle SL
4  */
5 
11 #pragma once
12 #include "ai_color.h"
13 #include "ai_matrix.h"
14 #include "ai_vector.h"
15 #include "ai_types.h"
16 #include "ai_api.h"
17 
34 typedef struct AtArray {
35  void* data;
39 } AtArray;
40 
41 AI_API AtArray* AiArray(AtUInt32 nelements, AtByte nkeys, AtByte type, ...);
42 AI_API AtArray* AiArrayAllocate(AtUInt32 nelements, AtByte nkeys, AtByte type);
43 AI_API void AiArrayDestroy(AtArray* array);
44 AI_API AtArray* AiArrayConvert(AtUInt32 nelements, AtByte nkeys, AtByte type, const void* data);
45 AI_API AtArray* AiArrayModify(AtArray* array, AtUInt32 nelements, AtByte nkeys, AtByte type, ...);
46 AI_API AtArray* AiArrayCopy(const AtArray* array);
47 AI_API bool AiArraySetKey(AtArray* array, AtByte key, const void* data);
48 AI_API AtPoint AiArrayInterpolatePnt(const AtArray* array, float time, AtUInt32 idx);
49 AI_API AtVector AiArrayInterpolateVec(const AtArray* array, float time, AtUInt32 idx);
50 AI_API AtColor AiArrayInterpolateRGB(const AtArray* array, float time, AtUInt32 idx);
51 AI_API AtRGBA AiArrayInterpolateRGBA(const AtArray* array, float time, AtUInt32 idx);
52 AI_API float AiArrayInterpolateFlt(const AtArray* array, float time, AtUInt32 idx);
53 AI_API void AiArrayInterpolateMtx(const AtArray* array, float time, AtUInt32 idx, AtMatrix result);
54 
68 #define AiArrayGetBool(a,i) AiArrayGetBoolFunc (a,i,__AI_FILE__,__AI_LINE__)
69 #define AiArrayGetByte(a,i) AiArrayGetByteFunc (a,i,__AI_FILE__,__AI_LINE__)
70 #define AiArrayGetInt(a,i) AiArrayGetIntFunc (a,i,__AI_FILE__,__AI_LINE__)
71 #define AiArrayGetUInt(a,i) AiArrayGetUIntFunc (a,i,__AI_FILE__,__AI_LINE__)
72 #define AiArrayGetFlt(a,i) AiArrayGetFltFunc (a,i,__AI_FILE__,__AI_LINE__)
73 #define AiArrayGetRGB(a,i) AiArrayGetRGBFunc (a,i,__AI_FILE__,__AI_LINE__)
74 #define AiArrayGetRGBA(a,i) AiArrayGetRGBAFunc (a,i,__AI_FILE__,__AI_LINE__)
75 #define AiArrayGetPnt(a,i) AiArrayGetPntFunc (a,i,__AI_FILE__,__AI_LINE__)
76 #define AiArrayGetPnt2(a,i) AiArrayGetPnt2Func (a,i,__AI_FILE__,__AI_LINE__)
77 #define AiArrayGetVec(a,i) AiArrayGetVecFunc (a,i,__AI_FILE__,__AI_LINE__)
78 #define AiArrayGetMtx(a,i,out) AiArrayGetMtxFunc (a,i,out,__AI_FILE__,__AI_LINE__)
79 #define AiArrayGetStr(a,i) AiArrayGetStrFunc (a,i,__AI_FILE__,__AI_LINE__)
80 #define AiArrayGetPtr(a,i) AiArrayGetPtrFunc (a,i,__AI_FILE__,__AI_LINE__)
81 #define AiArrayGetArray(a,i) AiArrayGetArrayFunc(a,i,__AI_FILE__,__AI_LINE__)
82 /*\}*/
83 
93 #define AiArraySetBool(a,i,val) AiArraySetBoolFunc (a,i,val,__AI_FILE__,__AI_LINE__)
94 #define AiArraySetByte(a,i,val) AiArraySetByteFunc (a,i,val,__AI_FILE__,__AI_LINE__)
95 #define AiArraySetInt(a, i,val) AiArraySetIntFunc (a,i,val,__AI_FILE__,__AI_LINE__)
96 #define AiArraySetUInt(a,i,val) AiArraySetUIntFunc (a,i,val,__AI_FILE__,__AI_LINE__)
97 #define AiArraySetFlt(a,i,val) AiArraySetFltFunc (a,i,val,__AI_FILE__,__AI_LINE__)
98 #define AiArraySetRGB(a,i,val) AiArraySetRGBFunc (a,i,val,__AI_FILE__,__AI_LINE__)
99 #define AiArraySetRGBA(a,i,val) AiArraySetRGBAFunc (a,i,val,__AI_FILE__,__AI_LINE__)
100 #define AiArraySetPnt(a,i,val) AiArraySetPntFunc (a,i,val,__AI_FILE__,__AI_LINE__)
101 #define AiArraySetPnt2(a,i,val) AiArraySetPnt2Func (a,i,val,__AI_FILE__,__AI_LINE__)
102 #define AiArraySetVec(a,i,val) AiArraySetVecFunc (a,i,val,__AI_FILE__,__AI_LINE__)
103 #define AiArraySetMtx(a,i,val) AiArraySetMtxFunc (a,i,val,__AI_FILE__,__AI_LINE__)
104 #define AiArraySetStr(a,i,val) AiArraySetStrFunc (a,i,val,__AI_FILE__,__AI_LINE__)
105 #define AiArraySetPtr(a,i,val) AiArraySetPtrFunc (a,i,val,__AI_FILE__,__AI_LINE__)
106 #define AiArraySetArray(a,i,val) AiArraySetArrayFunc(a,i,val,__AI_FILE__,__AI_LINE__)
107 /*\}*/
108 
109 /*\}*/
110 
111 AI_API bool AiArrayGetBoolFunc (const AtArray* a, AtUInt32 i, const char*, int line);
112 AI_API AtByte AiArrayGetByteFunc (const AtArray* a, AtUInt32 i, const char*, int line);
113 AI_API int AiArrayGetIntFunc (const AtArray* a, AtUInt32 i, const char*, int line);
114 AI_API AtUInt32 AiArrayGetUIntFunc (const AtArray* a, AtUInt32 i, const char*, int line);
115 AI_API float AiArrayGetFltFunc (const AtArray* a, AtUInt32 i, const char*, int line);
116 AI_API AtRGB AiArrayGetRGBFunc (const AtArray* a, AtUInt32 i, const char*, int line);
117 AI_API AtRGBA AiArrayGetRGBAFunc (const AtArray* a, AtUInt32 i, const char*, int line);
118 AI_API AtPoint AiArrayGetPntFunc (const AtArray* a, AtUInt32 i, const char*, int line);
119 AI_API AtPoint2 AiArrayGetPnt2Func (const AtArray* a, AtUInt32 i, const char*, int line);
120 AI_API AtVector AiArrayGetVecFunc (const AtArray* a, AtUInt32 i, const char*, int line);
121 AI_API void AiArrayGetMtxFunc (const AtArray* a, AtUInt32 i, AtMatrix out, const char*, int line);
122 AI_API const char* AiArrayGetStrFunc (const AtArray* a, AtUInt32 i, const char*, int line);
123 AI_API void* AiArrayGetPtrFunc (const AtArray* a, AtUInt32 i, const char*, int line);
124 AI_API AtArray* AiArrayGetArrayFunc(const AtArray* a, AtUInt32 i, const char*, int line);
125 
126 AI_API bool AiArraySetBoolFunc (AtArray* a, AtUInt32 i, bool val, const char*, int line);
127 AI_API bool AiArraySetByteFunc (AtArray* a, AtUInt32 i, AtByte val, const char*, int line);
128 AI_API bool AiArraySetIntFunc (AtArray* a, AtUInt32 i, int val, const char*, int line);
129 AI_API bool AiArraySetUIntFunc (AtArray* a, AtUInt32 i, AtUInt32 val, const char*, int line);
130 AI_API bool AiArraySetFltFunc (AtArray* a, AtUInt32 i, float val, const char*, int line);
131 AI_API bool AiArraySetRGBFunc (AtArray* a, AtUInt32 i, AtRGB val, const char*, int line);
132 AI_API bool AiArraySetRGBAFunc (AtArray* a, AtUInt32 i, AtRGBA val, const char*, int line);
133 AI_API bool AiArraySetPntFunc (AtArray* a, AtUInt32 i, AtPoint val, const char*, int line);
134 AI_API bool AiArraySetPnt2Func (AtArray* a, AtUInt32 i, AtPoint2 val, const char*, int line);
135 AI_API bool AiArraySetVecFunc (AtArray* a, AtUInt32 i, AtVector val, const char*, int line);
136 AI_API bool AiArraySetMtxFunc (AtArray* a, AtUInt32 i, AtMatrix val, const char*, int line);
137 AI_API bool AiArraySetStrFunc (AtArray* a, AtUInt32 i, const char* val, const char*, int line);
138 AI_API bool AiArraySetPtrFunc (AtArray* a, AtUInt32 i, void* val, const char*, int line);
139 AI_API bool AiArraySetArrayFunc(AtArray* a, AtUInt32 i, AtArray* val, const char*, int line);

© 2009-2013 Solid Angle SL · all rights reserved · www.solidangle.com