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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: node.inl,v $
  4.  * PRODUCTION Revision 1000.2  2004/04/01 21:02:03  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [CORE_002] Dev-tree R1.13
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #if defined(HTML___NODE__HPP)  &&  !defined(HTML___NODE__INL)
  10. #define HTML___NODE__INL
  11. /*  $Id: node.inl,v 1000.2 2004/04/01 21:02:03 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.  */
  39. inline
  40. const string& CNCBINode::GetName(void) const
  41. {
  42.     return m_Name;
  43. }
  44. inline
  45. bool CNCBINode::HaveChildren(void) const
  46. {
  47. #if NCBI_LIGHTWEIGHT_LIST
  48.     return !m_Children.empty();
  49. #else
  50.     return m_Children.get() != 0;
  51. #endif
  52. }
  53. inline
  54. CNCBINode::TChildren& CNCBINode::Children(void)
  55. {
  56. #if NCBI_LIGHTWEIGHT_LIST
  57.     return m_Children;
  58. #else
  59.     return *m_Children;
  60. #endif
  61. }
  62. inline
  63. const CNCBINode::TChildren& CNCBINode::Children(void) const
  64. {
  65. #if NCBI_LIGHTWEIGHT_LIST
  66.     return m_Children;
  67. #else
  68.     return *m_Children;
  69. #endif
  70. }
  71. inline
  72. CNCBINode::TChildren& CNCBINode::GetChildren(void)
  73. {
  74. #if NCBI_LIGHTWEIGHT_LIST
  75.     return m_Children;
  76. #else
  77.     TChildren* children = m_Children.get();
  78.     if ( !children )
  79.         m_Children.reset(children = new TChildren);
  80.     return *children;
  81. #endif
  82. }
  83. inline
  84. CNCBINode::TChildren::iterator CNCBINode::ChildBegin(void)
  85. {
  86.     return Children().begin();
  87. }
  88. inline
  89. CNCBINode::TChildren::iterator CNCBINode::ChildEnd(void)
  90. {
  91.     return Children().end();
  92. }
  93. inline
  94. CNCBINode* CNCBINode::Node(TChildren::iterator i)
  95. {
  96.     return &**i;
  97. }
  98. inline
  99. CNCBINode::TChildren::const_iterator CNCBINode::ChildBegin(void) const
  100. {
  101.     return Children().begin();
  102. }
  103. inline
  104. CNCBINode::TChildren::const_iterator CNCBINode::ChildEnd(void) const
  105. {
  106.     return Children().end();
  107. }
  108. inline
  109. const CNCBINode* CNCBINode::Node(TChildren::const_iterator i)
  110. {
  111.     return &**i;
  112. }
  113. inline
  114. CNCBINode* CNCBINode::AppendChild(CNCBINode* child)
  115. {
  116.     if ( child ) {
  117.         DoAppendChild(child);
  118.     }
  119.     return this;
  120. }
  121. inline
  122. CNCBINode* CNCBINode::AppendChild(CNodeRef& ref)
  123. {
  124.     DoAppendChild(ref.GetPointer());
  125.     return this;
  126. }
  127. inline
  128. bool CNCBINode::HaveAttributes(void) const
  129. {
  130.     return m_Attributes.get() != 0;
  131. }
  132. inline 
  133. CNCBINode::TAttributes& CNCBINode::Attributes(void)
  134. {
  135.     return *m_Attributes;
  136. }
  137. inline 
  138. const CNCBINode::TAttributes& CNCBINode::Attributes(void) const
  139. {
  140.     return *m_Attributes;
  141. }
  142. inline
  143. CNCBINode::TAttributes& CNCBINode::GetAttributes(void)
  144. {
  145. #if NCBI_LIGHTWEIGHT_LIST
  146.     return m_Attributes;
  147. #else
  148.     TAttributes* attributes = m_Attributes.get();
  149.     if ( !attributes ) {
  150.         m_Attributes.reset(attributes = new TAttributes);
  151.     }
  152.     return *attributes;
  153. #endif
  154. }
  155. inline
  156. void CNCBINode::SetAttribute(const string& name, const string& value)
  157. {
  158.     DoSetAttribute(name, value, false);
  159. }
  160. inline
  161. void CNCBINode::SetOptionalAttribute(const string& name, const string& value)
  162. {
  163.     if ( !value.empty() ) {
  164.         SetAttribute(name, value);
  165.     }
  166. }
  167. inline
  168. void CNCBINode::SetOptionalAttribute(const string& name, bool value)
  169. {
  170.     if ( value ) {
  171.         SetAttribute(name);
  172.     }
  173. }
  174. inline
  175. void CNCBINode::SetOptionalAttribute(const char* name, const string& value)
  176. {
  177.     if ( !value.empty() ) {
  178.         SetAttribute(name, value);
  179.     }
  180. }
  181. inline
  182. void CNCBINode::SetOptionalAttribute(const char* name, bool value)
  183. {
  184.     if ( value ) {
  185.         SetAttribute(name);
  186.     }
  187. }
  188. inline
  189. size_t CNCBINode::GetRepeatCount(void)
  190. {
  191.     return m_RepeatCount;
  192. }
  193. inline
  194. void CNCBINode::SetRepeatCount(size_t count)
  195. {
  196.     m_RepeatCount = count;
  197. }
  198. inline
  199. void CNCBINode::RepeatTag(bool repeat)
  200. {
  201.     m_RepeatTag = repeat;
  202. }
  203. inline
  204. bool CNCBINode::NeedRepeatTag(void)
  205. {
  206.     return m_RepeatTag;
  207. }
  208. /*
  209.  * ===========================================================================
  210.  * $Log: node.inl,v $
  211.  * Revision 1000.2  2004/04/01 21:02:03  gouriano
  212.  * PRODUCTION: UPGRADED [CORE_002] Dev-tree R1.13
  213.  *
  214.  * Revision 1.13  2004/02/02 14:26:05  ivanov
  215.  * CNCBINode: added ability to repeat stored context
  216.  *
  217.  * Revision 1.12  2003/11/03 17:02:53  ivanov
  218.  * Some formal code rearrangement. Move log to end.
  219.  *
  220.  * Revision 1.11  2001/05/17 14:55:43  lavr
  221.  * Typos corrected
  222.  *
  223.  * Revision 1.10  2000/07/18 17:21:35  vasilche
  224.  * Added possibility to force output of empty attribute value.
  225.  * Added caching to CHTML_table, now large tables work much faster.
  226.  * Changed algorithm of emitting EOL symbols in html output.
  227.  *
  228.  * Revision 1.9  2000/03/29 15:50:39  vasilche
  229.  * Added const version of CRef - CConstRef.
  230.  * CRef and CConstRef now accept classes inherited from CObject.
  231.  *
  232.  * Revision 1.8  2000/03/07 15:40:37  vasilche
  233.  * Added AppendChild(CNodeRef&)
  234.  *
  235.  * Revision 1.7  2000/03/07 15:26:06  vasilche
  236.  * Removed second definition of CRef.
  237.  *
  238.  * Revision 1.6  1999/12/28 18:55:29  vasilche
  239.  * Reduced size of compiled object files:
  240.  * 1. avoid inline or implicit virtual methods (especially destructors).
  241.  * 2. avoid std::string's methods usage in inline methods.
  242.  * 3. avoid string literals ("xxx") in inline methods.
  243.  *
  244.  * Revision 1.5  1999/11/19 15:45:32  vasilche
  245.  * CNodeRef implemented as CRef<CNCBINode>
  246.  *
  247.  * Revision 1.4  1999/10/28 13:40:30  vasilche
  248.  * Added reference counters to CNCBINode.
  249.  *
  250.  * Revision 1.3  1999/01/21 16:18:04  sandomir
  251.  * minor changes due to NStr namespace to contain string utility functions
  252.  *
  253.  * Revision 1.2  1998/12/23 21:20:58  vasilche
  254.  * Added more HTML tags (almost all).
  255.  * Importent ones: all lists (OL, UL, DIR, MENU), fonts (FONT, BASEFONT).
  256.  *
  257.  * Revision 1.1  1998/12/21 22:24:57  vasilche
  258.  * A lot of cleaning.
  259.  *
  260.  * ===========================================================================
  261.  */
  262. #endif /* def HTML___NODE__HPP  &&  ndef HTML___NODE__INL */