CString FileIO::getFixedString() { struct typ_prefixByte { unsigned int len : 7; unsigned int encoded : 1; }; unsigned long finalLen = 0; unsigned char result = getUByte(); typ_prefixByte prefix = *((typ_prefixByte*)(&result)); finalLen = finalLen | (unsigned long)prefix.len; int bitshift = 0; while (prefix.encoded) { bitshift += 7; result = getUByte(); prefix = *((typ_prefixByte*)(&result)); finalLen = finalLen | ((unsigned long)prefix.len) << bitshift; } char * string = getByteArray(finalLen); char * tmpString = new char [finalLen + 1]; memcpy(tmpString, string, finalLen); tmpString[finalLen] = '\0'; CString finalString(tmpString); delete [] tmpString; delete [] string; return finalString; }
int Hdf::compare(unsigned char v2) const { unsigned char v1 = getUByte(); if (v1 == v2) return 0; return v1 > v2 ? 1 : -1; }
unsigned char PvObject::getUByte() const { std::string key = PyPvDataUtility::getValueOrSingleFieldName(pvStructurePtr); return getUByte(key); }