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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: proj_item.cpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/06/01 18:31:23  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.23
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /* $Id: proj_item.cpp,v 1000.1 2004/06/01 18:31:23 gouriano Exp $
  10.  * ===========================================================================
  11.  *
  12.  *                            PUBLIC DOMAIN NOTICE
  13.  *               National Center for Biotechnology Information
  14.  *
  15.  *  This software/database is a "United States Government Work" under the
  16.  *  terms of the United States Copyright Act.  It was written as part of
  17.  *  the author's official duties as a United States Government employee and
  18.  *  thus cannot be copyrighted.  This software/database is freely available
  19.  *  to the public for use. The National Library of Medicine and the U.S.
  20.  *  Government have not placed any restriction on its use or reproduction.
  21.  *
  22.  *  Although all reasonable efforts have been taken to ensure the accuracy
  23.  *  and reliability of the software and data, the NLM and the U.S.
  24.  *  Government do not and cannot warrant the performance or results that
  25.  *  may be obtained by using this software or data. The NLM and the U.S.
  26.  *  Government disclaim all warranties, express or implied, including
  27.  *  warranties of performance, merchantability or fitness for any particular
  28.  *  purpose.
  29.  *
  30.  *  Please cite the author in any work or product based on this material.
  31.  *
  32.  * ===========================================================================
  33.  *
  34.  * Author:  Viatcheslav Gorelenkov
  35.  *
  36.  */
  37. #include <ncbi_pch.hpp>
  38. #include <app/project_tree_builder/proj_item.hpp>
  39. BEGIN_NCBI_SCOPE
  40. //-----------------------------------------------------------------------------
  41. CProjKey::CProjKey(void)
  42. :m_Type(eNoProj)
  43. {
  44. }
  45. CProjKey::CProjKey(TProjType type, const string& project_id)
  46. :m_Type(type),
  47.  m_Id  (project_id)
  48. {
  49. }
  50. CProjKey::CProjKey(const CProjKey& key)
  51. :m_Type(key.m_Type),
  52.  m_Id  (key.m_Id)
  53. {
  54. }
  55. CProjKey& CProjKey::operator= (const CProjKey& key)
  56. {
  57.     if (this != &key) {
  58.         m_Type = key.m_Type;
  59.         m_Id   = key.m_Id;
  60.     }
  61.     return *this;
  62. }
  63. CProjKey::~CProjKey(void)
  64. {
  65. }
  66. bool CProjKey::operator< (const CProjKey& key) const
  67. {
  68.     if (m_Type < key.m_Type)
  69.         return true;
  70.     else if (m_Type > key.m_Type)
  71.         return false;
  72.     else
  73.         return m_Id < key.m_Id;
  74. }
  75. bool CProjKey::operator== (const CProjKey& key) const
  76. {
  77.     return m_Type == key.m_Type && m_Id == key.m_Id;
  78. }
  79. bool CProjKey::operator!= (const CProjKey& key) const
  80. {
  81.     return !(*this == key);
  82. }
  83. CProjKey::TProjType CProjKey::Type(void) const
  84. {
  85.     return m_Type;
  86. }
  87. const string& CProjKey::Id(void) const
  88. {
  89.     return m_Id;
  90. }
  91. //-----------------------------------------------------------------------------
  92. CProjItem::CProjItem(void)
  93. {
  94.     Clear();
  95. }
  96. CProjItem::CProjItem(const CProjItem& item)
  97. {
  98.     SetFrom(item);
  99. }
  100. CProjItem& CProjItem::operator= (const CProjItem& item)
  101. {
  102.     if (this != &item) {
  103.         Clear();
  104.         SetFrom(item);
  105.     }
  106.     return *this;
  107. }
  108. CProjItem::CProjItem(TProjType type,
  109.                      const string& name,
  110.                      const string& id,
  111.                      const string& sources_base,
  112.                      const list<string>&   sources, 
  113.                      const list<CProjKey>& depends,
  114.                      const list<string>&   requires,
  115.                      const list<string>&   libs_3_party,
  116.                      const list<string>&   include_dirs,
  117.                      const list<string>&   defines)
  118.    :m_Name    (name), 
  119.     m_ID      (id),
  120.     m_ProjType(type),
  121.     m_SourcesBaseDir (sources_base),
  122.     m_Sources (sources), 
  123.     m_Depends (depends),
  124.     m_Requires(requires),
  125.     m_Libs3Party (libs_3_party),
  126.     m_IncludeDirs(include_dirs),
  127.     m_Defines (defines)
  128. {
  129. }
  130. CProjItem::~CProjItem(void)
  131. {
  132.     Clear();
  133. }
  134. void CProjItem::Clear(void)
  135. {
  136.     m_ProjType = CProjKey::eNoProj;
  137. }
  138. void CProjItem::SetFrom(const CProjItem& item)
  139. {
  140.     m_Name           = item.m_Name;
  141.     m_ID      = item.m_ID;
  142.     m_ProjType       = item.m_ProjType;
  143.     m_SourcesBaseDir = item.m_SourcesBaseDir;
  144.     m_Sources        = item.m_Sources;
  145.     m_Depends        = item.m_Depends;
  146.     m_Requires       = item.m_Requires;
  147.     m_Libs3Party     = item.m_Libs3Party;
  148.     m_IncludeDirs    = item.m_IncludeDirs;
  149.     m_DatatoolSources= item.m_DatatoolSources;
  150.     m_Defines        = item.m_Defines;
  151.     m_NcbiCLibs      = item.m_NcbiCLibs;
  152. }
  153. END_NCBI_SCOPE
  154. /*
  155.  * ===========================================================================
  156.  * $Log: proj_item.cpp,v $
  157.  * Revision 1000.1  2004/06/01 18:31:23  gouriano
  158.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.23
  159.  *
  160.  * Revision 1.23  2004/05/21 21:41:41  gorelenk
  161.  * Added PCH ncbi_pch.hpp
  162.  *
  163.  * Revision 1.22  2004/03/02 16:32:06  gorelenk
  164.  * Implementation of classes CProjectItemsTree CCyclicDepends
  165.  * SProjectTreeFolder CProjectTreeFolders moved to proj_tree.cpp
  166.  * Implementation of classes SMakeProjectT SAppProjectT SLibProjectT
  167.  * SAsnProjectT SAsnProjectSingleT SAsnProjectMultipleT and
  168.  * CProjectTreeBuilder moved to proj_tree_builder.cpp.
  169.  *
  170.  * Revision 1.21  2004/03/01 17:59:35  gorelenk
  171.  * Added implementation of class CCyclicDepends member-functions.
  172.  *
  173.  * Revision 1.20  2004/02/27 18:08:25  gorelenk
  174.  * Changed implementation of CProjectTreeBuilder::ProcessDir.
  175.  *
  176.  * Revision 1.19  2004/02/26 21:29:04  gorelenk
  177.  * Changed implementations of member-functions of class CProjectTreeBuilder:
  178.  * BuildProjectTree, BuildOneProjectTree and ProcessDir because of use
  179.  * IProjectFilter* filter instead of const string& subtree_to_build.
  180.  *
  181.  * Revision 1.18  2004/02/24 17:20:11  gorelenk
  182.  * Added implementation of member-function CreateNcbiCToolkitLibs
  183.  * of struct SAppProjectT.
  184.  * Changed implementation of member-function DoCreate
  185.  * of struct SAppProjectT.
  186.  *
  187.  * Revision 1.17  2004/02/23 20:58:41  gorelenk
  188.  * Fixed double properties apperience in generated MSVC projects.
  189.  *
  190.  * Revision 1.16  2004/02/20 22:53:59  gorelenk
  191.  * Added analysis of ASN projects depends.
  192.  *
  193.  * Revision 1.15  2004/02/18 23:35:40  gorelenk
  194.  * Added special processing for NCBI_C_LIBS tag.
  195.  *
  196.  * Revision 1.14  2004/02/13 16:02:24  gorelenk
  197.  * Modified procedure of depends resolve.
  198.  *
  199.  * Revision 1.13  2004/02/11 16:46:29  gorelenk
  200.  * Cnanged LOG_POST message.
  201.  *
  202.  * Revision 1.12  2004/02/10 21:20:44  gorelenk
  203.  * Added support of DATATOOL_SRC tag.
  204.  *
  205.  * Revision 1.11  2004/02/10 18:17:05  gorelenk
  206.  * Added support of depends fine-tuning.
  207.  *
  208.  * Revision 1.10  2004/02/06 23:15:00  gorelenk
  209.  * Implemented support of ASN projects, semi-auto configure,
  210.  * CPPFLAGS support. Second working version.
  211.  *
  212.  * Revision 1.9  2004/02/04 23:58:29  gorelenk
  213.  * Added support of include dirs and 3-rd party libs.
  214.  *
  215.  * Revision 1.8  2004/02/03 17:12:55  gorelenk
  216.  * Changed implementation of classes CProjItem and CProjectItemsTree.
  217.  *
  218.  * Revision 1.7  2004/01/30 20:44:22  gorelenk
  219.  * Initial revision.
  220.  *
  221.  * Revision 1.6  2004/01/28 17:55:50  gorelenk
  222.  * += For msvc makefile support of :
  223.  *                 Requires tag, ExcludeProject tag,
  224.  *                 AddToProject section (SourceFiles and IncludeDirs),
  225.  *                 CustomBuild section.
  226.  * += For support of user local site.
  227.  *
  228.  * Revision 1.5  2004/01/26 19:27:30  gorelenk
  229.  * += MSVC meta makefile support
  230.  * += MSVC project makefile support
  231.  *
  232.  * Revision 1.4  2004/01/22 17:57:55  gorelenk
  233.  * first version
  234.  *
  235.  * ===========================================================================
  236.  */