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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: proj_datatool_generated_src.cpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/06/01 18:31:20  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.5
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /* $Id: proj_datatool_generated_src.cpp,v 1000.1 2004/06/01 18:31:20 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_datatool_generated_src.hpp>
  39. #include <app/project_tree_builder/file_contents.hpp>
  40. #include <app/project_tree_builder/proj_builder_app.hpp>
  41. BEGIN_NCBI_SCOPE
  42. CDataToolGeneratedSrc::CDataToolGeneratedSrc(void)
  43. {
  44. }
  45. CDataToolGeneratedSrc::CDataToolGeneratedSrc(const string& source_file_path)
  46. {
  47.     LoadFrom(source_file_path, this);
  48. }
  49. CDataToolGeneratedSrc::CDataToolGeneratedSrc(const CDataToolGeneratedSrc& src)
  50. {
  51.     SetFrom(src);
  52. }
  53. CDataToolGeneratedSrc& 
  54. CDataToolGeneratedSrc::operator= (const CDataToolGeneratedSrc& src)
  55. {
  56.     if(this != &src)
  57.     {
  58.         SetFrom(src);
  59.     }
  60.     return *this;
  61. }
  62. CDataToolGeneratedSrc::~CDataToolGeneratedSrc(void)
  63. {
  64. }
  65. bool CDataToolGeneratedSrc::operator== (const CDataToolGeneratedSrc& src) const
  66. {
  67.     return  m_SourceFile        == src.m_SourceFile    &&
  68.             m_SourceBaseDir     == src.m_SourceBaseDir &&
  69.             m_ImportModules     == src.m_ImportModules ;
  70. }
  71. bool CDataToolGeneratedSrc::operator<  (const CDataToolGeneratedSrc& src) const
  72. {
  73.     if (m_SourceFile < src.m_SourceFile)
  74.         return true;
  75.     else if (m_SourceFile > src.m_SourceFile)
  76.         return false;
  77.     else {
  78.         if (m_SourceBaseDir < src.m_SourceBaseDir)
  79.             return true;
  80.         else if (m_SourceBaseDir > src.m_SourceBaseDir)
  81.             return false;
  82.         else {
  83.             return m_ImportModules < src.m_ImportModules;
  84.         }
  85.     }
  86. }
  87. void CDataToolGeneratedSrc::LoadFrom(const string&          source_file_path,
  88.                                      CDataToolGeneratedSrc* src)
  89. {
  90.     src->Clear();
  91.     string dir;
  92.     string base;
  93.     string ext;
  94.     CDirEntry::SplitPath(source_file_path, &dir, &base, &ext);
  95.     src->m_SourceBaseDir = dir;
  96.     src->m_SourceFile    = base + ext;
  97.     {{
  98.         // module file
  99.         CSimpleMakeFileContents fc(CDirEntry::ConcatPath(dir, 
  100.                                                          base + ".module"));
  101.     
  102.         CSimpleMakeFileContents::TContents::const_iterator p = 
  103.             fc.m_Contents.find("MODULE_IMPORT");
  104.         if (p != fc.m_Contents.end()) {
  105.             const list<string>& modules = p->second;
  106.             ITERATE(list<string>, p, modules) {
  107.                 // add ext from source file to all modules to import
  108.                 const string& module = *p;
  109.                 src->m_ImportModules.push_back
  110.                                       (CDirEntry::NormalizePath(module + ext));
  111.             }
  112.         }
  113.     }}
  114.     {{
  115.         // files file
  116.         string files_path = CDirEntry::ConcatPath(dir, 
  117.                                                   base + ".files");
  118.         if ( CDirEntry(files_path).Exists() ) {
  119.             CSimpleMakeFileContents fc(files_path);
  120.             // GENERATED_HPP
  121.             CSimpleMakeFileContents::TContents::const_iterator p = 
  122.                 fc.m_Contents.find("GENERATED_HPP");
  123.             if (p != fc.m_Contents.end())
  124.                 src->m_GeneratedHpp = p->second;
  125.             // GENERATED_CPP
  126.             p = fc.m_Contents.find("GENERATED_CPP");
  127.             if (p != fc.m_Contents.end())
  128.                 src->m_GeneratedCpp = p->second;
  129.             // GENERATED_HPP_LOCAL
  130.             p = fc.m_Contents.find("GENERATED_HPP_LOCAL");
  131.             if (p != fc.m_Contents.end())
  132.                 src->m_GeneratedHppLocal = p->second;
  133.             // GENERATED_CPP_LOCAL
  134.             p = fc.m_Contents.find("GENERATED_CPP_LOCAL");
  135.             if (p != fc.m_Contents.end())
  136.                 src->m_GeneratedCppLocal = p->second;
  137.             // SKIPPED_HPP
  138.             p = fc.m_Contents.find("SKIPPED_HPP");
  139.             if (p != fc.m_Contents.end())
  140.                 src->m_SkippedHpp = p->second;
  141.             // SKIPPED_CPP
  142.             p = fc.m_Contents.find("SKIPPED_CPP");
  143.             if (p != fc.m_Contents.end())
  144.                 src->m_SkippedCpp = p->second;
  145.             // SKIPPED_HPP_LOCAL
  146.             p = fc.m_Contents.find("SKIPPED_HPP_LOCAL");
  147.             if (p != fc.m_Contents.end())
  148.                 src->m_SkippedHppLocal = p->second;
  149.             // SKIPPED_CPP_LOCAL
  150.             p = fc.m_Contents.find("SKIPPED_CPP_LOCAL");
  151.             if (p != fc.m_Contents.end())
  152.                 src->m_SkippedCppLocal = p->second;
  153.         } else {
  154.             LOG_POST(Warning << "Can not find file : " 
  155.                                 + files_path + " for datatool source");
  156.         }
  157.     }}
  158. }
  159. bool CDataToolGeneratedSrc::IsEmpty(void) const
  160. {
  161.     return m_SourceFile.empty();
  162. }
  163. void CDataToolGeneratedSrc::Clear(void)
  164. {
  165.     m_SourceFile.erase();
  166.     m_SourceBaseDir.erase();
  167.     m_ImportModules.clear();
  168.     m_GeneratedHpp.clear();
  169.     m_GeneratedCpp.clear();
  170.     m_GeneratedHppLocal.clear();
  171.     m_GeneratedCppLocal.clear();
  172.     m_SkippedHpp.clear();
  173.     m_SkippedCpp.clear();
  174.     m_SkippedHppLocal.clear();
  175.     m_SkippedCppLocal.clear();
  176. }
  177. void CDataToolGeneratedSrc::SetFrom(const CDataToolGeneratedSrc& src)
  178. {
  179.     m_SourceFile        = src.m_SourceFile;
  180.     m_SourceBaseDir     = src.m_SourceBaseDir;
  181.     m_ImportModules     = src.m_ImportModules;
  182.     m_GeneratedHpp      = src.m_GeneratedHpp;
  183.     m_GeneratedCpp      = src.m_GeneratedCpp;
  184.     m_GeneratedHppLocal = src.m_GeneratedHppLocal;
  185.     m_GeneratedCppLocal = src.m_GeneratedCppLocal;
  186.     m_SkippedHpp        = src.m_SkippedHpp;
  187.     m_SkippedCpp        = src.m_SkippedCpp;
  188.     m_SkippedHppLocal   = src.m_SkippedHppLocal;
  189.     m_SkippedCppLocal   = src.m_SkippedCppLocal;
  190. }
  191. END_NCBI_SCOPE
  192. /*
  193.  * ===========================================================================
  194.  * $Log: proj_datatool_generated_src.cpp,v $
  195.  * Revision 1000.1  2004/06/01 18:31:20  gouriano
  196.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.5
  197.  *
  198.  * Revision 1.5  2004/05/21 21:41:41  gorelenk
  199.  * Added PCH ncbi_pch.hpp
  200.  *
  201.  * Revision 1.4  2004/03/10 16:48:53  gorelenk
  202.  * Implemented operators == and < of class CDataToolGeneratedSrc.
  203.  *
  204.  * Revision 1.3  2004/02/20 22:53:58  gorelenk
  205.  * Added analysis of ASN projects depends.
  206.  *
  207.  * Revision 1.2  2004/02/13 23:07:38  gorelenk
  208.  * Added data members-abstraction of datatool generated files.
  209.  *
  210.  * Revision 1.1  2004/01/30 20:44:22  gorelenk
  211.  * Initial revision.
  212.  *
  213.  * ===========================================================================
  214.  */