# | Line 1 | Line 1 | This basic Periodic Table class was originally taken f | |
---|---|---|
1 | /********************************************************************** | |
2 | ||
3 | This basic Periodic Table class was originally taken from the data.cpp | |
4 | < | file in OpenBabel. The code has been modified to match the OOPSE coding style. |
4 | > | file in OpenBabel. The code has been modified to match the OpenMD coding style. |
5 | ||
6 | We have retained the OpenBabel copyright and GPL license on this class: | |
7 | ||
# | Line 29 | Line 29 | GNU General Public License for more details. | |
29 | * @version 1.0 | |
30 | */ | |
31 | ||
32 | + | #include <iostream> |
33 | #include "config.h" | |
34 | + | #include <cstdlib> |
35 | #include <string> | |
36 | #include <fstream> | |
37 | + | #include <cstdlib> |
38 | #include "utils/ElementsTable.hpp" | |
39 | #include "utils/simError.h" | |
40 | + | #include "io/basic_ifstrstream.hpp" |
41 | ||
42 | #if !HAVE_STRNCASECMP | |
43 | extern "C" int strncasecmp(const char *s1, const char *s2, size_t n); | |
# | Line 49 | Line 53 | extern "C" int strncasecmp(const char *s1, const char | |
53 | #define BUFF_SIZE 32768 | |
54 | #endif | |
55 | ||
56 | < | namespace oopse { |
56 | > | namespace OpenMD { |
57 | ||
58 | ElementsTable etab; | |
59 | ||
# | Line 74 | Line 78 | namespace oopse { | |
78 | RealType red, green, blue; | |
79 | ||
80 | // skip comment line (at the top) | |
77 | – | |
81 | if (line[0] != '#') { | |
82 | sscanf(line,"%d %5s %lf %*f %lf %d %lf %lf %lf %lf %lf %lf %lf %255s", | |
83 | &num, | |
# | Line 95 | Line 98 | namespace oopse { | |
98 | elNeg, ionize, elAffin, red, green, blue, | |
99 | name); | |
100 | elements_.push_back(ele); | |
101 | + | |
102 | } | |
103 | } | |
104 | ||
# | Line 105 | Line 109 | namespace oopse { | |
109 | return elements_.size(); | |
110 | } | |
111 | ||
112 | < | char *ElementsTable::GetSymbol(int atomicnum) { |
112 | > | const char *ElementsTable::GetSymbol(int atomicnum) { |
113 | if (!init_) | |
114 | Init(); | |
115 | ||
# | Line 284 | Line 288 | namespace oopse { | |
288 | init_ = true; | |
289 | ||
290 | std::string buffer, subbuffer; | |
291 | < | std::ifstream ifs1, ifs2, ifs3, ifs4, *ifsP; |
291 | > | ifstrstream ifs1, ifs2, ifs3, ifs4, *ifsP; |
292 | // First, look for an environment variable | |
293 | if (getenv(envvar_.c_str()) != NULL) { | |
294 | buffer = getenv(envvar_.c_str()); | |
295 | buffer += FILE_SEP_CHAR; | |
296 | ||
297 | + | |
298 | + | |
299 | + | |
300 | if (!subdir_.empty()) { | |
301 | subbuffer = buffer; | |
302 | subbuffer += subdir_; | |
303 | subbuffer += FILE_SEP_CHAR; | |
304 | } | |
305 | ||
306 | + | |
307 | + | |
308 | buffer += filename_; | |
309 | subbuffer += filename_; | |
310 | + | |
311 | ||
312 | ifs1.open(subbuffer.c_str()); | |
313 | ifsP= &ifs1; | |
314 | < | if (!(*ifsP)) { |
314 | > | if (!(ifsP->is_open())) { |
315 | ifs2.open(buffer.c_str()); | |
316 | ifsP = &ifs2; | |
317 | } | |
318 | + | |
319 | } else { | |
320 | sprintf( painCave.errMsg, | |
321 | "ElementsTable error.\n" | |
# | Line 317 | Line 328 | namespace oopse { | |
328 | if ((*ifsP)) { | |
329 | while(ifsP->getline(charBuffer,BUFF_SIZE)) | |
330 | ParseLine(charBuffer); | |
331 | < | |
332 | < | if (ifs1) |
333 | < | ifs1.close(); |
334 | < | if (ifs2) |
335 | < | ifs2.close(); |
336 | < | if (ifs3) |
337 | < | ifs3.close(); |
338 | < | if (ifs4) |
339 | < | ifs4.close(); |
331 | > | |
332 | > | if (ifs1) |
333 | > | ifs1.close(); |
334 | > | if (ifs2) |
335 | > | ifs2.close(); |
336 | > | if (ifs3) |
337 | > | ifs3.close(); |
338 | > | if (ifs4) |
339 | > | ifs4.close(); |
340 | > | |
341 | > | if (GetSize() == 0) { |
342 | > | sprintf( painCave.errMsg, |
343 | > | "ElementsTable error.\n" |
344 | > | "\tCannot initialize database %s \n", filename_.c_str()); |
345 | > | painCave.isFatal = 0; |
346 | > | simError(); |
347 | > | } |
348 | ||
330 | – | if (GetSize() == 0) { |
331 | – | sprintf( painCave.errMsg, |
332 | – | "ElementsTable error.\n" |
333 | – | "\tCannot initialize database %s \n", filename_.c_str()); |
334 | – | painCave.isFatal = 0; |
335 | – | simError(); |
349 | } | |
337 | – | |
338 | – | } |
350 | ||
351 | } | |
352 | } |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |