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?

