AAX SDK 2.8.0
Avid Audio Extensions Development Kit
Loading...
Searching...
No Matches
AAX_CChunkDataParser.h
Go to the documentation of this file.
1/*================================================================================================*/
2/*
3 *
4 * Copyright 2013-2015, 2023-2024 Avid Technology, Inc.
5 * All rights reserved.
6 *
7 * This file is part of the Avid AAX SDK.
8 *
9 * The AAX SDK is subject to commercial or open-source licensing.
10 *
11 * By using the AAX SDK, you agree to the terms of both the Avid AAX SDK License
12 * Agreement and Avid Privacy Policy.
13 *
14 * AAX SDK License: https://developer.avid.com/aax
15 * Privacy Policy: https://www.avid.com/legal/privacy-policy-statement
16 *
17 * Or: You may also use this code under the terms of the GPL v3 (see
18 * www.gnu.org/licenses).
19 *
20 * THE AAX SDK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
21 * EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
22 * DISCLAIMED.
23 *
24 */
25
32/*================================================================================================*/
33
34
35#pragma once
36
37#ifndef AAX_CHUNKDATAPARSER_H
38#define AAX_CHUNKDATAPARSER_H
39
40#include "AAX.h"
41#include "AAX_CString.h"
42#include <vector>
43
44//forward declarations
45struct AAX_SPlugInChunk;
46
51 const int32_t FLOAT_TYPE = 1;
52 const char FLOAT_STRING_IDENTIFIER[] = "f_";
53
54 const int32_t LONG_TYPE = 2;
55 const char LONG_STRING_IDENTIFIER[] = "l_";
56
57 const int32_t DOUBLE_TYPE = 3;
58 const char DOUBLE_STRING_IDENTIFIER[] = "d_";
59 const size_t DOUBLE_TYPE_SIZE = 8;
60 const size_t DOUBLE_TYPE_INCR = 8;
61
62 const int32_t SHORT_TYPE = 4;
63 const char SHORT_STRING_IDENTIFIER[] = "s_";
64 const size_t SHORT_TYPE_SIZE = 2;
65 const size_t SHORT_TYPE_INCR = 4; // keep life word aligned
66
67 const int32_t STRING_TYPE = 5;
68 const char STRING_STRING_IDENTIFIER[] = "r_";
69 const size_t MAX_STRINGDATA_LENGTH = 255;
70
71 const size_t DEFAULT32BIT_TYPE_SIZE = 4;
72 const size_t DEFAULT32BIT_TYPE_INCR = 4;
73
74 const size_t STRING_IDENTIFIER_SIZE = 2;
75
76 const int32_t NAME_NOT_FOUND = -1;
77 const size_t MAX_NAME_LENGTH = 255;
78 const int32_t BUILD_DATA_FAILED = -333;
79 const int32_t HEADER_SIZE = 4;
80 const int32_t VERSION_ID_1 = 0x01010101;
81}
82
128{
129 public:
132
138 void AddFloat(const char *name, float value);
139 void AddDouble(const char *name, double value);
140 void AddInt32(const char *name, int32_t value);
141 void AddInt16(const char *name, int16_t value);
142 void AddString(const char *name, AAX_CString value);
143
149 bool FindFloat(const char *name, float *value);
150 bool FindDouble(const char *name, double *value);
151 bool FindInt32(const char *name, int32_t *value);
152 bool FindInt16(const char *name, int16_t *value);
153 bool FindString(const char *name, AAX_CString *value);
154
155 bool ReplaceDouble(const char *name, double value); //SW added for fela
158 int32_t GetChunkVersion() {return mChunkVersion;}
159 bool IsEmpty();
160 void Clear();
162
165 void LoadChunk(const AAX_SPlugInChunk *chunk);
166
167 protected:
168 void WordAlign(uint32_t &index);
169 void WordAlign(int32_t &index);
170 int32_t FindName(const AAX_CString &Name);
172
180
182
184public:
186 {
187 int32_t mDataType;
189 int64_t mIntValue;
191
193 mDataType(0),
195 mIntValue(0),
197 {};
198 };
199
200 std::vector<DataValue> mDataValues;
201};
202
203#endif //AAX_CHUNKDATAPARSER_H
A generic AAX string class with similar functionality to std::string.
Various utility definitions for AAX.
Constants used by ChunkDataParser class.
Definition: AAX_CChunkDataParser.h:50
const size_t STRING_IDENTIFIER_SIZE
Definition: AAX_CChunkDataParser.h:74
const int32_t LONG_TYPE
Definition: AAX_CChunkDataParser.h:54
const char STRING_STRING_IDENTIFIER[]
Definition: AAX_CChunkDataParser.h:68
const int32_t DOUBLE_TYPE
Definition: AAX_CChunkDataParser.h:57
const int32_t HEADER_SIZE
Definition: AAX_CChunkDataParser.h:79
const size_t DOUBLE_TYPE_SIZE
Definition: AAX_CChunkDataParser.h:59
const int32_t NAME_NOT_FOUND
Definition: AAX_CChunkDataParser.h:76
const int32_t SHORT_TYPE
Definition: AAX_CChunkDataParser.h:62
const char SHORT_STRING_IDENTIFIER[]
Definition: AAX_CChunkDataParser.h:63
const size_t SHORT_TYPE_SIZE
Definition: AAX_CChunkDataParser.h:64
const size_t DEFAULT32BIT_TYPE_INCR
Definition: AAX_CChunkDataParser.h:72
const size_t MAX_STRINGDATA_LENGTH
Definition: AAX_CChunkDataParser.h:69
const char FLOAT_STRING_IDENTIFIER[]
Definition: AAX_CChunkDataParser.h:52
const size_t MAX_NAME_LENGTH
Definition: AAX_CChunkDataParser.h:77
const char DOUBLE_STRING_IDENTIFIER[]
Definition: AAX_CChunkDataParser.h:58
const size_t SHORT_TYPE_INCR
Definition: AAX_CChunkDataParser.h:65
const int32_t STRING_TYPE
Definition: AAX_CChunkDataParser.h:67
const size_t DOUBLE_TYPE_INCR
Definition: AAX_CChunkDataParser.h:60
const int32_t BUILD_DATA_FAILED
Definition: AAX_CChunkDataParser.h:78
const int32_t FLOAT_TYPE
Definition: AAX_CChunkDataParser.h:51
const int32_t VERSION_ID_1
Definition: AAX_CChunkDataParser.h:80
const size_t DEFAULT32BIT_TYPE_SIZE
Definition: AAX_CChunkDataParser.h:71
const char LONG_STRING_IDENTIFIER[]
Definition: AAX_CChunkDataParser.h:55
Plug-in chunk header + data.
Definition: AAX.h:549
Parser utility for plugin chunks.
Definition: AAX_CChunkDataParser.h:128
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:179
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:183
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:181
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:158
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:200
Definition: AAX_CChunkDataParser.h:186
AAX_CString mStringValue
used if this DataValue is a string
Definition: AAX_CChunkDataParser.h:190
int32_t mDataType
Definition: AAX_CChunkDataParser.h:187
AAX_CString mDataName
name of the stored data
Definition: AAX_CChunkDataParser.h:188
DataValue()
Definition: AAX_CChunkDataParser.h:192
int64_t mIntValue
used if this DataValue is not a string
Definition: AAX_CChunkDataParser.h:189
A generic AAX string class with similar functionality to std::string
Definition: AAX_CString.h:57