11#ifndef AAXLibrary_AAX_PageTableUtilities_h
12#define AAXLibrary_AAX_PageTableUtilities_h
23 template <
class T1,
class T2>
29 int32_t numPagesL = -1;
30 int32_t numPagesR = -1;
31 errL = inL.GetNumPages(numPagesL);
32 errR = inR.GetNumPages(numPagesR);
34 if (errL != errR || numPagesL != numPagesR) {
return false; }
37 for (int32_t i = 0; i < numPagesL; ++i)
39 int32_t numParamsL = -1;
40 int32_t numParamsR = -1;
41 errL = inL.GetNumMappedParameterIDs(i, numParamsL);
42 errR = inR.GetNumMappedParameterIDs(i, numParamsR);
44 if (errL != errR || numParamsL != numParamsR) {
return false; }
47 for (int32_t j = 0; j < numParamsL; ++j)
51 errL = inL.GetMappedParameterID(i, j, paramIdentifierL);
52 errR = inR.GetMappedParameterID(i, j, paramIdentifierR);
54 if (errL != errR || paramIdentifierL != paramIdentifierR) {
return false; }
61 template <
class T1,
class T2>
67 int32_t numParamIdentifiersL = -1;
68 int32_t numParamIdentifiersR = -1;
69 errL = inL.GetNumParametersWithNameVariations(numParamIdentifiersL);
70 errR = inR.GetNumParametersWithNameVariations(numParamIdentifiersR);
72 if (errL != errR || numParamIdentifiersL != numParamIdentifiersR) {
return false; }
75 for (int32_t i = 0; i < numParamIdentifiersL; ++i)
79 errL = inL.GetNameVariationParameterIDAtIndex(i, paramIdentifierL);
80 errL = inR.GetNameVariationParameterIDAtIndex(i, paramIdentifierR);
82 if (errL != errR || paramIdentifierL != paramIdentifierR) {
return false; }
85 int32_t numVariationsL = -1;
86 int32_t numVariationsR = -1;
87 errL = inL.GetNumNameVariationsForParameter(paramIdentifierL.
Get(), numVariationsL);
88 errL = inR.GetNumNameVariationsForParameter(paramIdentifierR.
Get(), numVariationsR);
90 if (errL != errR || numVariationsL != numVariationsR) {
return false; }
93 for (int32_t j = 0; j < numVariationsL; ++j)
99 errL = inL.GetParameterNameVariationAtIndex(paramIdentifierL.
Get(), j, nameVariationL, lengthL);
100 errR = inR.GetParameterNameVariationAtIndex(paramIdentifierR.
Get(), j, nameVariationR, lengthR);
102 if (errL != errR || lengthL != lengthR || nameVariationL != nameVariationR) {
return false; }
109 template <
class T1,
class T2>
125 int32_t curPageIndex;
126 from.GetNumPages(curPageIndex);
127 while (0 < curPageIndex--)
131 int32_t numIDsRemaining = 0;
132 from.GetNumMappedParameterIDs(curPageIndex, numIDsRemaining);
133 for (int32_t curSlotIndex = 0; 0 < numIDsRemaining; ++curSlotIndex)
136 const AAX_Result getParamResult = from.GetMappedParameterID(curPageIndex, curSlotIndex, curParam);
139 to.MapParameterID(curParam.
CString(), 0, curSlotIndex);
146 int32_t numParameterIdentifiers = 0;
147 to.ClearParameterNameVariations();
148 from.GetNumParametersWithNameVariations(numParameterIdentifiers);
149 for (int32_t curParamIndex = 0; curParamIndex < numParameterIdentifiers; ++curParamIndex)
152 from.GetNameVariationParameterIDAtIndex(curParamIndex, curParamIdentifier);
154 int32_t numNameVariations = 0;
155 from.GetNumNameVariationsForParameter(curParamIdentifier.
Get(), numNameVariations);
157 for (int32_t curNameVariationIndex = 0; curNameVariationIndex < numNameVariations; ++curNameVariationIndex)
159 int32_t curNameVariationLength;
161 from.GetParameterNameVariationAtIndex(curParamIdentifier.
Get(), curNameVariationIndex, curNameVariation, curNameVariationLength);
162 to.SetParameterNameVariation(curParamIdentifier.
Get(), curNameVariation, curNameVariationLength);
177 std::vector<std::pair<int32_t, int32_t> > foundParamMappings;
179 int32_t numPages = 0;
180 inTable.GetNumPages(numPages);
181 for (int32_t i = 0; i < numPages; ++i)
183 int32_t numIDsRemaining = 0;
184 inTable.GetNumMappedParameterIDs(i, numIDsRemaining);
185 for (int32_t curSlotIndex = 0; 0 < numIDsRemaining; ++curSlotIndex)
188 const AAX_Result getParamResult = inTable.GetMappedParameterID(i, curSlotIndex, curParam);
191 if (searchParamID == curParam)
193 foundParamMappings.push_back(std::make_pair(i, curSlotIndex));
201 return foundParamMappings;
212 for (
const auto& locationPair : paramMappings)
214 ioTable.ClearMappedParameter(locationPair.first, locationPair.second);
A generic AAX string class with similar functionality to std::string.
@ AAX_SUCCESS
Definition: AAX_Errors.h:36
Various utility definitions for AAX.
const char * AAX_CParamID
Parameter identifier.
Definition: AAX.h:349
int32_t AAX_Result
Definition: AAX.h:334
Definition: AAX_EnvironmentUtilities.h:59
std::vector< std::pair< int32_t, int32_t > > FindParameterMappingsInPageTable(const T &inTable, AAX_CParamID inParameterID)
Definition: AAX_PageTableUtilities.h:174
bool PageTableParameterNameVariationsAreEqual(const T1 &inL, const T2 &inR)
Definition: AAX_PageTableUtilities.h:62
bool PageTablesAreEqual(const T1 &inL, const T2 &inR)
Definition: AAX_PageTableUtilities.h:110
bool PageTableParameterMappingsAreEqual(const T1 &inL, const T2 &inR)
Definition: AAX_PageTableUtilities.h:24
void CopyPageTable(T &to, const T &from)
Definition: AAX_PageTableUtilities.h:120
void ClearMappedParameterByID(T &ioTable, AAX_CParamID inParameterID)
Definition: AAX_PageTableUtilities.h:209
A generic AAX string class with similar functionality to std::string
Definition: AAX_CString.h:44
const char * CString() const
const char * Get() const AAX_OVERRIDE