1 /* $Id: proj_datatool_generated_src.cpp 465020 2015-04-16 13:02:58Z gouriano $
2 * ===========================================================================
3 *
4 * PUBLIC DOMAIN NOTICE
5 * National Center for Biotechnology Information
6 *
7 * This software/database is a "United States Government Work" under the
8 * terms of the United States Copyright Act. It was written as part of
9 * the author's official duties as a United States Government employee and
10 * thus cannot be copyrighted. This software/database is freely available
11 * to the public for use. The National Library of Medicine and the U.S.
12 * Government have not placed any restriction on its use or reproduction.
13 *
14 * Although all reasonable efforts have been taken to ensure the accuracy
15 * and reliability of the software and data, the NLM and the U.S.
16 * Government do not and cannot warrant the performance or results that
17 * may be obtained by using this software or data. The NLM and the U.S.
18 * Government disclaim all warranties, express or implied, including
19 * warranties of performance, merchantability or fitness for any particular
20 * purpose.
21 *
22 * Please cite the author in any work or product based on this material.
23 *
24 * ===========================================================================
25 *
26 * Author: Viatcheslav Gorelenkov
27 *
28 */
29
30 #include <ncbi_pch.hpp>
31 #include "proj_datatool_generated_src.hpp"
32 #include "file_contents.hpp"
33 #include "proj_builder_app.hpp"
34 #include "ptb_err_codes.hpp"
35
36
37 BEGIN_NCBI_SCOPE
38
39
CDataToolGeneratedSrc(void)40 CDataToolGeneratedSrc::CDataToolGeneratedSrc(void)
41 {
42 }
43
44
CDataToolGeneratedSrc(const string & source_file_path)45 CDataToolGeneratedSrc::CDataToolGeneratedSrc(const string& source_file_path)
46 {
47 LoadFrom(source_file_path, this);
48 }
49
50
CDataToolGeneratedSrc(const CDataToolGeneratedSrc & src)51 CDataToolGeneratedSrc::CDataToolGeneratedSrc(const CDataToolGeneratedSrc& src)
52 {
53 SetFrom(src);
54 }
55
56
57 CDataToolGeneratedSrc&
operator =(const CDataToolGeneratedSrc & src)58 CDataToolGeneratedSrc::operator= (const CDataToolGeneratedSrc& src)
59 {
60 if(this != &src)
61 {
62 SetFrom(src);
63 }
64 return *this;
65 }
66
67
~CDataToolGeneratedSrc(void)68 CDataToolGeneratedSrc::~CDataToolGeneratedSrc(void)
69 {
70 }
71
72
operator ==(const CDataToolGeneratedSrc & src) const73 bool CDataToolGeneratedSrc::operator== (const CDataToolGeneratedSrc& src) const
74 {
75
76 return m_SourceFile == src.m_SourceFile &&
77 m_SourceBaseDir == src.m_SourceBaseDir &&
78 m_ImportModules == src.m_ImportModules ;
79 }
80
81
operator <(const CDataToolGeneratedSrc & src) const82 bool CDataToolGeneratedSrc::operator< (const CDataToolGeneratedSrc& src) const
83 {
84 if (m_SourceFile < src.m_SourceFile)
85 return true;
86 else if (m_SourceFile > src.m_SourceFile)
87 return false;
88 else {
89 if (m_SourceBaseDir < src.m_SourceBaseDir)
90 return true;
91 else if (m_SourceBaseDir > src.m_SourceBaseDir)
92 return false;
93 else {
94 return m_ImportModules < src.m_ImportModules;
95 }
96 }
97 }
98
99
LoadFrom(const string & source_file_path,CDataToolGeneratedSrc * src)100 void CDataToolGeneratedSrc::LoadFrom(const string& source_file_path,
101 CDataToolGeneratedSrc* src)
102 {
103 src->Clear();
104
105 string dir;
106 string base;
107 string ext;
108 CDirEntry::SplitPath(source_file_path, &dir, &base, &ext);
109
110 src->m_SourceBaseDir = dir;
111 src->m_SourceCPP = base;
112 src->m_SourceFile = base + ext;
113
114 {{
115 // module file
116 string module_path = CDirEntry::ConcatPath(dir,
117 base + ".module");
118 if ( CDirEntry(module_path).Exists() ) {
119 CSimpleMakeFileContents fc(module_path, eMakeType_Undefined);
120 CSimpleMakeFileContents::TContents::const_iterator p =
121 fc.m_Contents.find("MODULE_IMPORT");
122 if (p != fc.m_Contents.end()) {
123 const list<string>& modules = p->second;
124 ITERATE(list<string>, p, modules) {
125 // add ext from source file to all modules to import
126 const string& module = *p;
127 src->m_ImportModules.push_back
128 (CDirEntry::NormalizePath(module + ext));
129 }
130 }
131 } else {
132 // PTB_INFO_EX(module_path, ePTB_FileNotFound,
133 // "Datatool module file not found");
134 }
135 }}
136
137 {{
138 // files file
139 string files_path = CDirEntry::ConcatPath(dir,
140 base + ".files");
141
142 if ( CDirEntry(files_path).Exists() ) {
143
144 CSimpleMakeFileContents fc(files_path, eMakeType_Undefined);
145
146 // GENERATED_HPP
147 CSimpleMakeFileContents::TContents::const_iterator p =
148 fc.m_Contents.find("GENERATED_HPP");
149 if (p != fc.m_Contents.end())
150 src->m_GeneratedHpp = p->second;
151
152 // GENERATED_CPP
153 p = fc.m_Contents.find("GENERATED_CPP");
154 if (p != fc.m_Contents.end())
155 src->m_GeneratedCpp = p->second;
156
157 // GENERATED_HPP_LOCAL
158 p = fc.m_Contents.find("GENERATED_HPP_LOCAL");
159 if (p != fc.m_Contents.end())
160 src->m_GeneratedHppLocal = p->second;
161
162 // GENERATED_CPP_LOCAL
163 p = fc.m_Contents.find("GENERATED_CPP_LOCAL");
164 if (p != fc.m_Contents.end())
165 src->m_GeneratedCppLocal = p->second;
166
167 // SKIPPED_HPP
168 p = fc.m_Contents.find("SKIPPED_HPP");
169 if (p != fc.m_Contents.end())
170 src->m_SkippedHpp = p->second;
171
172 // SKIPPED_CPP
173 p = fc.m_Contents.find("SKIPPED_CPP");
174 if (p != fc.m_Contents.end())
175 src->m_SkippedCpp = p->second;
176
177 // SKIPPED_HPP_LOCAL
178 p = fc.m_Contents.find("SKIPPED_HPP_LOCAL");
179 if (p != fc.m_Contents.end())
180 src->m_SkippedHppLocal = p->second;
181
182 // SKIPPED_CPP_LOCAL
183 p = fc.m_Contents.find("SKIPPED_CPP_LOCAL");
184 if (p != fc.m_Contents.end())
185 src->m_SkippedCppLocal = p->second;
186 } else {
187 // PTB_INFO_EX(files_path, ePTB_FileNotFound,
188 // "Datatool-generated file not found");
189 }
190
191
192 }}
193
194 }
195
196
IsEmpty(void) const197 bool CDataToolGeneratedSrc::IsEmpty(void) const
198 {
199 return m_SourceFile.empty();
200 }
201
202
Clear(void)203 void CDataToolGeneratedSrc::Clear(void)
204 {
205 m_SourceFile.erase();
206 m_SourceCPP.erase();
207 m_SourceBaseDir.erase();
208 m_ImportModules.clear();
209
210 m_GeneratedHpp.clear();
211 m_GeneratedCpp.clear();
212 m_GeneratedHppLocal.clear();
213 m_GeneratedCppLocal.clear();
214 m_SkippedHpp.clear();
215 m_SkippedCpp.clear();
216 m_SkippedHppLocal.clear();
217 m_SkippedCppLocal.clear();
218 }
219
220
SetFrom(const CDataToolGeneratedSrc & src)221 void CDataToolGeneratedSrc::SetFrom(const CDataToolGeneratedSrc& src)
222 {
223 m_SourceFile = src.m_SourceFile;
224 m_SourceCPP = src.m_SourceCPP;
225 m_SourceBaseDir = src.m_SourceBaseDir;
226 m_ImportModules = src.m_ImportModules;
227
228 m_GeneratedHpp = src.m_GeneratedHpp;
229 m_GeneratedCpp = src.m_GeneratedCpp;
230 m_GeneratedHppLocal = src.m_GeneratedHppLocal;
231 m_GeneratedCppLocal = src.m_GeneratedCppLocal;
232 m_SkippedHpp = src.m_SkippedHpp;
233 m_SkippedCpp = src.m_SkippedCpp;
234 m_SkippedHppLocal = src.m_SkippedHppLocal;
235 m_SkippedCppLocal = src.m_SkippedCppLocal;
236 }
237
238
239
240
241 END_NCBI_SCOPE
242