| 12
 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
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 
 | /*****************************************************************************/
/*                                    XDMF                                   */
/*                       eXtensible Data Model and Format                    */
/*                                                                           */
/*  Id : XdmfGeometryType.hpp                                                */
/*                                                                           */
/*  Author:                                                                  */
/*     Kenneth Leiter                                                        */
/*     kenneth.leiter@arl.army.mil                                           */
/*     US Army Research Laboratory                                           */
/*     Aberdeen Proving Ground, MD                                           */
/*                                                                           */
/*     Copyright @ 2011 US Army Research Laboratory                          */
/*     All Rights Reserved                                                   */
/*     See Copyright.txt for details                                         */
/*                                                                           */
/*     This software is distributed WITHOUT ANY WARRANTY; without            */
/*     even the implied warranty of MERCHANTABILITY or FITNESS               */
/*     FOR A PARTICULAR PURPOSE.  See the above copyright notice             */
/*     for more information.                                                 */
/*                                                                           */
/*****************************************************************************/
#ifndef XDMFGEOMETRYTYPE_HPP_
#define XDMFGEOMETRYTYPE_HPP_
// C Compatible Includes
#include "Xdmf.hpp"
#ifdef __cplusplus
// Includes
#include "XdmfItemProperty.hpp"
#include <map>
/**
 * @brief Property describing the types of coordinate values stored in
 * an XdmfGeometry.
 *
 * XdmfGeometryType is a property used by XdmfGeometry to specify the
 * type of coordinate values stored in the XdmfGeometry. A specific
 * XdmfGeometryType can be created by calling one of the static
 * methods in the class, i.e.  XdmfAttributeType::XYZ().
 *
 * Example of use:
 *
 * C++
 *
 * @dontinclude ExampleXdmfGeometryType.cpp
 * @skipline //#initialization
 * @until //#initialization
 * @skipline //#getType
 * @until //#getType
 *
 * Python
 *
 * @dontinclude XdmfExampleGeometryType.py
 * @skipline #//getType
 * @until #//getType
 *
 * Xdmf supports the following geometry types:
 *   NoGeometryType
 *   XYZ
 *   XY
 *   Polar
 *   Spherical
 *
 * The Polar and Spherical types consist of a series of coordinates.
 * These coordinates are in order of: radius, polar, azimuthal. 
 * In accordance with the ISO standard.
 *
 */
class XDMF_EXPORT XdmfGeometryType : public XdmfItemProperty {
public:
  virtual ~XdmfGeometryType();
  friend class XdmfGeometry;
  // Supported Xdmf Geometry Types
  static shared_ptr<const XdmfGeometryType> NoGeometryType();
  static shared_ptr<const XdmfGeometryType> XYZ();
  static shared_ptr<const XdmfGeometryType> XY();
  static shared_ptr<const XdmfGeometryType> Polar();
  static shared_ptr<const XdmfGeometryType> Spherical();
  /**
   * Get the dimensions of this geometry type - i.e. XYZ = 3.
   *
   * Example of use:
   * 
   * C++
   *
   * @dontinclude ExampleXdmfGeometryType.cpp
   * @skipline //#getDimensions
   * @until //#getDimensions
   *
   * Python
   *
   * @dontinclude XdmfExampleGeometryType.py
   * @skipline #//getDimensions
   * @until #//getDimensions
   *
   * @return    An int containing number of dimensions.
   */
  virtual unsigned int getDimensions() const;
  /**
   * Get the name of this geometry type.
   *
   * Example of use:
   *
   * C++
   *
   * @dontinclude ExampleXdmfGeometryType.cpp
   * @skipline //#getName
   * @until //#getName
   *
   * Python
   *
   * @dontinclude XdmfExampleGeometryType.py
   * @skipline #//getName
   * @until #//getName
   *
   * @return    The name of this geometry type.
   */
  std::string getName() const;
  virtual void
  getProperties(std::map<std::string, std::string> & collectedProperties) const;
protected:
  /**
   * Protected constructor for XdmfGeometryType.  The constructor is
   * protected because all geometry types supported by Xdmf should be
   * accessed through more specific static methods that construct
   * XdmfGeometryTypes - i.e.  XdmfGeometryType::XYZ().
   *
   * @param name a std::string containing the name of the geometry type..
   * @param dimensions an int containing the dimensions of the geometry type.
   */
  XdmfGeometryType(const std::string & name, const int & dimensions);
  static std::map<std::string, shared_ptr<const XdmfGeometryType>(*)()> mGeometryDefinitions;
  static void InitTypes();
private:
  XdmfGeometryType(const XdmfGeometryType &); // Not implemented.
  void operator=(const XdmfGeometryType &); // Not implemented.
  static shared_ptr<const XdmfGeometryType>
  New(const std::map<std::string, std::string> & itemProperties);
  unsigned int mDimensions;
  std::string mName;
};
#endif
#ifdef __cplusplus
extern "C" {
#endif
// C wrappers go here
#define XDMF_GEOMETRY_TYPE_NO_GEOMETRY_TYPE 300
#define XDMF_GEOMETRY_TYPE_XYZ              301
#define XDMF_GEOMETRY_TYPE_XY               302
#define XDMF_GEOMETRY_TYPE_POLAR            303
#define XDMF_GEOMETRY_TYPE_SPHERICAL        304
XDMF_EXPORT int XdmfGeometryTypeNoGeometryType();
XDMF_EXPORT int XdmfGeometryTypeXYZ();
XDMF_EXPORT int XdmfGeometryTypeXY();
XDMF_EXPORT int XdmfGeometryTypePolar();
XDMF_EXPORT int XdmfGeometryTypeSpherical();
XDMF_EXPORT unsigned int XdmfGeometryTypeGetDimensions(int type, int * status);
XDMF_EXPORT char * XdmfGeometryTypeGetName(int type);
#ifdef __cplusplus
}
#endif
#endif /* XDMFGEOMETRYTYPE_HPP_ */
 |