24#ifndef AAXLibrary_AAX_PageTableUtilities_h
25#define AAXLibrary_AAX_PageTableUtilities_h
36 template <
class T1,
class T2>
42 int32_t numPagesL = -1;
43 int32_t numPagesR = -1;
44 errL = inL.GetNumPages(numPagesL);
45 errR = inR.GetNumPages(numPagesR);
47 if (errL != errR || numPagesL != numPagesR) {
return false; }
50 for (int32_t i = 0; i < numPagesL; ++i)
52 int32_t numParamsL = -1;
53 int32_t numParamsR = -1;
54 errL = inL.GetNumMappedParameterIDs(i, numParamsL);
55 errR = inR.GetNumMappedParameterIDs(i, numParamsR);
57 if (errL != errR || numParamsL != numParamsR) {
return false; }
60 for (int32_t j = 0; j < numParamsL; ++j)
64 errL = inL.GetMappedParameterID(i, j, paramIdentifierL);
65 errR = inR.GetMappedParameterID(i, j, paramIdentifierR);
67 if (errL != errR || paramIdentifierL != paramIdentifierR) {
return false; }
74 template <
class T1,
class T2>
80 int32_t numParamIdentifiersL = -1;
81 int32_t numParamIdentifiersR = -1;
82 errL = inL.GetNumParametersWithNameVariations(numParamIdentifiersL);
83 errR = inR.GetNumParametersWithNameVariations(numParamIdentifiersR);
85 if (errL != errR || numParamIdentifiersL != numParamIdentifiersR) {
return false; }
88 for (int32_t i = 0; i < numParamIdentifiersL; ++i)
92 errL = inL.GetNameVariationParameterIDAtIndex(i, paramIdentifierL);
93 errL = inR.GetNameVariationParameterIDAtIndex(i, paramIdentifierR);
95 if (errL != errR || paramIdentifierL != paramIdentifierR) {
return false; }
98 int32_t numVariationsL = -1;
99 int32_t numVariationsR = -1;
100 errL = inL.GetNumNameVariationsForParameter(paramIdentifierL.
Get(), numVariationsL);
101 errL = inR.GetNumNameVariationsForParameter(paramIdentifierR.
Get(), numVariationsR);
103 if (errL != errR || numVariationsL != numVariationsR) {
return false; }
106 for (int32_t j = 0; j < numVariationsL; ++j)
112 errL = inL.GetParameterNameVariationAtIndex(paramIdentifierL.
Get(), j, nameVariationL, lengthL);
113 errR = inR.GetParameterNameVariationAtIndex(paramIdentifierR.
Get(), j, nameVariationR, lengthR);
115 if (errL != errR || lengthL != lengthR || nameVariationL != nameVariationR) {
return false; }
122 template <
class T1,
class T2>
138 int32_t curPageIndex;
139 from.GetNumPages(curPageIndex);
140 while (0 < curPageIndex--)
144 int32_t numIDsRemaining = 0;
145 from.GetNumMappedParameterIDs(curPageIndex, numIDsRemaining);
146 for (int32_t curSlotIndex = 0; 0 < numIDsRemaining; ++curSlotIndex)
149 const AAX_Result getParamResult = from.GetMappedParameterID(curPageIndex, curSlotIndex, curParam);
152 to.MapParameterID(curParam.
CString(), 0, curSlotIndex);
159 int32_t numParameterIdentifiers = 0;
160 to.ClearParameterNameVariations();
161 from.GetNumParametersWithNameVariations(numParameterIdentifiers);
162 for (int32_t curParamIndex = 0; curParamIndex < numParameterIdentifiers; ++curParamIndex)
165 from.GetNameVariationParameterIDAtIndex(curParamIndex, curParamIdentifier);
167 int32_t numNameVariations = 0;
168 from.GetNumNameVariationsForParameter(curParamIdentifier.
Get(), numNameVariations);
170 for (int32_t curNameVariationIndex = 0; curNameVariationIndex < numNameVariations; ++curNameVariationIndex)
172 int32_t curNameVariationLength;
174 from.GetParameterNameVariationAtIndex(curParamIdentifier.
Get(), curNameVariationIndex, curNameVariation, curNameVariationLength);
175 to.SetParameterNameVariation(curParamIdentifier.
Get(), curNameVariation, curNameVariationLength);
190 std::vector<std::pair<int32_t, int32_t> > foundParamMappings;
192 int32_t numPages = 0;
193 inTable.GetNumPages(numPages);
194 for (int32_t i = 0; i < numPages; ++i)
196 int32_t numIDsRemaining = 0;
197 inTable.GetNumMappedParameterIDs(i, numIDsRemaining);
198 for (int32_t curSlotIndex = 0; 0 < numIDsRemaining; ++curSlotIndex)
201 const AAX_Result getParamResult = inTable.GetMappedParameterID(i, curSlotIndex, curParam);
204 if (searchParamID == curParam)
206 foundParamMappings.push_back(std::make_pair(i, curSlotIndex));
214 return foundParamMappings;
225 for (
const auto& locationPair : paramMappings)
227 ioTable.ClearMappedParameter(locationPair.first, locationPair.second);
A generic AAX string class with similar functionality to std::string.
@ AAX_SUCCESS
Definition: AAX_Errors.h:49
Various utility definitions for AAX.
const char * AAX_CParamID
Parameter identifier.
Definition: AAX.h:362
int32_t AAX_Result
Definition: AAX.h:347
Definition: AAX_EnvironmentUtilities.h:72
std::vector< std::pair< int32_t, int32_t > > FindParameterMappingsInPageTable(const T &inTable, AAX_CParamID inParameterID)
Definition: AAX_PageTableUtilities.h:187
bool PageTableParameterNameVariationsAreEqual(const T1 &inL, const T2 &inR)
Definition: AAX_PageTableUtilities.h:75
bool PageTablesAreEqual(const T1 &inL, const T2 &inR)
Definition: AAX_PageTableUtilities.h:123
bool PageTableParameterMappingsAreEqual(const T1 &inL, const T2 &inR)
Definition: AAX_PageTableUtilities.h:37
void CopyPageTable(T &to, const T &from)
Definition: AAX_PageTableUtilities.h:133
void ClearMappedParameterByID(T &ioTable, AAX_CParamID inParameterID)
Definition: AAX_PageTableUtilities.h:222
A generic AAX string class with similar functionality to std::string
Definition: AAX_CString.h:57
const char * CString() const
const char * Get() const AAX_OVERRIDE