Changeset 359

Show
Ignore:
Timestamp:
12/30/06 04:04:53 (17 years ago)
Author:
wagi
Message:

serializing interface fixed for 64 bit machines

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/libfreebob/src/bebob/bebob_serialize.cpp

    r358 r359  
    6868bool 
    6969BeBoB::XMLSerialize::write( const char* pMemberName, 
    70                             byte_t value ) 
    71 
    72     return write( pMemberName, static_cast<quadlet_t>( value ) ); 
    73 
    74  
    75 bool 
    76 BeBoB::XMLSerialize::write( const char* pMemberName, 
    77                             quadlet_t value ) 
     70                            long long value ) 
    7871 
    7972{ 
     
    9285    xmlpp::Element* pElem = pNode->add_child( tokens[tokens.size() - 1] ); 
    9386    char* valstr; 
    94     asprintf( &valstr, "%d", value ); 
     87    asprintf( &valstr, "%lld", value ); 
    9588    pElem->set_child_text( valstr ); 
    9689    free( valstr ); 
     
    162155bool 
    163156BeBoB::XMLDeserialize::read( const char* pMemberName, 
    164                              byte_t& value ) 
    165 
    166     xmlpp::Node* pNode = m_parser.get_document()->get_root_node(); 
    167  
    168     xmlpp::NodeSet nodeSet = pNode->find( pMemberName ); 
    169     for ( xmlpp::NodeSet::iterator it = nodeSet.begin(); 
    170           it != nodeSet.end(); 
    171           ++it ) 
    172     { 
    173         const xmlpp::Element* pElement = dynamic_cast< const xmlpp::Element* >( *it ); 
    174         if ( pElement && pElement->has_child_text() ) { 
    175             char* tail; 
    176             value = strtol( pElement->get_child_text()->get_content().c_str(), &tail, 0 ); 
    177             return true; 
    178         } 
    179         return false; 
    180     } 
    181  
    182     return false; 
    183 
    184  
    185 bool 
    186 BeBoB::XMLDeserialize::read( const char* pMemberName, 
    187                              quadlet_t& value ) 
     157                             long long& value ) 
    188158 
    189159{ 
     
    198168        if ( pElement && pElement->has_child_text() ) { 
    199169            char* tail; 
    200             value = strtol( pElement->get_child_text()->get_content().c_str(), &tail, 0 ); 
     170            value = strtoll( pElement->get_child_text()->get_content().c_str(), &tail, 0 ); 
    201171            return true; 
    202172        } 
  • trunk/libfreebob/src/bebob/bebob_serialize.h

    r358 r359  
    2222#define bebob_serialize_h 
    2323 
    24 #include <libraw1394/raw1394.h> 
    2524#include <libxml++/libxml++.h> 
    2625 
     
    3433 
    3534        virtual bool write( const char* pMemberName, 
    36                             byte_t value ) = 0; 
    37         virtual bool write( const char* pMemberName, 
    38                             quadlet_t value ) = 0; 
     35                            long long value ) = 0; 
    3936 
    4037        template <typename T>  bool write( const char* pMemberName, T value ); 
     
    4744 
    4845        virtual bool read( const char* pMemberName, 
    49                            byte_t& value ) = 0; 
    50         virtual bool read( const char* pMemberName, 
    51                            quadlet_t& value ) = 0; 
     46                           long long& value ) = 0; 
    5247 
    5348        template <typename T> bool read( const char* pMemberName, T& value ); 
     
    6055 
    6156        virtual bool write( const char* pMemberName, 
    62                             byte_t value ); 
    63         virtual bool write( const char* pMemberName, 
    64                             quadlet_t value ); 
     57                            long long value ); 
    6558    private: 
    6659        Glib::ustring    m_filepath; 
     
    7669 
    7770        virtual bool read( const char* pMemberName, 
    78                            byte_t& value ); 
    79         virtual bool read( const char* pMemberName, 
    80                            quadlet_t& value ); 
     71                           long long& value ); 
    8172    private: 
    8273        Glib::ustring    m_filepath; 
     
    8980    template <typename T> bool IOSerialize::write( const char* pMemberName, T value ) 
    9081    { 
    91         return write( pMemberName, static_cast<quadlet_t>( value ) ); 
     82        return write( pMemberName, static_cast<long long>( value ) ); 
    9283    } 
    9384 
    9485    template <typename T> bool IODeserialize::read( const char* pMemberName, T& value ) 
    9586    { 
    96         return read( pMemberName, reinterpret_cast<quadlet_t&>( value ) ); 
     87        long long tmp; 
     88        bool result = read( pMemberName, tmp ); 
     89        value = static_cast<T>( tmp ); 
     90        return result; 
    9791    } 
    9892} 
  • trunk/libfreebob/src/bebob/bebob_unittests.cpp

    r358 r359  
    2020 
    2121#include "bebob_serialize.h" 
     22#include <libraw1394/raw1394.h> 
    2223 
    2324#include <stdio.h> 
     
    262263} 
    263264 
    264 bool 
     265static bool 
     266testU2execute( U2_SerializeMe& sme1 ) 
     267
     268    { 
     269        XMLSerialize xmlSerialize( "unittest_u2.xml" ); 
     270        if ( !sme1.serialize( xmlSerialize ) ) { 
     271            printf( "(serializing failed)" ); 
     272            return false; 
     273        } 
     274    } 
     275 
     276    U2_SerializeMe sme2; 
     277 
     278    { 
     279        XMLDeserialize xmlDeserialize( "unittest_u2.xml" ); 
     280        if ( !sme2.deserialize( xmlDeserialize ) ) { 
     281            printf( "(deserializing failed)" ); 
     282            return false; 
     283        } 
     284    } 
     285 
     286    bool result = sme1 == sme2; 
     287    if ( !result ) { 
     288        printf( "(wrong values)" ); 
     289    } 
     290 
     291    return result; 
     292
     293 
     294static bool 
    265295testU2() 
    266296{ 
     
    274304    sme1.m_unsigned_int = 5; 
    275305 
    276     { 
    277         XMLSerialize xmlSerialize( "unittest_u2.xml" ); 
    278         if ( !sme1.serialize( xmlSerialize ) ) { 
    279             printf( "(serializing failed)" ); 
    280             return false; 
    281         } 
    282     } 
    283  
    284     U2_SerializeMe sme2; 
    285  
    286     { 
    287         XMLDeserialize xmlDeserialize( "unittest_u2.xml" ); 
    288         if ( !sme2.deserialize( xmlDeserialize ) ) { 
    289             printf( "(deserializing failed)" ); 
    290             return false; 
    291         } 
    292     } 
    293  
    294     bool result = sme1 == sme2; 
    295     if ( !result ) { 
    296         printf( "(wrong values)" ); 
    297     } 
     306    bool result; 
     307    result  = testU2execute( sme1 ); 
     308 
     309    sme1.m_char = 0xff; 
     310    sme1.m_unsigned_char = 0xff; 
     311    sme1.m_short = 0xffff; 
     312    sme1.m_unsigned_short = 0xffff; 
     313    sme1.m_int = 0xffffffff; 
     314    sme1.m_unsigned_int = 0xffffffff; 
     315 
     316    result &= testU2execute( sme1 ); 
     317 
    298318    return result; 
    299319}