MOAB: Mesh Oriented datABase  (version 5.3.0)
Types.hpp
Go to the documentation of this file.
00001 /**
00002  * MOAB, a Mesh-Oriented datABase, is a software component for creating,
00003  * storing and accessing finite element mesh data.
00004  *
00005  * Copyright 2004 Sandia Corporation.  Under the terms of Contract
00006  * DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government
00007  * retains certain rights in this software.
00008  *
00009  * This library is free software; you can redistribute it and/or
00010  * modify it under the terms of the GNU Lesser General Public
00011  * License as published by the Free Software Foundation; either
00012  * version 2.1 of the License, or (at your option) any later version.
00013  *
00014  */
00015 
00016 #ifndef MOAB_TYPES_HPP
00017 #define MOAB_TYPES_HPP
00018 
00019 #ifdef __cplusplus
00020 #include "moab/EntityType.hpp"
00021 #include "moab/EntityHandle.hpp"
00022 #endif
00023 
00024 #include "moab/win32_config.h"
00025 
00026 /**\name Types and names
00027  * Types used in the MOAB interface
00028  */
00029 /*@{*/
00030 
00031 #ifdef __cplusplus
00032 namespace moab
00033 {
00034 #endif
00035 
00036 /** MOAB error codes */
00037 enum MOAB_EXPORT ErrorCode
00038 {
00039     MB_SUCCESS = 0,
00040     MB_INDEX_OUT_OF_RANGE,
00041     MB_TYPE_OUT_OF_RANGE,
00042     MB_MEMORY_ALLOCATION_FAILED,
00043     MB_ENTITY_NOT_FOUND,
00044     MB_MULTIPLE_ENTITIES_FOUND,
00045     MB_TAG_NOT_FOUND,
00046     MB_FILE_DOES_NOT_EXIST,
00047     MB_FILE_WRITE_ERROR,
00048     MB_NOT_IMPLEMENTED,
00049     MB_ALREADY_ALLOCATED,
00050     MB_VARIABLE_DATA_LENGTH,
00051     MB_INVALID_SIZE,
00052     MB_UNSUPPORTED_OPERATION,
00053     MB_UNHANDLED_OPTION,
00054     MB_STRUCTURED_MESH,
00055     MB_FAILURE
00056 };
00057 
00058 #ifdef __cplusplus
00059 extern const char* const ErrorCodeStr[];
00060 #endif
00061 
00062 /** Misc. integer constants, declared in enum for portability */
00063 enum Constants
00064 {
00065     MB_VARIABLE_LENGTH = -1 /**< Length value for variable-length tags */
00066 };
00067 
00068 /** Specify storage type for tags.  See MOAB users guide for more information. */
00069 enum MOAB_EXPORT TagType
00070 {
00071     MB_TAG_BIT    = 0,      /**< Tag size specified in bits, tag value is 8 bits or less */
00072     MB_TAG_SPARSE = 1 << 0, /**< Storage optimized for tags on a few entities */
00073     MB_TAG_DENSE  = 1 << 1, /**< Storage optimized for tags on most entities of a type */
00074     MB_TAG_MESH   = 1 << 2, /**< Storage for tags on no entities, only the root set/whole mesh. */
00075     MB_TAG_BYTES  = 1 << 3, /**< Size is in number of bytes rather than number of values of \c DataType */
00076     MB_TAG_VARLEN = 1 << 4, /**< Create variable-length tag */
00077     MB_TAG_CREAT  = 1 << 5, /**< Create tag if it does not already exist */
00078     MB_TAG_EXCL   = 1 << 6, /**< Fail if TAG_CREATE and tag already exists */
00079     MB_TAG_STORE  = 1 << 7, /**< Fail if tag exists and has different storage type */
00080     MB_TAG_ANY    = 1 << 8, /**< Do not fail if size, type, or default value do not match. */
00081     MB_TAG_NOOPQ  = 1 << 9, /**< Do not accept MB_TYPE_OPAQUE as a match for any type. */
00082     MB_TAG_DFTOK  = 1 << 10 /**< Do not fail for mismatched default values */
00083     /**<  MB_TAG_CNVRT = 1<<11,  Convert storage type if it does not match */
00084 };
00085 
00086 /** Specify data type for tags. */
00087 enum MOAB_EXPORT DataType
00088 {
00089     MB_TYPE_OPAQUE   = 0, /**< byte array */
00090     MB_TYPE_INTEGER  = 1, /**< native 'int' type */
00091     MB_TYPE_DOUBLE   = 2, /**< native 'double' type */
00092     MB_TYPE_BIT      = 3, /**< mandatory type for tags with MB_TAG_BIT storage */
00093     MB_TYPE_HANDLE   = 4, /**< EntityHandle */
00094     MB_MAX_DATA_TYPE = MB_TYPE_HANDLE
00095 };
00096 
00097 #ifdef __cplusplus
00098 extern const char* const DataTypeStr[];
00099 #endif
00100 
00101 /** Used to reference tags; since they're so different from entities, we
00102  *  use void** instead of a uint to prevent them from being confused as
00103  *  entity handles.
00104  */
00105 #ifdef __cplusplus
00106 class TagInfo;
00107 typedef TagInfo* Tag;
00108 #else
00109 struct TagInfo;
00110 typedef struct TagInfo* Tag;
00111 #endif
00112 
00113 /** Meshset options: properties for meshset creation.
00114  *  Values are bit flags that may be combined with a bitwise OR (|)
00115  */
00116 enum MOAB_EXPORT EntitySetProperty
00117 {
00118     MESHSET_TRACK_OWNER = 0x1, /**< create entity to meshset adjacencies */
00119     MESHSET_SET         = 0x2, /**< set contents are unique */
00120     MESHSET_ORDERED     = 0x4  /**< order of set contents is preserved */
00121 };
00122 
00123 enum MOAB_EXPORT SenseType
00124 {
00125     SENSE_INVALID = -2, /**< default, invalid, not defined */
00126     SENSE_REVERSE = -1, /**< reversed */
00127     SENSE_BOTH    = 0,  /**< both senses valid  */
00128     SENSE_FORWARD = 1   /**< forward  */
00129 };
00130 
00131 #ifdef __cplusplus
00132 extern const char* const* const SenseTypeStr;
00133 #endif
00134 
00135 #ifdef __cplusplus
00136 } /* namespace moab */
00137 #endif
00138 
00139 /*@}*/
00140 
00141 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines