objectiter.inl
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:21k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: objectiter.inl,v $
  4.  * PRODUCTION Revision 1000.0  2003/10/29 17:25:36  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.6
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #if defined(OBJECTITER__HPP)  &&  !defined(OBJECTITER__INL)
  10. #define OBJECTITER__INL
  11. /*  $Id: objectiter.inl,v 1000.0 2003/10/29 17:25:36 gouriano Exp $
  12. * ===========================================================================
  13. *
  14. *                            PUBLIC DOMAIN NOTICE
  15. *               National Center for Biotechnology Information
  16. *
  17. *  This software/database is a "United States Government Work" under the
  18. *  terms of the United States Copyright Act.  It was written as part of
  19. *  the author's official duties as a United States Government employee and
  20. *  thus cannot be copyrighted.  This software/database is freely available
  21. *  to the public for use. The National Library of Medicine and the U.S.
  22. *  Government have not placed any restriction on its use or reproduction.
  23. *
  24. *  Although all reasonable efforts have been taken to ensure the accuracy
  25. *  and reliability of the software and data, the NLM and the U.S.
  26. *  Government do not and cannot warrant the performance or results that
  27. *  may be obtained by using this software or data. The NLM and the U.S.
  28. *  Government disclaim all warranties, express or implied, including
  29. *  warranties of performance, merchantability or fitness for any particular
  30. *  purpose.
  31. *
  32. *  Please cite the author in any work or product based on this material.
  33. *
  34. * ===========================================================================
  35. *
  36. * Author: Eugene Vasilchenko
  37. *
  38. * File Description:
  39. *   !!! PUT YOUR DESCRIPTION HERE !!!
  40. */
  41. /////////////////////////////////////////////////////////////////////////////
  42. // iterators
  43. /////////////////////////////////////////////////////////////////////////////
  44. // container interface
  45. inline
  46. CConstObjectInfoEI::CConstObjectInfoEI(void)
  47. {
  48.     _DEBUG_ARG(m_LastCall = eNone);
  49. }
  50. inline
  51. bool CConstObjectInfoEI::CheckValid(void) const
  52. {
  53. #if _DEBUG
  54.     if ( m_LastCall != eValid)
  55.         ReportNonValid();
  56. #endif
  57.     return m_Iterator.Valid();
  58. }
  59. inline
  60. bool CConstObjectInfoEI::Valid(void) const
  61. {
  62.     _DEBUG_ARG(m_LastCall = eValid);
  63.     return CheckValid();
  64. }
  65. inline
  66. CConstObjectInfoEI::operator bool(void) const
  67. {
  68.     return Valid();
  69. }
  70. inline
  71. bool CConstObjectInfoEI::operator!(void) const
  72. {
  73.     return !Valid();
  74. }
  75. inline
  76. void CConstObjectInfoEI::Next(void)
  77. {
  78.     _ASSERT(CheckValid());
  79.     m_Iterator.Next();
  80. }
  81. inline
  82. CConstObjectInfoEI& CConstObjectInfoEI::operator++(void)
  83. {
  84.     Next();
  85.     return *this;
  86. }
  87. inline
  88. CConstObjectInfo CConstObjectInfoEI::GetElement(void) const
  89. {
  90.     _ASSERT(CheckValid());
  91.     return m_Iterator.Get();
  92. }
  93. inline
  94. CConstObjectInfo CConstObjectInfoEI::operator*(void) const
  95. {
  96.     _ASSERT(CheckValid());
  97.     return m_Iterator.Get();
  98. }
  99. /*
  100. inline
  101. CConstObjectInfo CConstObjectInfoEI::operator->(void) const
  102. {
  103.     _ASSERT(CheckValid());
  104.     return m_Iterator.Get();
  105. }
  106. */
  107. inline
  108. CObjectInfoEI::CObjectInfoEI(void)
  109. {
  110.     _DEBUG_ARG(m_LastCall = eNone);
  111. }
  112. inline
  113. bool CObjectInfoEI::CheckValid(void) const
  114. {
  115. #if _DEBUG
  116.     if ( m_LastCall != eValid)
  117.         ReportNonValid();
  118. #endif
  119.     return m_Iterator.Valid();
  120. }
  121. inline
  122. bool CObjectInfoEI::Valid(void) const
  123. {
  124.     _DEBUG_ARG(m_LastCall = eValid);
  125.     return CheckValid();
  126. }
  127. inline
  128. CObjectInfoEI::operator bool(void) const
  129. {
  130.     return Valid();
  131. }
  132. inline
  133. bool CObjectInfoEI::operator!(void) const
  134. {
  135.     return !Valid();
  136. }
  137. inline
  138. void CObjectInfoEI::Next(void)
  139. {
  140.     _ASSERT(CheckValid());
  141.     _DEBUG_ARG(m_LastCall = eNext);
  142.     m_Iterator.Next();
  143. }
  144. inline
  145. CObjectInfoEI& CObjectInfoEI::operator++(void)
  146. {
  147.     Next();
  148.     return *this;
  149. }
  150. inline
  151. CObjectInfo CObjectInfoEI::GetElement(void) const
  152. {
  153.     _ASSERT(CheckValid());
  154.     return m_Iterator.Get();
  155. }
  156. inline
  157. CObjectInfo CObjectInfoEI::operator*(void) const
  158. {
  159.     _ASSERT(CheckValid());
  160.     return m_Iterator.Get();
  161. }
  162. inline
  163. void CObjectInfoEI::Erase(void)
  164. {
  165.     _ASSERT(CheckValid());
  166.     _DEBUG_ARG(m_LastCall = eErase);
  167.     m_Iterator.Erase();
  168. }
  169. // class interface
  170. inline
  171. CObjectTypeInfoII::CObjectTypeInfoII(void)
  172.     : m_ItemIndex(kFirstMemberIndex),
  173.       m_LastItemIndex(kInvalidMember)
  174. {
  175.     _DEBUG_ARG(m_LastCall = eNone);
  176. }
  177. inline
  178. void CObjectTypeInfoII::Init(const CClassTypeInfoBase* typeInfo,
  179.                              TMemberIndex index)
  180. {
  181.     m_OwnerType = typeInfo;
  182.     m_ItemIndex = index;
  183.     m_LastItemIndex = typeInfo->GetItems().LastIndex();
  184.     _DEBUG_ARG(m_LastCall = (index == kInvalidMember? eNone: eValid));
  185. }
  186. inline
  187. void CObjectTypeInfoII::Init(const CClassTypeInfoBase* typeInfo)
  188. {
  189.     Init(typeInfo, kFirstMemberIndex);
  190. }
  191. inline
  192. CObjectTypeInfoII::CObjectTypeInfoII(const CClassTypeInfoBase* typeInfo)
  193. {
  194.     Init(typeInfo);
  195. }
  196. inline
  197. CObjectTypeInfoII::CObjectTypeInfoII(const CClassTypeInfoBase* typeInfo,
  198.                                      TMemberIndex index)
  199. {
  200.     Init(typeInfo, index);
  201. }
  202. inline
  203. const CObjectTypeInfo& CObjectTypeInfoII::GetOwnerType(void) const
  204. {
  205.     return m_OwnerType;
  206. }
  207. inline
  208. const CClassTypeInfoBase* CObjectTypeInfoII::GetClassTypeInfoBase(void) const
  209. {
  210.     return CTypeConverter<CClassTypeInfoBase>::
  211.         SafeCast(GetOwnerType().GetTypeInfo());
  212. }
  213. inline
  214. bool CObjectTypeInfoII::CheckValid(void) const
  215. {
  216. #if _DEBUG
  217.     if ( m_LastCall != eValid)
  218.         ReportNonValid();
  219. #endif
  220.     return m_ItemIndex >= kFirstMemberIndex &&
  221.         m_ItemIndex <= m_LastItemIndex;
  222. }
  223. inline
  224. TMemberIndex CObjectTypeInfoII::GetItemIndex(void) const
  225. {
  226.     _ASSERT(CheckValid());
  227.     return m_ItemIndex;
  228. }
  229. inline
  230. const CItemInfo* CObjectTypeInfoII::GetItemInfo(void) const
  231. {
  232.     return GetClassTypeInfoBase()->GetItems().GetItemInfo(GetItemIndex());
  233. }
  234. inline
  235. const string& CObjectTypeInfoII::GetAlias(void) const
  236. {
  237.     return GetItemInfo()->GetId().GetName();
  238. }
  239. inline
  240. bool CObjectTypeInfoII::Valid(void) const
  241. {
  242.     _DEBUG_ARG(m_LastCall = eValid);
  243.     return CheckValid();
  244. }
  245. inline
  246. CObjectTypeInfoII::operator bool(void) const
  247. {
  248.     return Valid();
  249. }
  250. inline
  251. bool CObjectTypeInfoII::operator!(void) const
  252. {
  253.     return !Valid();
  254. }
  255. inline
  256. void CObjectTypeInfoII::Next(void)
  257. {
  258.     _ASSERT(CheckValid());
  259.     _DEBUG_ARG(m_LastCall = eNext);
  260.     ++m_ItemIndex;
  261. }
  262. inline
  263. bool CObjectTypeInfoII::operator==(const CObjectTypeInfoII& iter) const
  264. {
  265.     return GetOwnerType() == iter.GetOwnerType() &&
  266.         GetItemIndex() == iter.GetItemIndex();
  267. }
  268. inline
  269. bool CObjectTypeInfoII::operator!=(const CObjectTypeInfoII& iter) const
  270. {
  271.     return GetOwnerType() != iter.GetOwnerType() ||
  272.         GetItemIndex() == iter.GetItemIndex();
  273. }
  274. // CObjectTypeInfoMI //////////////////////////////////////////////////////
  275. inline
  276. CObjectTypeInfoMI::CObjectTypeInfoMI(void)
  277. {
  278. }
  279. inline
  280. CObjectTypeInfoMI::CObjectTypeInfoMI(const CObjectTypeInfo& info)
  281.     : CParent(info.GetClassTypeInfo())
  282. {
  283. }
  284. inline
  285. CObjectTypeInfoMI::CObjectTypeInfoMI(const CObjectTypeInfo& info,
  286.                                      TMemberIndex index)
  287.     : CParent(info.GetClassTypeInfo(), index)
  288. {
  289. }
  290. inline
  291. CObjectTypeInfoMI& CObjectTypeInfoMI::operator++(void)
  292. {
  293.     Next();
  294.     return *this;
  295. }
  296. inline
  297. void CObjectTypeInfoMI::Init(const CObjectTypeInfo& info)
  298. {
  299.     CParent::Init(info.GetClassTypeInfo());
  300. }
  301. inline
  302. void CObjectTypeInfoMI::Init(const CObjectTypeInfo& info,
  303.                              TMemberIndex index)
  304. {
  305.     CParent::Init(info.GetClassTypeInfo(), index);
  306. }
  307. inline
  308. CObjectTypeInfoMI& CObjectTypeInfoMI::operator=(const CObjectTypeInfo& info)
  309. {
  310.     Init(info);
  311.     return *this;
  312. }
  313. inline
  314. const CClassTypeInfo* CObjectTypeInfoMI::GetClassTypeInfo(void) const
  315. {
  316.     return GetOwnerType().GetClassTypeInfo();
  317. }
  318. inline
  319. CObjectTypeInfo CObjectTypeInfoMI::GetClassType(void) const
  320. {
  321.     return GetOwnerType();
  322. }
  323. inline
  324. TMemberIndex CObjectTypeInfoMI::GetMemberIndex(void) const
  325. {
  326.     return GetItemIndex();
  327. }
  328. inline
  329. const CMemberInfo* CObjectTypeInfoMI::GetMemberInfo(void) const
  330. {
  331.     return GetClassTypeInfo()->GetMemberInfo(GetMemberIndex());
  332. }
  333. inline
  334. CMemberInfo* CObjectTypeInfoMI::GetNCMemberInfo(void) const
  335. {
  336.     return const_cast<CMemberInfo*>(GetMemberInfo());
  337. }
  338. inline
  339. CObjectTypeInfoMI::operator CObjectTypeInfo(void) const
  340. {
  341.     return GetMemberInfo()->GetTypeInfo();
  342. }
  343. inline
  344. CObjectTypeInfo CObjectTypeInfoMI::GetMemberType(void) const
  345. {
  346.     return GetMemberInfo()->GetTypeInfo();
  347. }
  348. inline
  349. CObjectTypeInfo CObjectTypeInfoMI::operator*(void) const
  350. {
  351.     return GetMemberInfo()->GetTypeInfo();
  352. }
  353. // CObjectTypeInfoVI //////////////////////////////////////////////////////
  354. inline
  355. CObjectTypeInfoVI::CObjectTypeInfoVI(const CObjectTypeInfo& info)
  356.     : CParent(info.GetChoiceTypeInfo())
  357. {
  358. }
  359. inline
  360. CObjectTypeInfoVI::CObjectTypeInfoVI(const CObjectTypeInfo& info,
  361.                                      TMemberIndex index)
  362.     : CParent(info.GetChoiceTypeInfo(), index)
  363. {
  364. }
  365. inline
  366. CObjectTypeInfoVI& CObjectTypeInfoVI::operator++(void)
  367. {
  368.     Next();
  369.     return *this;
  370. }
  371. inline
  372. void CObjectTypeInfoVI::Init(const CObjectTypeInfo& info)
  373. {
  374.     CParent::Init(info.GetChoiceTypeInfo());
  375. }
  376. inline
  377. void CObjectTypeInfoVI::Init(const CObjectTypeInfo& info,
  378.                              TMemberIndex index)
  379. {
  380.     CParent::Init(info.GetChoiceTypeInfo(), index);
  381. }
  382. inline
  383. CObjectTypeInfoVI& CObjectTypeInfoVI::operator=(const CObjectTypeInfo& info)
  384. {
  385.     Init(info);
  386.     return *this;
  387. }
  388. inline
  389. const CChoiceTypeInfo* CObjectTypeInfoVI::GetChoiceTypeInfo(void) const
  390. {
  391.     return GetOwnerType().GetChoiceTypeInfo();
  392. }
  393. inline
  394. CObjectTypeInfo CObjectTypeInfoVI::GetChoiceType(void) const
  395. {
  396.     return GetOwnerType();
  397. }
  398. inline
  399. TMemberIndex CObjectTypeInfoVI::GetVariantIndex(void) const
  400. {
  401.     return GetItemIndex();
  402. }
  403. inline
  404. const CVariantInfo* CObjectTypeInfoVI::GetVariantInfo(void) const
  405. {
  406.     return GetChoiceTypeInfo()->GetVariantInfo(GetVariantIndex());
  407. }
  408. inline
  409. CVariantInfo* CObjectTypeInfoVI::GetNCVariantInfo(void) const
  410. {
  411.     return const_cast<CVariantInfo*>(GetVariantInfo());
  412. }
  413. inline
  414. CObjectTypeInfo CObjectTypeInfoVI::GetVariantType(void) const
  415. {
  416.     return GetVariantInfo()->GetTypeInfo();
  417. }
  418. inline
  419. CObjectTypeInfo CObjectTypeInfoVI::operator*(void) const
  420. {
  421.     return GetVariantInfo()->GetTypeInfo();
  422. }
  423. // CConstObjectInfoMI //////////////////////////////////////////////////////
  424. inline
  425. CConstObjectInfoMI::CConstObjectInfoMI(void)
  426. {
  427. }
  428. inline
  429. CConstObjectInfoMI::CConstObjectInfoMI(const CConstObjectInfo& object)
  430.     : CParent(object), m_Object(object)
  431. {
  432.     _ASSERT(object);
  433. }
  434. inline
  435. CConstObjectInfoMI::CConstObjectInfoMI(const CConstObjectInfo& object,
  436.                                        TMemberIndex index)
  437.     : CParent(object, index), m_Object(object)
  438. {
  439.     _ASSERT(object);
  440. }
  441. inline
  442. const CConstObjectInfo&
  443. CConstObjectInfoMI::GetClassObject(void) const
  444. {
  445.     return m_Object;
  446. }
  447. inline
  448. CConstObjectInfoMI&
  449. CConstObjectInfoMI::operator=(const CConstObjectInfo& object)
  450. {
  451.     _ASSERT(object);
  452.     CParent::Init(object);
  453.     m_Object = object;
  454.     return *this;
  455. }
  456. inline
  457. bool CConstObjectInfoMI::IsSet(void) const
  458. {
  459.     return CParent::IsSet(GetClassObject());
  460. }
  461. inline
  462. CConstObjectInfo CConstObjectInfoMI::GetMember(void) const
  463. {
  464.     return GetMemberPair();
  465. }
  466. inline
  467. CConstObjectInfo CConstObjectInfoMI::operator*(void) const
  468. {
  469.     return GetMemberPair();
  470. }
  471. inline
  472. CObjectInfoMI::CObjectInfoMI(void)
  473. {
  474. }
  475. inline
  476. CObjectInfoMI::CObjectInfoMI(const CObjectInfo& object)
  477.     : CParent(object), m_Object(object)
  478. {
  479.     _ASSERT(object);
  480. }
  481. inline
  482. CObjectInfoMI::CObjectInfoMI(const CObjectInfo& object,
  483.                              TMemberIndex index)
  484.     : CParent(object, index), m_Object(object)
  485. {
  486.     _ASSERT(object);
  487. }
  488. inline
  489. CObjectInfoMI& CObjectInfoMI::operator=(const CObjectInfo& object)
  490. {
  491.     _ASSERT(object);
  492.     CParent::Init(object);
  493.     m_Object = object;
  494.     return *this;
  495. }
  496. inline
  497. const CObjectInfo& CObjectInfoMI::GetClassObject(void) const
  498. {
  499.     return m_Object;
  500. }
  501. inline
  502. bool CObjectInfoMI::IsSet(void) const
  503. {
  504.     return CParent::IsSet(GetClassObject());
  505. }
  506. inline
  507. void CObjectInfoMI::Reset(void)
  508. {
  509.     Erase();
  510. }
  511. inline
  512. CObjectInfo CObjectInfoMI::GetMember(void) const
  513. {
  514.     return GetMemberPair();
  515. }
  516. inline
  517. CObjectInfo CObjectInfoMI::operator*(void) const
  518. {
  519.     return GetMemberPair();
  520. }
  521. // choice interface
  522. inline
  523. CObjectTypeInfoCV::CObjectTypeInfoCV(void)
  524.     : m_ChoiceTypeInfo(0), m_VariantIndex(kEmptyChoice)
  525. {
  526. }
  527. inline
  528. CObjectTypeInfoCV::CObjectTypeInfoCV(const CObjectTypeInfo& info)
  529.     : m_ChoiceTypeInfo(info.GetChoiceTypeInfo()), m_VariantIndex(kEmptyChoice)
  530. {
  531. }
  532. inline
  533. CObjectTypeInfoCV::CObjectTypeInfoCV(const CConstObjectInfo& object)
  534. {
  535.     const CChoiceTypeInfo* choiceInfo =
  536.         m_ChoiceTypeInfo = object.GetChoiceTypeInfo();
  537.     m_VariantIndex = choiceInfo->GetIndex(object.GetObjectPtr());
  538.     _ASSERT(m_VariantIndex <= choiceInfo->GetVariants().LastIndex());
  539. }
  540. inline
  541. CObjectTypeInfoCV::CObjectTypeInfoCV(const CObjectTypeInfo& info,
  542.                                      TMemberIndex index)
  543. {
  544.     const CChoiceTypeInfo* choiceInfo =
  545.         m_ChoiceTypeInfo = info.GetChoiceTypeInfo();
  546.     if ( index > choiceInfo->GetVariants().LastIndex() )
  547.         index = kEmptyChoice;
  548.     m_VariantIndex = index;
  549. }
  550. inline
  551. const CChoiceTypeInfo* CObjectTypeInfoCV::GetChoiceTypeInfo(void) const
  552. {
  553.     return m_ChoiceTypeInfo;
  554. }
  555. inline
  556. TMemberIndex CObjectTypeInfoCV::GetVariantIndex(void) const
  557. {
  558.     return m_VariantIndex;
  559. }
  560. inline
  561. bool CObjectTypeInfoCV::Valid(void) const
  562. {
  563.     return GetVariantIndex() != kEmptyChoice;
  564. }
  565. inline
  566. CObjectTypeInfoCV::operator bool(void) const
  567. {
  568.     return Valid();
  569. }
  570. inline
  571. bool CObjectTypeInfoCV::operator!(void) const
  572. {
  573.     return !Valid();
  574. }
  575. inline
  576. void CObjectTypeInfoCV::Init(const CObjectTypeInfo& info)
  577. {
  578.     m_ChoiceTypeInfo = info.GetChoiceTypeInfo();
  579.     m_VariantIndex = kEmptyChoice;
  580. }
  581. inline
  582. void CObjectTypeInfoCV::Init(const CObjectTypeInfo& info,
  583.                              TMemberIndex index)
  584. {
  585.     m_ChoiceTypeInfo = info.GetChoiceTypeInfo();
  586.     m_VariantIndex = index;
  587. }
  588. inline
  589. CObjectTypeInfoCV& CObjectTypeInfoCV::operator=(const CObjectTypeInfo& info)
  590. {
  591.     m_ChoiceTypeInfo = info.GetChoiceTypeInfo();
  592.     m_VariantIndex = kEmptyChoice;
  593.     return *this;
  594. }
  595. inline
  596. bool CObjectTypeInfoCV::operator==(const CObjectTypeInfoCV& iter) const
  597. {
  598.     _ASSERT(GetChoiceTypeInfo() == iter.GetChoiceTypeInfo());
  599.     return GetVariantIndex() == iter.GetVariantIndex();
  600. }
  601. inline
  602. bool CObjectTypeInfoCV::operator!=(const CObjectTypeInfoCV& iter) const
  603. {
  604.     _ASSERT(GetChoiceTypeInfo() == iter.GetChoiceTypeInfo());
  605.     return GetVariantIndex() != iter.GetVariantIndex();
  606. }
  607. inline
  608. const CVariantInfo* CObjectTypeInfoCV::GetVariantInfo(void) const
  609. {
  610.     return GetChoiceTypeInfo()->GetVariantInfo(GetVariantIndex());
  611. }
  612. inline
  613. CVariantInfo* CObjectTypeInfoCV::GetNCVariantInfo(void) const
  614. {
  615.     return const_cast<CVariantInfo*>(GetVariantInfo());
  616. }
  617. inline
  618. const string& CObjectTypeInfoCV::GetAlias(void) const
  619. {
  620.     return GetVariantInfo()->GetId().GetName();
  621. }
  622. inline
  623. CObjectTypeInfo CObjectTypeInfoCV::GetChoiceType(void) const
  624. {
  625.     return GetChoiceTypeInfo();
  626. }
  627. inline
  628. CObjectTypeInfo CObjectTypeInfoCV::GetVariantType(void) const
  629. {
  630.     return GetVariantInfo()->GetTypeInfo();
  631. }
  632. inline
  633. CObjectTypeInfo CObjectTypeInfoCV::operator*(void) const
  634. {
  635.     return GetVariantInfo()->GetTypeInfo();
  636. }
  637. inline
  638. CConstObjectInfoCV::CConstObjectInfoCV(void)
  639. {
  640. }
  641. inline
  642. CConstObjectInfoCV::CConstObjectInfoCV(const CConstObjectInfo& object)
  643.     : CParent(object), m_Object(object)
  644. {
  645. }
  646. inline
  647. CConstObjectInfoCV::CConstObjectInfoCV(const CConstObjectInfo& object,
  648.                                        TMemberIndex index)
  649.     : CParent(object, index), m_Object(object)
  650. {
  651. }
  652. inline
  653. const CConstObjectInfo& CConstObjectInfoCV::GetChoiceObject(void) const
  654. {
  655.     return m_Object;
  656. }
  657. inline
  658. CConstObjectInfoCV& CConstObjectInfoCV::operator=(const CConstObjectInfo& object)
  659. {
  660.     CParent::Init(object);
  661.     m_Object = object;
  662.     return *this;
  663. }
  664. inline
  665. CConstObjectInfo CConstObjectInfoCV::GetVariant(void) const
  666. {
  667.     return GetVariantPair();
  668. }
  669. inline
  670. CConstObjectInfo CConstObjectInfoCV::operator*(void) const
  671. {
  672.     return GetVariantPair();
  673. }
  674. inline
  675. CObjectInfoCV::CObjectInfoCV(void)
  676. {
  677. }
  678. inline
  679. CObjectInfoCV::CObjectInfoCV(const CObjectInfo& object)
  680.     : CParent(object), m_Object(object)
  681. {
  682. }
  683. inline
  684. CObjectInfoCV::CObjectInfoCV(const CObjectInfo& object,
  685.                              TMemberIndex index)
  686.     : CParent(object, index), m_Object(object)
  687. {
  688. }
  689. inline
  690. const CObjectInfo& CObjectInfoCV::GetChoiceObject(void) const
  691. {
  692.     return m_Object;
  693. }
  694. inline
  695. CObjectInfoCV& CObjectInfoCV::operator=(const CObjectInfo& object)
  696. {
  697.     CParent::Init(object);
  698.     m_Object = object;
  699.     return *this;
  700. }
  701. inline
  702. CObjectInfo CObjectInfoCV::GetVariant(void) const
  703. {
  704.     return GetVariantPair();
  705. }
  706. inline
  707. CObjectInfo CObjectInfoCV::operator*(void) const
  708. {
  709.     return GetVariantPair();
  710. }
  711. /////////////////////////////////////////////////////////////////////////////
  712. // iterator getters
  713. /////////////////////////////////////////////////////////////////////////////
  714. // container interface
  715. inline
  716. CConstObjectInfoEI CConstObjectInfo::BeginElements(void) const
  717. {
  718.     return CElementIterator(*this);
  719. }
  720. inline
  721. CObjectInfoEI CObjectInfo::BeginElements(void) const
  722. {
  723.     return CElementIterator(*this);
  724. }
  725. // class interface
  726. inline
  727. CObjectTypeInfoMI CObjectTypeInfo::BeginMembers(void) const
  728. {
  729.     return CMemberIterator(*this);
  730. }
  731. inline
  732. CObjectTypeInfoMI CObjectTypeInfo::GetMemberIterator(TMemberIndex index) const
  733. {
  734.     return CMemberIterator(*this, index);
  735. }
  736. inline
  737. CObjectTypeInfoMI CObjectTypeInfo::FindMember(const string& name) const
  738. {
  739.     return GetMemberIterator(FindMemberIndex(name));
  740. }
  741. inline
  742. CObjectTypeInfoMI CObjectTypeInfo::FindMemberByTag(int tag) const
  743. {
  744.     return GetMemberIterator(FindMemberIndex(tag));
  745. }
  746. inline
  747. CObjectTypeInfoVI CObjectTypeInfo::BeginVariants(void) const
  748. {
  749.     return CVariantIterator(*this);
  750. }
  751. inline
  752. CObjectTypeInfoVI CObjectTypeInfo::GetVariantIterator(TMemberIndex index) const
  753. {
  754.     return CVariantIterator(*this, index);
  755. }
  756. inline
  757. CObjectTypeInfoVI CObjectTypeInfo::FindVariant(const string& name) const
  758. {
  759.     return GetVariantIterator(FindVariantIndex(name));
  760. }
  761. inline
  762. CObjectTypeInfoVI CObjectTypeInfo::FindVariantByTag(int tag) const
  763. {
  764.     return GetVariantIterator(FindVariantIndex(tag));
  765. }
  766. inline
  767. CConstObjectInfoMI CConstObjectInfo::GetMember(CObjectTypeInfoMI member) const
  768. {
  769.     return CMemberIterator(*this, member.GetMemberIndex());
  770. }
  771. inline
  772. CConstObjectInfoMI CConstObjectInfo::BeginMembers(void) const
  773. {
  774.     return CMemberIterator(*this);
  775. }
  776. inline
  777. CConstObjectInfoMI CConstObjectInfo::GetClassMemberIterator(TMemberIndex index) const
  778. {
  779.     return CMemberIterator(*this, index);
  780. }
  781. inline
  782. CConstObjectInfoMI CConstObjectInfo::FindClassMember(const string& name) const
  783. {
  784.     return GetClassMemberIterator(FindMemberIndex(name));
  785. }
  786. inline
  787. CConstObjectInfoMI CConstObjectInfo::FindClassMemberByTag(int tag) const
  788. {
  789.     return GetClassMemberIterator(FindMemberIndex(tag));
  790. }
  791. inline
  792. CObjectInfoMI CObjectInfo::GetMember(CObjectTypeInfoMI member) const
  793. {
  794.     return CMemberIterator(*this, member.GetMemberIndex());
  795. }
  796. inline
  797. CObjectInfoMI CObjectInfo::BeginMembers(void) const
  798. {
  799.     return CMemberIterator(*this);
  800. }
  801. inline
  802. CObjectInfoMI CObjectInfo::GetClassMemberIterator(TMemberIndex index) const
  803. {
  804.     return CMemberIterator(*this, index);
  805. }
  806. inline
  807. CObjectInfoMI CObjectInfo::FindClassMember(const string& name) const
  808. {
  809.     return GetClassMemberIterator(FindMemberIndex(name));
  810. }
  811. inline
  812. CObjectInfoMI CObjectInfo::FindClassMemberByTag(int tag) const
  813. {
  814.     return GetClassMemberIterator(FindMemberIndex(tag));
  815. }
  816. // choice interface
  817. inline
  818. CConstObjectInfoCV CConstObjectInfo::GetCurrentChoiceVariant(void) const
  819. {
  820.     return CChoiceVariant(*this, GetCurrentChoiceVariantIndex());
  821. }
  822. inline
  823. CObjectInfoCV CObjectInfo::GetCurrentChoiceVariant(void) const
  824. {
  825.     return CChoiceVariant(*this, GetCurrentChoiceVariantIndex());
  826. }
  827. #endif /* def OBJECTITER__HPP  &&  ndef OBJECTITER__INL */
  828. /* ---------------------------------------------------------------------------
  829. * $Log: objectiter.inl,v $
  830. * Revision 1000.0  2003/10/29 17:25:36  gouriano
  831. * PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.6
  832. *
  833. * Revision 1.6  2003/07/17 22:49:31  vasilche
  834. * Added export specifiers.
  835. * Added missing methods.
  836. *
  837. * Revision 1.5  2002/12/23 18:38:51  dicuccio
  838. * Added WIn32 export specifier: NCBI_XSERIAL_EXPORT.
  839. * Moved all CVS logs to the end.
  840. *
  841. * Revision 1.4  2002/09/09 18:09:37  grichenk
  842. * implemented GetChoiceObject()
  843. *
  844. * Revision 1.3  2001/05/17 14:58:40  lavr
  845. * Typos corrected
  846. *
  847. * Revision 1.2  2001/01/22 23:20:30  vakatov
  848. * + CObjectInfo::GetMember(), CConstObjectInfo::GetMember()
  849. *
  850. * Revision 1.1  2000/10/20 15:51:26  vasilche
  851. * Fixed data error processing.
  852. * Added interface for constructing container objects directly into output stream.
  853. * object.hpp, object.inl and object.cpp were split to
  854. * objectinfo.*, objecttype.*, objectiter.* and objectio.*.
  855. *
  856. * ===========================================================================
  857. */