std::string UniformBlock::toString() const { std::ostringstream os; for (int i = 0; i < mNumElems; ++i) { forEachEntry([this, &os, i](const DataEntry& e) mutable { os << e.Name << ": "; for (int j = 0; j < e.Size / sizeof(float); j++) { char* d = ((char*) mUniformData) + e.Offset + (i * mElemSize); os << " "; if (e.IsInt) { int* ip = ((int*) d) + j; os << *ip; } else { float* fp = ((float*) d) + j; os << *fp; } } os << ';' << std::endl; }); } return os.str(); }
/*-----------------------------------------------------------HashMap::iterate-+ | | +----------------------------------------------------------------------------*/ void HashMap::iterate( void (forEachEntry)(MapItem * pItm, void * arg), void * arg ) { for (int i=0; i < m_capacity; ++i) { for (MapItem * pItm = m_table[i]; pItm; pItm = pItm->m_next) { forEachEntry(pItm, arg); } } }