AAX SDK  2.4.1
Avid Audio Extensions Development Kit
AAX_CChunkDataParser.h
Go to the documentation of this file.
1 /*================================================================================================*/
2 /*
3  *
4  * Copyright 2013-2015 by Avid Technology, Inc.
5  * All rights reserved.
6  *
7  * CONFIDENTIAL: This document contains confidential information. Do not
8  * read or examine this document unless you are an Avid Technology employee
9  * or have signed a non-disclosure agreement with Avid Technology which protects
10  * the confidentiality of this document. DO NOT DISCLOSE ANY INFORMATION
11  * CONTAINED IN THIS DOCUMENT TO ANY THIRD-PARTY WITHOUT THE PRIOR WRITTEN CONSENT
12  * OF Avid Technology, INC.
13  *
14  */
15 
22 /*================================================================================================*/
23 
24 
25 #pragma once
26 
27 #include "AAX.h"
28 #include "AAX_CString.h"
29 #include <vector>
30 
31 #ifndef AAX_CHUNKDATAPARSER_H
32 #define AAX_CHUNKDATAPARSER_H
33 
34 //forward declarations
35 struct AAX_SPlugInChunk;
36 
41  const int32_t FLOAT_TYPE = 1;
42  const char FLOAT_STRING_IDENTIFIER[] = "f_";
43 
44  const int32_t LONG_TYPE = 2;
45  const char LONG_STRING_IDENTIFIER[] = "l_";
46 
47  const int32_t DOUBLE_TYPE = 3;
48  const char DOUBLE_STRING_IDENTIFIER[] = "d_";
49  const size_t DOUBLE_TYPE_SIZE = 8;
50  const size_t DOUBLE_TYPE_INCR = 8;
51 
52  const int32_t SHORT_TYPE = 4;
53  const char SHORT_STRING_IDENTIFIER[] = "s_";
54  const size_t SHORT_TYPE_SIZE = 2;
55  const size_t SHORT_TYPE_INCR = 4; // keep life word aligned
56 
57  const int32_t STRING_TYPE = 5;
58  const char STRING_STRING_IDENTIFIER[] = "r_";
59  const size_t MAX_STRINGDATA_LENGTH = 255;
60 
61  const size_t DEFAULT32BIT_TYPE_SIZE = 4;
62  const size_t DEFAULT32BIT_TYPE_INCR = 4;
63 
64  const size_t STRING_IDENTIFIER_SIZE = 2;
65 
66  const int32_t NAME_NOT_FOUND = -1;
67  const size_t MAX_NAME_LENGTH = 255;
68  const int32_t BUILD_DATA_FAILED = -333;
69  const int32_t HEADER_SIZE = 4;
70  const int32_t VERSION_ID_1 = 0x01010101;
71 }
72 
118 {
119  public:
122 
128  void AddFloat(const char *name, float value);
129  void AddDouble(const char *name, double value);
130  void AddInt32(const char *name, int32_t value);
131  void AddInt16(const char *name, int16_t value);
132  void AddString(const char *name, AAX_CString value);
133 
139  bool FindFloat(const char *name, float *value);
140  bool FindDouble(const char *name, double *value);
141  bool FindInt32(const char *name, int32_t *value);
142  bool FindInt16(const char *name, int16_t *value);
143  bool FindString(const char *name, AAX_CString *value);
144 
145  bool ReplaceDouble(const char *name, double value); //SW added for fela
146  int32_t GetChunkData(AAX_SPlugInChunk *chunk);
147  int32_t GetChunkDataSize();
148  int32_t GetChunkVersion() {return mChunkVersion;}
149  bool IsEmpty();
150  void Clear();
152 
155  void LoadChunk(const AAX_SPlugInChunk *chunk);
156 
157  protected:
158  void WordAlign(uint32_t &index);
159  void WordAlign(int32_t &index);
160  int32_t FindName(const AAX_CString &Name);
162 
170 
171  char *mChunkData;
172 
173  int32_t mChunkVersion;
174 public:
175  struct DataValue
176  {
177  int32_t mDataType;
179  int64_t mIntValue;
181 
183  mDataType(0),
185  mIntValue(0),
187  {};
188  };
189 
190  std::vector<DataValue> mDataValues;
191 };
192 
193 #endif //AAX_CHUNKDATAPARSER_H
Various utility definitions for AAX.
A generic AAX string class with similar functionality to std::string.
Constants used by ChunkDataParser class.
Definition: AAX_CChunkDataParser.h:40
const size_t STRING_IDENTIFIER_SIZE
Definition: AAX_CChunkDataParser.h:64
const int32_t LONG_TYPE
Definition: AAX_CChunkDataParser.h:44
const char STRING_STRING_IDENTIFIER[]
Definition: AAX_CChunkDataParser.h:58
const int32_t DOUBLE_TYPE
Definition: AAX_CChunkDataParser.h:47
const int32_t HEADER_SIZE
Definition: AAX_CChunkDataParser.h:69
const size_t DOUBLE_TYPE_SIZE
Definition: AAX_CChunkDataParser.h:49
const int32_t NAME_NOT_FOUND
Definition: AAX_CChunkDataParser.h:66
const int32_t SHORT_TYPE
Definition: AAX_CChunkDataParser.h:52
const char SHORT_STRING_IDENTIFIER[]
Definition: AAX_CChunkDataParser.h:53
const size_t SHORT_TYPE_SIZE
Definition: AAX_CChunkDataParser.h:54
const size_t DEFAULT32BIT_TYPE_INCR
Definition: AAX_CChunkDataParser.h:62
const size_t MAX_STRINGDATA_LENGTH
Definition: AAX_CChunkDataParser.h:59
const char FLOAT_STRING_IDENTIFIER[]
Definition: AAX_CChunkDataParser.h:42
const size_t MAX_NAME_LENGTH
Definition: AAX_CChunkDataParser.h:67
const char DOUBLE_STRING_IDENTIFIER[]
Definition: AAX_CChunkDataParser.h:48
const size_t SHORT_TYPE_INCR
Definition: AAX_CChunkDataParser.h:55
const int32_t STRING_TYPE
Definition: AAX_CChunkDataParser.h:57
const size_t DOUBLE_TYPE_INCR
Definition: AAX_CChunkDataParser.h:50
const int32_t BUILD_DATA_FAILED
Definition: AAX_CChunkDataParser.h:68
const int32_t FLOAT_TYPE
Definition: AAX_CChunkDataParser.h:41
const int32_t VERSION_ID_1
Definition: AAX_CChunkDataParser.h:70
const size_t DEFAULT32BIT_TYPE_SIZE
Definition: AAX_CChunkDataParser.h:61
const char LONG_STRING_IDENTIFIER[]
Definition: AAX_CChunkDataParser.h:45
Plug-in chunk header + data.
Definition: AAX.h:537
Parser utility for plugin chunks.
Definition: AAX_CChunkDataParser.h:118
bool FindFloat(const char *name, float *value)
CALL: Finds some data of type float with name and value in the current chunk.
void AddInt16(const char *name, int16_t value)
CALL: See AddFloat()
void LoadChunk(const AAX_SPlugInChunk *chunk)
Sets current chunk to data in chunk parameter.
void AddDouble(const char *name, double value)
CALL: See AddFloat()
int32_t mLastFoundIndex
The last index found in the chunk.
Definition: AAX_CChunkDataParser.h:169
bool FindString(const char *name, AAX_CString *value)
virtual ~AAX_CChunkDataParser()
void Clear()
Resets chunk.
int32_t mChunkVersion
Equal to fVersion from the chunk header. Equal to -1 if no chunk is loaded.
Definition: AAX_CChunkDataParser.h:173
void AddInt32(const char *name, int32_t value)
CALL: See AddFloat()
int32_t FindName(const AAX_CString &Name)
used by public Find methods
char * mChunkData
Definition: AAX_CChunkDataParser.h:171
int32_t GetChunkData(AAX_SPlugInChunk *chunk)
CALL: Fills passed in chunk with data from current chunk; returns 0 if successful.
int32_t GetChunkVersion()
CALL: Lists fVersion in chunk header for convenience.
Definition: AAX_CChunkDataParser.h:148
bool IsEmpty()
CALL: Returns true if no data is in the chunk.
void AddString(const char *name, AAX_CString value)
void WordAlign(int32_t &index)
sets index to 4-byte boundary
void AddFloat(const char *name, float value)
CALL: Adds some data of type float with name and value to the current chunk.
bool FindInt16(const char *name, int16_t *value)
CALL: See FindFloat()
int32_t GetChunkDataSize()
CALL: Returns size of current chunk.
bool FindDouble(const char *name, double *value)
CALL: See FindFloat()
void WordAlign(uint32_t &index)
sets index to 4-byte boundary
bool FindInt32(const char *name, int32_t *value)
CALL: See FindFloat()
bool ReplaceDouble(const char *name, double value)
std::vector< DataValue > mDataValues
Definition: AAX_CChunkDataParser.h:190
Definition: AAX_CChunkDataParser.h:176
AAX_CString mStringValue
used if this DataValue is a string
Definition: AAX_CChunkDataParser.h:180
int32_t mDataType
Definition: AAX_CChunkDataParser.h:177
AAX_CString mDataName
name of the stored data
Definition: AAX_CChunkDataParser.h:178
DataValue()
Definition: AAX_CChunkDataParser.h:182
int64_t mIntValue
used if this DataValue is not a string
Definition: AAX_CChunkDataParser.h:179
A generic AAX string class with similar functionality to std::string
Definition: AAX_CString.h:46