wlaking 2 different c++ china produced different results

i have cast my print statements:

(dbx) whatis (CBioseq *)((*(CBioseq_Info *)((*this).m_Contents.operator->()))

class ncbi::objects::CBioseq *;

(dbx) whatis (CBioseq *)((*(*this).m_Object.operator->()).m_object)

class ncbi::objects::CBioseq *;

they both point to the same address:

(dbx) p (CBioseq *)((*(CBioseq_Info *)((*this).m_Contents.operator->())).m_Ob

(class ncbi::objects::CBioseq *) (*(class ncbi::objects::CBioseq_Info *) (*this).m_Contents.operator->()).m_Object.operator->() = 0x1cdde90

(dbx) p (CBioseq *)((*(*this).m_Object.operator->()).m_object)

(class ncbi::objects::CBioseq *) (*(*this).m_Object.operator->()).m_object = 0x1cdde90

but when i deref and do the actual print, i get different results:

(dbx) p *(CBioseq *)((*(CBioseq_Info *)((*this).m_Contents.operator->())).m_O

*((class ncbi::objects::CBioseq *) (*(class ncbi::objects::CBioseq_Info *) (*this).m_Contents.operator->()).m_Object.operator->()) = {

operator->(= true

m_Counter= {

m_Value= 0

}

CBioseq::CBioseq_Base::CSerialObject::ms_UnassignedStr= 0x1c0762e "<*unassigned*>"

operator->(= ''

ms_VerifyDataDefault= eSerialVerifyData_Default

m_set_State= (21070776U)

m_Id= {

__buffer_size= 24762608U

__buffer_list= {

CBioseq::CBioseq_Base::list<ncbi::CRef><ncbi::objects::CSeq_id,ncbi::C ObjectCounterLocker>,std::allocator<ncbi::CRef><ncbi::objects::CSeq_ id,ncbi::CObjectCounterLocker> > >::__rw_basis<std::list><ncbi::CRef><ncbi::objects::CSeq_id,n cbi::CObjectCounterLocker>,std::allocator<ncbi::CRef><ncbi::objects: :CSeq_id,ncbi::CObjectCounterLocker> > >::__list_node_buffer*,std::allocator<ncbi::CRef><ncbi::objects::CS eq_id,ncbi::CObjectCounterLocker> > >::__data_ = 0x1867a40

}

CBioseq::CBioseq_Base::list<ncbi::CRef><ncbi::objects::CSeq_id,ncbi::C ObjectCounterLocker>,std::allocator<ncbi::CRef><ncbi::objects::CSeq_ id,ncbi::CObjectCounterLocker> > >::__free_list= 0x1867d20

CBioseq::CBioseq_Base::list<ncbi::CRef><ncbi::objects::CSeq_id,ncbi::C ObjectCounterLocker>,std::allocator<ncbi::CRef><ncbi::objects::CSeq_ id,ncbi::CObjectCounterLocker> > >::__next_avail = 0x141a420

CBioseq::CBioseq_Base::list<ncbi::CRef><ncbi::objects::CSeq_id,ncbi::C ObjectCounterLocker>,std::allocator<ncbi::CRef><ncbi::objects::CSeq_ id,ncbi::CObjectCounterLocker> > >::__last= 0x179d270

CBioseq::CBioseq_Base::list<ncbi::CRef><ncbi::objects::CSeq_id,ncbi::C ObjectCounterLocker>,std::allocator<ncbi::CRef><ncbi::objects::CSeq_ id,ncbi::CObjectCounterLocker> > >::__node= 0x179d638

__length = 21699136U

}

m_Descr= {

m_Data= {

CBioseq::CBioseq_Base::CRef<ncbi::objects::CSeq_descr,ncbi::CObjectCounterLo cker>::pair_base_member<ncbi::CObjectCounterLocker,ncbi::objects::CSeq_des cr*>::m_Member = 0x1412000

}

}

m_Inst= {

m_Data= {

CBioseq::CBioseq_Base::CRef<ncbi::objects::CSeq_inst,ncbi::CObjectCounterLoc ker>::pair_base_member<ncbi::CObjectCounterLocker,ncbi::objects::CSeq_inst *>::m_Member = 0x1412028

}

}

m_Annot= {

__buffer_size= 28751848U

__buffer_list= {

CBioseq::CBioseq_Base::list<ncbi::CRef><ncbi::objects::CSeq_annot,ncbi ::CObjectCounterLocker>,std::allocator<ncbi::CRef><ncbi::objects::CS eq_annot,ncbi::CObjectCounterLocker> > >::__rw_basis<std::list><ncbi::CRef><ncbi::objects::CSeq_anno t,ncbi::CObjectCounterLocker>,std::allocator<ncbi::CRef><ncbi::objec ts::CSeq_annot,ncbi::CObjectCounterLocker> > >::__list_node_buffer*,std::allocator<ncbi::CRef><ncbi::objects::CS eq_annot,ncbi::CObjectCounterLocker> > >::__data_ = 0x4c

}

CBioseq::CBioseq_Base::list<ncbi::CRef><ncbi::objects::CSeq_annot,ncbi ::CObjectCounterLocker>,std::allocator<ncbi::CRef><ncbi::objects::CS eq_annot,ncbi::CObjectCounterLocker> > >::__free_list= 0x1418388

CBioseq::CBioseq_Base::list<ncbi::CRef><ncbi::objects::CSeq_annot,ncbi ::CObjectCounterLocker>,std::allocator<ncbi::CRef><ncbi::objects::CS eq_annot,ncbi::CObjectCounterLocker> > >::__next_avail = 0x1418358

CBioseq::CBioseq_Base::list<ncbi::CRef><ncbi::objects::CSeq_annot,ncbi ::CObjectCounterLocker>,std::allocator<ncbi::CRef><ncbi::objects::CS eq_annot,ncbi::CObjectCounterLocker> > >::__last= 0x1418328

CBioseq::CBioseq_Base::list<ncbi::CRef><ncbi::objects::CSeq_annot,ncbi ::CObjectCounterLocker>,std::allocator<ncbi::CRef><ncbi::objects::CS eq_annot,ncbi::CObjectCounterLocker> > >::__node= (nil)

__length= 28752428U

}

CBioseq::m_ParentEntry= 0x1418238

operator->(= 0

}

(dbx) p *(CBioseq *)((*(*this).m_Object.operator->()).m_object)

*(class ncbi::objects::CBioseq *) (*(*this).m_Object.operator->()).m_object = {

m_object = true

m_Counter= {

m_Value= 2147483659U

}

CBioseq::CBioseq_Base::CSerialObject::ms_UnassignedStr= 0x1c0762e "<*unassigned*>"

m_object= ''

ms_VerifyDataDefault= eSerialVerifyData_Default

m_set_State= (1U)

m_Id= {

__buffer_size= 32U

__buffer_list= {

CBioseq::CBioseq_Base::list<ncbi::CRef><ncbi::objects::CSeq_id,ncbi::C ObjectCounterLocker>,std::allocator<ncbi::CRef><ncbi::objects::CSeq_ id,ncbi::CObjectCounterLocker> > >::__rw_basis<std::list><ncbi::CRef><ncbi::objects::CSeq_id,n cbi::CObjectCounterLocker>,std::allocator<ncbi::CRef><ncbi::objects: :CSeq_id,ncbi::CObjectCounterLocker> > >::__list_node_buffer*,std::allocator<ncbi::CRef><ncbi::objects::CS eq_id,ncbi::CObjectCounterLocker> > >::__data_ = 0x1cde150

}

CBioseq::CBioseq_Base::list<ncbi::CRef><ncbi::objects::CSeq_id,ncbi::C ObjectCounterLocker>,std::allocator<ncbi::CRef><ncbi::objects::CSeq_ id,ncbi::CObjectCounterLocker> > >::__free_list= (nil)

CBioseq::CBioseq_Base::list<ncbi::CRef><ncbi::objects::CSeq_id,ncbi::C ObjectCounterLocker>,std::allocator<ncbi::CRef><ncbi::objects::CSeq_ id,ncbi::CObjectCounterLocker> > >::__next_avail = 0x1cdcbb0

CBioseq::CBioseq_Base::list<ncbi::CRef><ncbi::objects::CSeq_id,ncbi::C ObjectCounterLocker>,std::allocator<ncbi::CRef><ncbi::objects::CSeq_ id,ncbi::CObjectCounterLocker> > >::__last= 0x1cdcbb0

CBioseq::CBioseq_Base::list<ncbi::CRef><ncbi::objects::CSeq_id,ncbi::C ObjectCounterLocker>,std::allocator<ncbi::CRef><ncbi::objects::CSeq_ id,ncbi::CObjectCounterLocker> > >::__node= 0x1cdcb98

__length = 1U

}

m_Descr= {

m_Data= {

CBioseq::CBioseq_Base::CRef<ncbi::objects::CSeq_descr,ncbi::CObjectCounterLo cker>::pair_base_member<ncbi::CObjectCounterLocker,ncbi::objects::CSeq_des cr*>::m_Member = 0x1cce010

}

}

m_Inst= {

m_Data= {

CBioseq::CBioseq_Base::CRef<ncbi::objects::CSeq_inst,ncbi::CObjectCounterLoc ker>::pair_base_member<ncbi::CObjectCounterLocker,ncbi::objects::CSeq_inst *>::m_Member = 0x1cd9918

}

}

m_Annot= {

__buffer_size= 32U

__buffer_list= {

CBioseq::CBioseq_Base::list<ncbi::CRef><ncbi::objects::CSeq_annot,ncbi ::CObjectCounterLocker>,std::allocator<ncbi::CRef><ncbi::objects::CS eq_annot,ncbi::CObjectCounterLocker> > >::__rw_basis<std::list><ncbi::CRef><ncbi::objects::CSeq_anno t,ncbi::CObjectCounterLocker>,std::allocator<ncbi::CRef><ncbi::objec ts::CSeq_annot,ncbi::CObjectCounterLocker> > >::__list_node_buffer*,std::allocator<ncbi::CRef><ncbi::objects::CS eq_annot,ncbi::CObjectCounterLocker> > >::__data_ = 0x1cd4f68

}

CBioseq::CBioseq_Base::list<ncbi::CRef><ncbi::objects::CSeq_annot,ncbi ::CObjectCounterLocker>,std::allocator<ncbi::CRef><ncbi::objects::CS eq_annot,ncbi::CObjectCounterLocker> > >::__free_list= (nil)

CBioseq::CBioseq_Base::list<ncbi::CRef><ncbi::objects::CSeq_annot,ncbi ::CObjectCounterLocker>,std::allocator<ncbi::CRef><ncbi::objects::CS eq_annot,ncbi::CObjectCounterLocker> > >::__next_avail = 0x1cdd044

CBioseq::CBioseq_Base::list<ncbi::CRef><ncbi::objects::CSeq_annot,ncbi ::CObjectCounterLocker>,std::allocator<ncbi::CRef><ncbi::objects::CS eq_annot,ncbi::CObjectCounterLocker> > >::__last= 0x1cdd050

CBioseq::CBioseq_Base::list<ncbi::CRef><ncbi::objects::CSeq_annot,ncbi ::CObjectCounterLocker>,std::allocator<ncbi::CRef><ncbi::objects::CS eq_annot,ncbi::CObjectCounterLocker> > >::__node= 0x1cdd038

__length= 0

}

CBioseq::m_ParentEntry= 0x1cdcbf8

m_object= 0

}

the 2nd one is actually correct - i can't figure out what i am doing wrong with the 1st print statement - is there some intermediate step i might do to shed some light?

[8923 byte] By [autohanda] at [2007-11-27 10:45:57]
# 1

ok - if take the address of the deref, i can see that i am printing 2 different addresses - and that the 2nd one matches the address before the deref, but the 1st one does not:

(dbx) p &*(CBioseq *)((*(CBioseq_Info *)((*this).m_Contents.operator->())).m_

&*((class ncbi::objects::CBioseq *) (*(class ncbi::objects::CBioseq_Info *) (*this).m_Contents.operator->()).m_Object.operator->()) = 0x1c51abc

(dbx) p &*(CBioseq *)((*(*this).m_Object.operator->()).m_object)

&*(class ncbi::objects::CBioseq *) (*(*this).m_Object.operator->()).m_object = 0x1cdde90

now - if i can figure out why this is happening - will the operator*() be in the definition of CBioseq?

autohanda at 2007-7-28 20:16:02 > top of Java-index,Development Tools,Solaris and Linux Development Tools...
# 2

if i grep:

>/tmp/z whatis -t -r ncbi::objects::CBioseq

for operator - should i expect to find "operator*" if that is my problem? if so, it is not showing up.

autohanda at 2007-7-28 20:16:02 > top of Java-index,Development Tools,Solaris and Linux Development Tools...