14 #ifndef AAXLibrary_AAX_PageTableUtilities_h
15 #define AAXLibrary_AAX_PageTableUtilities_h
26 template <
class T1,
class T2>
32 int32_t numPagesL = -1;
33 int32_t numPagesR = -1;
34 errL = inL.GetNumPages(numPagesL);
35 errR = inR.GetNumPages(numPagesR);
37 if (errL != errR || numPagesL != numPagesR) {
return false; }
40 for (int32_t i = 0; i < numPagesL; ++i)
42 int32_t numParamsL = -1;
43 int32_t numParamsR = -1;
44 errL = inL.GetNumMappedParameterIDs(i, numParamsL);
45 errR = inR.GetNumMappedParameterIDs(i, numParamsR);
47 if (errL != errR || numParamsL != numParamsR) {
return false; }
50 for (int32_t j = 0; j < numParamsL; ++j)
54 errL = inL.GetMappedParameterID(i, j, paramIdentifierL);
55 errR = inR.GetMappedParameterID(i, j, paramIdentifierR);
57 if (errL != errR || paramIdentifierL != paramIdentifierR) {
return false; }
64 template <
class T1,
class T2>
70 int32_t numParamIdentifiersL = -1;
71 int32_t numParamIdentifiersR = -1;
72 errL = inL.GetNumParametersWithNameVariations(numParamIdentifiersL);
73 errR = inR.GetNumParametersWithNameVariations(numParamIdentifiersR);
75 if (errL != errR || numParamIdentifiersL != numParamIdentifiersR) {
return false; }
78 for (int32_t i = 0; i < numParamIdentifiersL; ++i)
82 errL = inL.GetNameVariationParameterIDAtIndex(i, paramIdentifierL);
83 errL = inR.GetNameVariationParameterIDAtIndex(i, paramIdentifierR);
85 if (errL != errR || paramIdentifierL != paramIdentifierR) {
return false; }
88 int32_t numVariationsL = -1;
89 int32_t numVariationsR = -1;
90 errL = inL.GetNumNameVariationsForParameter(paramIdentifierL.
Get(), numVariationsL);
91 errL = inR.GetNumNameVariationsForParameter(paramIdentifierR.
Get(), numVariationsR);
93 if (errL != errR || numVariationsL != numVariationsR) {
return false; }
96 for (int32_t j = 0; j < numVariationsL; ++j)
102 errL = inL.GetParameterNameVariationAtIndex(paramIdentifierL.
Get(), j, nameVariationL, lengthL);
103 errR = inR.GetParameterNameVariationAtIndex(paramIdentifierR.
Get(), j, nameVariationR, lengthR);
105 if (errL != errR || lengthL != lengthR || nameVariationL != nameVariationR) {
return false; }
112 template <
class T1,
class T2>
128 int32_t curPageIndex;
129 from.GetNumPages(curPageIndex);
130 while (0 < curPageIndex--)
134 int32_t numIDsRemaining = 0;
135 from.GetNumMappedParameterIDs(curPageIndex, numIDsRemaining);
136 for (int32_t curSlotIndex = 0; 0 < numIDsRemaining; ++curSlotIndex)
139 const AAX_Result getParamResult = from.GetMappedParameterID(curPageIndex, curSlotIndex, curParam);
142 to.MapParameterID(curParam.
CString(), 0, curSlotIndex);
149 int32_t numParameterIdentifiers = 0;
150 to.ClearParameterNameVariations();
151 from.GetNumParametersWithNameVariations(numParameterIdentifiers);
152 for (int32_t curParamIndex = 0; curParamIndex < numParameterIdentifiers; ++curParamIndex)
155 from.GetNameVariationParameterIDAtIndex(curParamIndex, curParamIdentifier);
157 int32_t numNameVariations = 0;
158 from.GetNumNameVariationsForParameter(curParamIdentifier.
Get(), numNameVariations);
160 for (int32_t curNameVariationIndex = 0; curNameVariationIndex < numNameVariations; ++curNameVariationIndex)
162 int32_t curNameVariationLength;
164 from.GetParameterNameVariationAtIndex(curParamIdentifier.
Get(), curNameVariationIndex, curNameVariation, curNameVariationLength);
165 to.SetParameterNameVariation(curParamIdentifier.
Get(), curNameVariation, curNameVariationLength);
180 std::vector<std::pair<int32_t, int32_t> > foundParamMappings;
182 int32_t numPages = 0;
183 inTable.GetNumPages(numPages);
184 for (int32_t i = 0; i < numPages; ++i)
186 int32_t numIDsRemaining = 0;
187 inTable.GetNumMappedParameterIDs(i, numIDsRemaining);
188 for (int32_t curSlotIndex = 0; 0 < numIDsRemaining; ++curSlotIndex)
191 const AAX_Result getParamResult = inTable.GetMappedParameterID(i, curSlotIndex, curParam);
194 if (searchParamID == curParam)
196 foundParamMappings.push_back(std::make_pair(i, curSlotIndex));
204 return foundParamMappings;
215 for (
const auto& locationPair : paramMappings)
217 ioTable.ClearMappedParameter(locationPair.first, locationPair.second);
Various utility definitions for AAX.
const char * AAX_CParamID
Parameter identifier.
Definition: AAX.h:352
int32_t AAX_Result
Definition: AAX.h:337
A generic AAX string class with similar functionality to std::string.
@ AAX_SUCCESS
Definition: AAX_Errors.h:39
Definition: AAX_Exception.h:42
bool PageTableParameterNameVariationsAreEqual(const T1 &inL, const T2 &inR)
Definition: AAX_PageTableUtilities.h:65
bool PageTablesAreEqual(const T1 &inL, const T2 &inR)
Definition: AAX_PageTableUtilities.h:113
bool PageTableParameterMappingsAreEqual(const T1 &inL, const T2 &inR)
Definition: AAX_PageTableUtilities.h:27
void CopyPageTable(T &to, const T &from)
Definition: AAX_PageTableUtilities.h:123
std::vector< std::pair< int32_t, int32_t > > FindParameterMappingsInPageTable(const T &inTable, AAX_CParamID inParameterID)
Definition: AAX_PageTableUtilities.h:177
void ClearMappedParameterByID(T &ioTable, AAX_CParamID inParameterID)
Definition: AAX_PageTableUtilities.h:212
A generic AAX string class with similar functionality to std::string
Definition: AAX_CString.h:46
const char * CString() const
const char * Get() const AAX_OVERRIDE