File: XdmfSetType.hpp

package info (click to toggle)
xdmf 3.0%2Bgit20160803-3
  • links: PTS
  • area: main
  • in suites: stretch
  • size: 35,388 kB
  • ctags: 36,627
  • sloc: ansic: 265,382; cpp: 162,889; python: 10,976; f90: 1,378; yacc: 687; fortran: 464; xml: 200; java: 187; lex: 125; makefile: 82; sh: 28
file content (117 lines) | stat: -rw-r--r-- 2,646 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#ifndef XDMFSETTYPE_HPP_
#define XDMFSETTYPE_HPP_

// C Compatible Includes
#include "Xdmf.hpp"

#ifdef __cplusplus

// Includes
#include "XdmfItemProperty.hpp"

/**
 * @brief Property describing the type of ids an XdmfSet contains.
 *
 * An XdmfSet holds ids for a collection of nodes, cells, faces, or
 * edges that are part of an XdmfGrid. This property indicates which
 * type the set contains.
 *
 * Example of use:
 *
 * C++
 *
 * @dontinclude ExampleXdmfSet.cpp
 * @skipline //#initialize
 * @until //#initialize
 * @skipline //#setType
 * @until //#setType
 * @skipline //#getType
 * @until //#getType
 *
 * Python
 *
 * @dontinclude XdmfExampleSet.py
 * @skipline #//initialize
 * @until #//initialize
 * @skipline #//setType
 * @until #//setType
 * @skipline #//getType
 * @until #//getType
 *
 * Xdmf supports the following set types:
 *   NoSetType
 *   Node
 *   Cell
 *   Face
 *   Edge
 */
class XDMF_EXPORT XdmfSetType : public XdmfItemProperty {

public:

  virtual ~XdmfSetType();

  friend class XdmfSet;

  // Supported Xdmf Set Types
  static shared_ptr<const XdmfSetType> NoSetType();
  static shared_ptr<const XdmfSetType> Node();
  static shared_ptr<const XdmfSetType> Cell();
  static shared_ptr<const XdmfSetType> Face();
  static shared_ptr<const XdmfSetType> Edge();

  void
  getProperties(std::map<std::string, std::string> & collectedProperties) const;

protected:

  /**
   * Protected constructor for XdmfSetType. The constructor is
   * protected because all set types supported by Xdmf should be
   * accessed through more specific static methods that construct
   * XdmfSetTypes - i.e. XdmfSetType::Node().
   *
   * @param     name    A std::string containing the name of the XdmfSetType.
   */
  XdmfSetType(const std::string & name);

  static std::map<std::string, shared_ptr<const XdmfSetType>(*)()> mSetDefinitions;

  static void InitTypes();

private:

  XdmfSetType(const XdmfSetType &); // Not implemented.
  void operator=(const XdmfSetType &); // Not implemented.

  static shared_ptr<const XdmfSetType>
  New(const std::map<std::string, std::string> & itemProperties);

  std::string mName;
};

#endif

#ifdef __cplusplus
extern "C" {
#endif

// C wrappers go here

#define XDMF_SET_TYPE_NO_SET_TYPE 600
#define XDMF_SET_TYPE_NODE        601
#define XDMF_SET_TYPE_CELL        602
#define XDMF_SET_TYPE_FACE        603
#define XDMF_SET_TYPE_EDGE        604

XDMF_EXPORT int XdmfSetTypeNoSetType();
XDMF_EXPORT int XdmfSetTypeNode();
XDMF_EXPORT int XdmfSetTypeCell();
XDMF_EXPORT int XdmfSetTypeFace();
XDMF_EXPORT int XdmfSetTypeEdge();

#ifdef __cplusplus
}
#endif

#endif /* XDMFSETTYPE_HPP_ */