Changeset 361
- Timestamp:
- 12/30/06 12:27:46 (17 years ago)
- Files:
-
- trunk/libfreebob/src/bebob/bebob_serialize.cpp (modified) (2 diffs)
- trunk/libfreebob/src/bebob/bebob_serialize.h (modified) (4 diffs)
- trunk/libfreebob/src/bebob/bebob_unittests.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/libfreebob/src/bebob/bebob_serialize.cpp
r359 r361 92 92 } 93 93 94 bool 95 BeBoB::XMLSerialize::write( const char* pMemberName, 96 Glib::ustring str) 97 { 98 vector<string> tokens; 99 string memberName( pMemberName ); 100 tokenize( memberName, tokens, "/" ); 101 102 if ( tokens.size() == 0 ) { 103 return false; 104 } 105 106 xmlpp::Node* pNode = m_doc.get_root_node(); 107 pNode = getNodePath( pNode, tokens ); 108 109 // element to be added 110 xmlpp::Element* pElem = pNode->add_child( tokens[tokens.size() - 1] ); 111 pElem->set_child_text( str ); 112 113 return true; 114 } 94 115 95 116 xmlpp::Node* … … 177 198 } 178 199 200 bool 201 BeBoB::XMLDeserialize::read( const char* pMemberName, 202 Glib::ustring& str ) 203 { 204 xmlpp::Node* pNode = m_parser.get_document()->get_root_node(); 205 206 xmlpp::NodeSet nodeSet = pNode->find( pMemberName ); 207 for ( xmlpp::NodeSet::iterator it = nodeSet.begin(); 208 it != nodeSet.end(); 209 ++it ) 210 { 211 const xmlpp::Element* pElement = dynamic_cast< const xmlpp::Element* >( *it ); 212 if ( pElement && pElement->has_child_text() ) { 213 str = pElement->get_child_text()->get_content(); 214 return true; 215 } 216 return false; 217 } 218 219 return false; 220 } trunk/libfreebob/src/bebob/bebob_serialize.h
r359 r361 34 34 virtual bool write( const char* pMemberName, 35 35 long long value ) = 0; 36 virtual bool write( const char* pMemberName, 37 Glib::ustring str) = 0; 36 38 37 39 template <typename T> bool write( const char* pMemberName, T value ); … … 45 47 virtual bool read( const char* pMemberName, 46 48 long long& value ) = 0; 49 virtual bool read( const char* pMemberName, 50 Glib::ustring& str ) = 0; 47 51 48 52 template <typename T> bool read( const char* pMemberName, T& value ); … … 56 60 virtual bool write( const char* pMemberName, 57 61 long long value ); 62 virtual bool write( const char* pMemberName, 63 Glib::ustring str); 58 64 private: 59 65 Glib::ustring m_filepath; … … 70 76 virtual bool read( const char* pMemberName, 71 77 long long& value ); 78 virtual bool read( const char* pMemberName, 79 Glib::ustring& str ); 72 80 private: 73 81 Glib::ustring m_filepath; trunk/libfreebob/src/bebob/bebob_unittests.cpp
r359 r361 319 319 } 320 320 321 /////////////////////////////////////// 322 323 class U3_SerializeMe { 324 public: 325 U3_SerializeMe(); 326 ~U3_SerializeMe(); 327 328 bool operator == ( const U3_SerializeMe& rhs ); 329 330 bool serialize( IOSerialize& ser ); 331 bool deserialize( IODeserialize& deser ); 332 333 const char* m_pString; 334 }; 335 336 U3_SerializeMe::U3_SerializeMe() 337 : m_pString( 0 ) 338 { 339 } 340 341 342 U3_SerializeMe::~U3_SerializeMe() 343 { 344 delete m_pString; 345 } 346 //-------------------------- 347 348 bool 349 U3_SerializeMe::operator == ( const U3_SerializeMe& rhs ) 350 { 351 return strcmp( m_pString, rhs.m_pString ) == 0; 352 } 353 354 bool 355 U3_SerializeMe::serialize( IOSerialize& ser ) 356 { 357 bool result; 358 result = ser.write( "m_pString", Glib::ustring( m_pString ) ); 359 return result; 360 } 361 362 bool 363 U3_SerializeMe::deserialize( IODeserialize& deser ) 364 { 365 bool result; 366 Glib::ustring str; 367 result = deser.read( "m_pString", str ); 368 369 m_pString = strdup( str.c_str() ); 370 371 return result; 372 } 373 374 static bool 375 testU3() 376 { 377 U3_SerializeMe sme1; 378 sme1.m_pString = strdup( "fancy string" ); 379 380 { 381 XMLSerialize xmlSerialize( "unittest_u3.xml" ); 382 if ( !sme1.serialize( xmlSerialize ) ) { 383 printf( "(serializing failed)" ); 384 return false; 385 } 386 } 387 388 U3_SerializeMe sme2; 389 390 { 391 XMLDeserialize xmlDeserialize( "unittest_u3.xml" ); 392 if ( !sme2.deserialize( xmlDeserialize ) ) { 393 printf( "(deserializing failed)" ); 394 return false; 395 } 396 } 397 398 bool result = sme1 == sme2; 399 if ( !result ) { 400 printf( "(wrong values)" ); 401 } 402 403 return result; 404 } 405 321 406 ///////////////////////////////////// 322 407 ///////////////////////////////////// … … 334 419 { "serialize 1", testU1 }, 335 420 { "serialize 2", testU2 }, 421 { "serialize 3", testU3 }, 336 422 }; 337 423