Changeset 156

Show
Ignore:
Timestamp:
07/07/08 17:09:37 (6 months ago)
Author:
zork
Message:

added store table member index needed for xml streams

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/dba/dba/storeable.cpp

    r20 r156  
    4141//==================== MemberEntryBase ================== 
    4242 
    43 MemberEntryBase::MemberEntryBase(const char* pMemberName, int pMemberOffset) 
     43MemberEntryBase::MemberEntryBase(int pMemberTableIndex, const char* pMemberName, int pMemberOffset) 
    4444  : mMemberName(pMemberName), 
    45     mMemberOffset(pMemberOffset) 
     45    mMemberOffset(pMemberOffset), 
     46    mMemberTableIndex(pMemberTableIndex) 
    4647{}; 
    4748 
     
    5051  mMemberOffset = pNewOffset; 
    5152}; 
     53 
     54void  
     55MemberEntryBase::setMemberTableIndex(int pIndex) { 
     56  mMemberTableIndex = pIndex; 
     57}; 
     58 
    5259 
    5360int  
     
    6168}; 
    6269//==================== StoreTableMember ================== 
    63 StoreTableMember::StoreTableMember(StoreTable* pOwner, const char* pMemberName, int pMemberOffset, StoreableFilterBase* pFilter, int pDatabaseType)  
    64   : MemberEntryBase(pMemberName,pMemberOffset), 
     70StoreTableMember::StoreTableMember(int pIndex, StoreTable* pOwner, const char* pMemberName, int pMemberOffset, StoreableFilterBase* pFilter, int pDatabaseType)  
     71  : MemberEntryBase(pIndex, pMemberName, pMemberOffset), 
    6572    mFilter(pFilter), 
    6673    mFilterOwner(true), 
     
    105112//==================== ColMemberEntry ================== 
    106113 
    107 ColMemberEntry::ColMemberEntry(ColTable* pOwner, const char* pMemberName, int pMemberOffset, CollectionFilterBase* pFilter, const char* pFKeyName) 
    108   : MemberEntryBase(pMemberName, pMemberOffset), 
     114ColMemberEntry::ColMemberEntry(int pIndex, ColTable* pOwner, const char* pMemberName, int pMemberOffset, CollectionFilterBase* pFilter, const char* pFKeyName) 
     115  : MemberEntryBase(pIndex, pMemberName, pMemberOffset), 
    109116    mTableName(NULL), 
    110117    mFKeyName(pFKeyName), 
     
    116123}; 
    117124 
    118 ColMemberEntry::ColMemberEntry(ColTable* pOwner, const char* pMemberName, int pMemberOffset, CollectionFilterBase* pFilter, const char* pFKeyName, const char* pTableName, id pRelationId) 
    119   : MemberEntryBase(pMemberName, pMemberOffset), 
     125ColMemberEntry::ColMemberEntry(int pIndex, ColTable* pOwner, const char* pMemberName, int pMemberOffset, CollectionFilterBase* pFilter, const char* pFKeyName, const char* pTableName, id pRelationId) 
     126  : MemberEntryBase(pIndex, pMemberName, pMemberOffset), 
    120127    mTableName(pTableName), 
    121128    mFKeyName(pFKeyName), 
  • trunk/dba/dba/storeable.h

    r136 r156  
    3030      @param pMemberOffset number of bytes from 'this' to first byte of member field in class 
    3131    */ 
    32     MemberEntryBase(const char* pMemberName, int pMemberOffset); 
     32    MemberEntryBase(int pMemberTableIndex, const char* pMemberName, int pMemberOffset); 
    3333    /**@internal 
    3434      Get number of bytes from this to first byte of member field 
     
    3636    int getMemberOffset() const; 
    3737    /** 
     38      Get index of member in store table 
     39    */ 
     40    int getMemberTableIndex() const; 
     41    /** 
    3842      Get name of relation where class member is stored 
    3943    */ 
     
    4347    */ 
    4448    void setMemberOffset(int pNewOffset); 
     49    /**@internal 
     50      set in BIND_* macros - for internal use only 
     51    */ 
     52    void setMemberTableIndex(int pIndex); 
    4553  private:   
    4654    const char* mMemberName; 
    4755    int mMemberOffset; 
     56    int mMemberTableIndex; 
    4857}; 
    4958 
     
    8392      @param pDatabaseType type of archive data (Database::StoreType enum value) 
    8493    */ 
    85     StoreTableMember(StoreTable* pOwner, const char* pMemberName, int pMemberOffset, StoreableFilterBase* pFilter, int pDatabaseType); 
     94    StoreTableMember(int pIndex, StoreTable* pOwner, const char* pMemberName, int pMemberOffset, StoreableFilterBase* pFilter, int pDatabaseType); 
    8695    /**@internal 
    8796      used by BIND_* macros - for internal use only 
     
    143152class dbaDLLEXPORT ColMemberEntry : public MemberEntryBase { 
    144153  public: 
    145     ColMemberEntry(ColTable* pOwner, const char* pMemberName, int pMemberOffset, CollectionFilterBase* pFilter, const char* pFKeyName); 
    146     ColMemberEntry(ColTable* pOwner, const char* pMemberName, int pMemberOffset, CollectionFilterBase* pFilter, const char* pFKeyName, const char* pTableName, id pRelationName); 
     154    ColMemberEntry(int pIndex, ColTable* pOwner, const char* pMemberName, int pMemberOffset, CollectionFilterBase* pFilter, const char* pFKeyName); 
     155    ColMemberEntry(int pIndex, ColTable* pOwner, const char* pMemberName, int pMemberOffset, CollectionFilterBase* pFilter, const char* pFKeyName, const char* pTableName, id pRelationName); 
    147156    const char* getTableName() const; 
    148157    const char* getFKeyName() const; 
     
    221230void \ 
    222231Class::st_createTables() {                            \ 
     232  int index = 0;                                   \ 
    223233  st_table = new dba::StoreTable(table);                         \ 
    224234  st_table->setClassOffset( (char*)(Class*)dba::Storeable::dba_pointer_place - (char*)dba_pointer_place ); \ 
     
    228238  st_ColTable->setClassOffset( (char*)(Class*)dba::Storeable::dba_pointer_place - (char*)dba_pointer_place ); \ 
    229239  st_ColTable->setNextTable(parent::st_getColTable()); \ 
    230   sStoreTableList.mColTables.insert(st_ColTable);             
     240  sStoreTableList.mColTables.insert(st_ColTable); 
    231241 
    232242/** 
     
    238248*/ 
    239249#define BIND_STR(member,filter_class,field) \ 
    240   new dba::StoreTableMember(st_table,field,(char*)&(member) - (char*)this,new filter_class(member),dba::Database::STRING); 
     250  new dba::StoreTableMember(index++,st_table,field,(char*)&(member) - (char*)this,new filter_class(member),dba::Database::STRING); 
    241251 
    242252/** 
     
    248258*/ 
    249259#define BIND_INT(member,filter_class,field) \ 
    250   new dba::StoreTableMember(st_table,field,(char*)&(member) - (char*)this,new filter_class(member),dba::Database::INTEGER); 
     260  new dba::StoreTableMember(index++,st_table,field,(char*)&(member) - (char*)this,new filter_class(member),dba::Database::INTEGER); 
    251261 
    252262/** 
     
    258268*/ 
    259269#define BIND_FLT(member,filter_class,field) \ 
    260   new dba::StoreTableMember(st_table,field,(char*)&(member) - (char*)this,new filter_class(member),dba::Database::FLOAT); 
     270  new dba::StoreTableMember(index++,st_table,field,(char*)&(member) - (char*)this,new filter_class(member),dba::Database::FLOAT); 
    261271 
    262272/** 
     
    268278*/ 
    269279#define BIND_DAT(member,filter_class,field) \ 
    270   new dba::StoreTableMember(st_table,field,(char*)&(member) - (char*)this,new filter_class(member),dba::Database::DATE); 
     280  new dba::StoreTableMember(index++,st_table,field,(char*)&(member) - (char*)this,new filter_class(member),dba::Database::DATE); 
    271281 
    272282/** 
     
    279289*/ 
    280290#define BIND_COL(member,filter_class,fkname) \ 
    281   new dba::ColMemberEntry(st_ColTable,NULL,(char*)&(member) - (char*)this,new filter_class(member),fkname); 
     291  new dba::ColMemberEntry(index++,st_ColTable,NULL,(char*)&(member) - (char*)this,new filter_class(member),fkname); 
    282292 
    283293/** 
     
    294304*/ 
    295305#define BIND_CLA(member,filter_class,fkname,coll_id,table_name) \ 
    296   new dba::ColMemberEntry(st_ColTable,NULL,(char*)&(member) - (char*)this,new filter_class(member),fkname,table_name,coll_id); 
     306  new dba::ColMemberEntry(index++,st_ColTable,NULL,(char*)&(member) - (char*)this,new filter_class(member),fkname,table_name,coll_id); 
    297307 
    298308/** 
     
    310320        tmp->setFilterOwner(false); \ 
    311321        tmp->setMemberOffset(tmp->getMemberOffset() + ((char*)&(member) - (char*)this)); \ 
     322        tmp->setMemberTableIndex(index++); \ 
    312323        st_table->addMember(tmp); \ 
    313324        entry = entry->getNextMember();           \ 
  • trunk/dba/test/main.cpp

    r154 r156  
    144144  CppUnit::BriefTestProgressListener listener; 
    145145  runner.eventManager().addListener(&listener); 
    146   //runner.addTest( CppUnit::TestFactoryRegistry::getRegistry().makeTest() ); 
     146  runner.addTest( CppUnit::TestFactoryRegistry::getRegistry().makeTest() ); 
    147147  //runner.addTest(new CppUnit::TestCaller<SQLite3SQLArchiveTestCase>("debug_test",&SQLite3SQLArchiveTestCase::sqlError)); 
    148148  //runner.addTest(new CppUnit::TestCaller<PostgresSQLArchiveTestCase>("debug_test",&PostgresSQLArchiveTestCase::sqlError)); 
     
    151151  //runner.addTest(new CppUnit::TestCaller<SQLite3SQLArchiveTestCase>("debug_test",&SQLite3SQLArchiveTestCase::transactions_rollback)); 
    152152  //runner.addTest(dba_tests::XMLTestCase::suite()); 
    153   runner.addTest(new CppUnit::TestCaller<dba_tests::XMLTestCase>("debug_test",&dba_tests::XMLTestCase::load_two_inverted)); 
     153  //runner.addTest(new CppUnit::TestCaller<dba_tests::XMLTestCase>("debug_test",&dba_tests::XMLTestCase::load_two_inverted)); 
    154154  //runner.addTest(new CppUnit::TestCaller<dba_tests::XMLTestCase>("debug_test",&dba_tests::XMLTestCase::store_two)); 
    155155  //runner.addTest(new CppUnit::TestCaller<OdbcPluginTestCase>("debug_test",&OdbcPluginTestCase::dbConnection));