62 char* p = (
char*) pData;
65 int* piNumKeys = (
int*) p;
75 for (
int i=0; i<*piNumKeys; i++)
78 piDatatype = (
int*) p;
106 pdValue = (
double*) p;
115 p += sValue.length()+1;
125 iBytesRead = (size_t) (p - (
char*)pData);
132 std::for_each(m_mKeys.begin(), m_mKeys.end(), deleteMetadataKeyPair);
138 return m_mKeys.empty();
142 return (findKey(sKey) !=
NULL);
147 for (KeyMapConstIterator cit=m_mKeys.begin(); cit!=m_mKeys.end(); ++cit)
148 vsKeyList.push_back(cit->first);
158 assert( pKey !=
NULL );
160 if (pKey ==
NULL)
return "";
162 std::stringstream ss;
165 return (dynamic_cast<const DAFFMetadataKeyBool*>(pKey)->m_bValue ?
"yes" :
"no");
168 ss << dynamic_cast<const DAFFMetadataKeyInt*>(pKey)->m_iValue;
172 ss << dynamic_cast<const DAFFMetadataKeyFloat*>(pKey)->m_dValue;
186 assert( pKey !=
NULL );
187 assert( pKey->
m_iType == DAFF_BOOL );
189 if ((pKey ==
NULL) || (pKey->
m_iType != DAFF_BOOL))
return 0;
195 assert( pKey !=
NULL );
196 assert( pKey->
m_iType == DAFF_INT );
198 if ((pKey ==
NULL) || (pKey->
m_iType != DAFF_INT))
return 0;
204 assert( pKey !=
NULL );
205 assert( (pKey->
m_iType == DAFF_FLOAT) || (pKey->
m_iType == DAFF_INT) );
207 if (pKey ==
NULL)
return 0;
208 if ((pKey->
m_iType != DAFF_FLOAT) && (pKey->
m_iType != DAFF_INT))
return 0;
210 if (pKey->
m_iType == DAFF_FLOAT)
217 std::stringstream ss;
218 for (KeyMapConstIterator cit=m_mKeys.begin(); cit!=m_mKeys.end(); ++cit) {
219 ss << cit->first <<
" = " << getKeyString(cit->first) << std::endl;
225 void DAFFMetadataImpl::insertKey(
const std::string& sName,
DAFFMetadataKey* pKey) {
227 std::string sKeyUpper(sName);
228 std::transform(sKeyUpper.begin(), sKeyUpper.end(), sKeyUpper.begin(), (int(*)(int)) ::toupper);
230 m_mKeys[sKeyUpper] = pKey;
233 const DAFFMetadataKey* DAFFMetadataImpl::findKey(
const std::string& sKey)
const {
235 if (sKey.empty())
return NULL;
238 std::string sKeyUpper(sKey);
239 std::transform(sKeyUpper.begin(), sKeyUpper.end(), sKeyUpper.begin(), (int(*)(int)) ::toupper);
242 KeyMapConstIterator cit = m_mKeys.find(sKeyUpper);
243 return (cit == m_mKeys.end() ?
NULL : cit->second);
246 void DAFFMetadataImpl::deleteMetadataKeyPair(
const KeyPair& pKeyPair) {
247 delete pKeyPair.second;
Given metadata type is unknown, use bool, int, double, string.
void(* le2se_4byte)(void *src, size_t count)
void(* le2se_8byte)(void *src, size_t count)