source: src/Element/periodentafel.hpp@ 88bb6b

Last change on this file since 88bb6b was 47ed3d, checked in by Frederik Heber <heber@…>, 14 years ago

Removed some old output functions in element, Formula, and molecule.

  • This is preparatory for refactoring element into a more general concept that can contain both chemical and derived elements suitable for empirical potential parametrization storage.
  • Removed functions in element: Output(), Checkout().
  • Removed function Formula::checkOut().
  • Removed function molecule::Checkout().
  • functionality added to periodentafel::OutputElement().
  • Property mode set to 100755
File size: 2.9 KB
RevLine 
[68cb0f]1#ifndef PERIODENTAFEL_HPP_
2#define PERIODENTAFEL_HPP_
3
[f66195]4/*********************************************** includes ***********************************/
5
[68cb0f]6// include config.h
7#ifdef HAVE_CONFIG_H
8#include <config.h>
9#endif
10
[986ed3]11#include <iosfwd>
[ead4e6]12#include <map>
[f308e6]13#include <string>
[68cb0f]14
[e4fe8d]15#include "Helpers/defs.hpp"
[ead4e6]16#include "types.hpp"
[68cb0f]17
[b60804]18#include "boost/serialization/array.hpp"
19#include "boost/serialization/map.hpp"
20
[f66195]21/****************************************** forward declarations *****************************/
22
23class element;
24
25/********************************************** declarations *******************************/
[6ac7ee]26
[68cb0f]27
28/** Periodentafel is a list of all elements sorted by their atomic number.
29 */
30class periodentafel {
[ead4e6]31 /******* Types *********/
[4eb4fe]32 friend class periodentafelTest;
[b60804]33private:
34 typedef std::map<atomicNumber_t,element*> elementSet;
35public:
36 typedef elementSet::iterator iterator;
37 typedef elementSet::const_iterator const_iterator;
38 typedef std::reverse_iterator<const_iterator> reverse_iterator;
39
40 /******* Functions *********/
41public:
[4ae823]42 periodentafel(const bool DoLoad = false);
[042f82]43 ~periodentafel();
[6ac7ee]44
[e5c0a1]45 iterator AddElement(element * pointer);
46 size_t RemoveElement(const element * pointer);
[61745cc]47 size_t RemoveElement(atomicNumber_t);
[ead4e6]48 void CleanupPeriodtable();
[e5c0a1]49 const element * FindElement(atomicNumber_t) const;
50 const element * FindElement(const std::string &shorthand) const;
51 const element * AskElement() const;
52 const element * EnterElement();
53
54 const_iterator begin() const;
55 const_iterator end() const;
56 reverse_iterator rbegin() const;
57 reverse_iterator rend() const;
[ead4e6]58 bool Output(std::ostream * const output) const;
[47ed3d]59 void OutputElement(std::ostream * const output, const element *elem) const;
[fb73b8]60 bool LoadPeriodentafel(const char * const path);
61 bool StorePeriodentafel(const char * const path) const;
[6ac7ee]62
[b60804]63 bool operator==(const periodentafel &other) const;
64
65 bool operator!=(const periodentafel &other) const {
66 return !(*this == other);
67 }
[4eb4fe]68
[b60804]69private:
70 friend class boost::serialization::access;
71 // serialization
72 template<class Archive>
73 void serialize(Archive & ar, const unsigned int version)
74 {
75 ar & boost::serialization::make_array<char>(header1, MAXSTRINGSIZE);
76 ar & boost::serialization::make_array<char>(header2, MAXSTRINGSIZE);
77 ar & elements;
78 }
79
[4ae823]80 void ScanPeriodentafel();
[b60804]81 bool LoadColorDatabase(std::istream &input);
[e5c0a1]82 bool LoadElementsDatabase(std::istream &input);
[67c92b]83 bool LoadElectronegativityDatabase(std::istream &input);
84 bool LoadValenceDatabase(std::istream &input);
85 bool LoadOrbitalsDatabase(std::istream &input);
86 bool LoadHBondAngleDatabase(std::istream &input);
87 bool LoadHBondLengthsDatabase(std::istream &input);
[4eb4fe]88
[b60804]89 /******* Variables *********/
90private:
91 char header1[MAXSTRINGSIZE]; //!< store first header line
92 char header2[MAXSTRINGSIZE]; //!< store second header line
[68cb0f]93
[b60804]94 elementSet elements;
95};
[68cb0f]96
97#endif /*PERIODENTAFEL_HPP_*/
Note: See TracBrowser for help on using the repository browser.