indigoX
electron_graph.hpp
Go to the documentation of this file.
1 //
2 // electron_graph.hpp
3 // indigox
4 //
5 // Created by Welsh, Ivan on 12/09/17.
6 // Copyright © 2017 Allison Group. All rights reserved.
7 //
8 
9 #ifndef ELECTRON_GRAPH_HPP
10 #define ELECTRON_GRAPH_HPP
11 
12 #include "../utils/graph.hpp"
13 #include "molecular_graph.hpp"
14 
15 #include <cstdint>
16 #include <iostream>
17 
18 namespace indigox {
19 
20  enum class SortOrder;
21 
22  struct ElnVertProp {
23  MolVertPair id;
25  uint8_t valence;
26  uint8_t atomic_number;
27  uint8_t electron_count;
28  uint8_t pre_placed;
29  uint8_t target_octet;
31  int8_t formal_charge;
32  SortOrder sort_score;
33  };
34 
35  typedef utils::Graph<ElnVertProp> _ElnGraph;
36  typedef _ElnGraph::VertType ElnVertex;
37  typedef _ElnGraph::VertIter ElnVertexIter;
38  typedef _ElnGraph::EdgeType ElnEdge;
39  typedef _ElnGraph::EdgeIter ElnEdgeIter;
40  typedef _ElnGraph::NbrsIter ElnNeighboursIter;
41 
42  typedef _ElnGraph::VertIterPair ElnVertIterPair;
43  typedef _ElnGraph::EdgeIterPair ElnEdgeIterPair;
44  typedef _ElnGraph::NbrsIterPair ElnNbrsIterPair;
45 
46  class _ElectronGraph : public _ElnGraph {
47 
48  public:
49  _ElectronGraph(); // = default;
50  _ElectronGraph(const _MolecularGraph &G);
51 
52  ElnVertex GetVertex(MolVertPair id) const;
53  };
54  typedef std::shared_ptr<_ElectronGraph> ElectronGraph;
55 } // namespace indigox
56 
57 #endif /* ELECTRON_GRAPH_HPP */
_ElnGraph::EdgeIterPair ElnEdgeIterPair
Definition: electron_graph.hpp:43
std::shared_ptr< _ElectronGraph > ElectronGraph
Definition: electron_graph.hpp:54
Definition: electron_graph.hpp:46
uint8_t atomic_number
Definition: electron_graph.hpp:26
utils::Graph< ElnVertProp > _ElnGraph
Definition: electron_graph.hpp:35
_ElnGraph::EdgeType ElnEdge
Definition: electron_graph.hpp:38
_ElnGraph::NbrsIterPair ElnNbrsIterPair
Definition: electron_graph.hpp:44
uint8_t pre_placed
Definition: electron_graph.hpp:28
uint8_t target_octet
Definition: electron_graph.hpp:29
_ElnGraph::NbrsIter ElnNeighboursIter
Definition: electron_graph.hpp:40
Namespace for all graph related functionality.
Definition: access.hpp:7
_ElnGraph::VertIterPair ElnVertIterPair
Definition: electron_graph.hpp:42
_ElnGraph::VertIter ElnVertexIter
Definition: electron_graph.hpp:37
float electronegativity
Definition: electron_graph.hpp:24
uint8_t target_hyper_octet
Definition: electron_graph.hpp:30
SortOrder sort_score
Definition: electron_graph.hpp:32
Definition: electron_graph.hpp:22
_ElnGraph::VertType ElnVertex
Definition: electron_graph.hpp:36
_ElnGraph::EdgeIter ElnEdgeIter
Definition: electron_graph.hpp:39
ElnVertex GetVertex(MolVertPair id) const
MolVertPair id
Definition: electron_graph.hpp:23
uint8_t valence
Definition: electron_graph.hpp:25
uint8_t electron_count
Definition: electron_graph.hpp:27
int8_t formal_charge
Definition: electron_graph.hpp:31