CiftiLib
A C++ library for CIFTI-2 and CIFTI-1 files
StructureEnum.h
1 #ifndef __STRUCTURE_ENUM__H_
2 #define __STRUCTURE_ENUM__H_
3 
4 /*LICENSE_START*/
5 /*
6  * Copyright (c) 2014, Washington University School of Medicine
7  * All rights reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without modification,
10  * are permitted provided that the following conditions are met:
11  *
12  * 1. Redistributions of source code must retain the above copyright notice,
13  * this list of conditions and the following disclaimer.
14  *
15  * 2. Redistributions in binary form must reproduce the above copyright notice,
16  * this list of conditions and the following disclaimer in the documentation
17  * and/or other materials provided with the distribution.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
21  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
23  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
26  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
28  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30 
31 #include "Common/AString.h"
32 
33 #include <stdint.h>
34 #include <vector>
35 
36 namespace cifti {
37 
44 
45 public:
49  enum Enum {
53  ALL,
118  };
119 
120 
121  ~StructureEnum();
122 
123  static AString toName(Enum enumValue);
124 
125  static Enum fromName(const AString& name, bool* isValidOut);
126 
127  static AString toGuiName(Enum enumValue);
128 
129  static Enum fromGuiName(const AString& guiName, bool* isValidOut);
130 
131  static AString toCiftiName(Enum enumValue);
132 
133  static Enum fromCiftiName(const AString& ciftiName, bool* isValidOut);
134 
135  static void getAllEnums(std::vector<Enum>& allEnums);
136 
137  static bool isRight(const Enum enumValue);
138 
139  static bool isLeft(const Enum enumValue);
140 
141  static bool isCortexContralateral(const Enum enumValueA,
142  const Enum enumValueB);
143 
144  static Enum getContralateralStructure(const Enum enumValue);
145 
146 private:
147  StructureEnum(const Enum enumValue,
148  const AString& name,
149  const AString& guiName);
150 
151  static const StructureEnum* findData(const Enum enumValue);
152 
154  static std::vector<StructureEnum> enumData;
155 
157  static void initialize();
158 
160  static bool initializedFlag;
161 
163  Enum enumValue;
164 
166  AString name;
167 
169  AString guiName;
170 };
171 
172 } // namespace
173 #endif //__STRUCTURE_ENUM__H_
cifti::StructureEnum::OTHER_GREY_MATTER
@ OTHER_GREY_MATTER
Definition: StructureEnum.h:107
cifti::StructureEnum::THALAMUS_RIGHT
@ THALAMUS_RIGHT
Definition: StructureEnum.h:117
cifti::StructureEnum::CEREBELLUM
@ CEREBELLUM
Definition: StructureEnum.h:77
cifti::StructureEnum::THALAMUS_LEFT
@ THALAMUS_LEFT
Definition: StructureEnum.h:115
cifti::StructureEnum::isCortexContralateral
static bool isCortexContralateral(const Enum enumValueA, const Enum enumValueB)
Definition: StructureEnum.cxx:537
cifti::StructureEnum::ACCUMBENS_LEFT
@ ACCUMBENS_LEFT
Definition: StructureEnum.h:59
cifti::StructureEnum::OTHER
@ OTHER
Definition: StructureEnum.h:105
cifti::StructureEnum::CORTEX
@ CORTEX
Definition: StructureEnum.h:87
cifti::StructureEnum::CEREBELLUM_LEFT
@ CEREBELLUM_LEFT
Definition: StructureEnum.h:79
cifti::StructureEnum::CEREBRAL_WHITE_MATTER_LEFT
@ CEREBRAL_WHITE_MATTER_LEFT
Definition: StructureEnum.h:83
cifti::StructureEnum::AMYGDALA_LEFT
@ AMYGDALA_LEFT
Definition: StructureEnum.h:63
cifti::StructureEnum::PALLIDUM_RIGHT
@ PALLIDUM_RIGHT
Definition: StructureEnum.h:103
cifti::StructureEnum::Enum
Enum
Definition: StructureEnum.h:49
cifti::StructureEnum::ALL
@ ALL
Definition: StructureEnum.h:53
cifti::StructureEnum::PUTAMEN_LEFT
@ PUTAMEN_LEFT
Definition: StructureEnum.h:111
cifti::StructureEnum::CAUDATE_LEFT
@ CAUDATE_LEFT
Definition: StructureEnum.h:69
cifti::StructureEnum::isLeft
static bool isLeft(const Enum enumValue)
Definition: StructureEnum.cxx:480
cifti::StructureEnum::CEREBELLAR_WHITE_MATTER_RIGHT
@ CEREBELLAR_WHITE_MATTER_RIGHT
Definition: StructureEnum.h:75
cifti::StructureEnum::fromName
static Enum fromName(const AString &name, bool *isValidOut)
Definition: StructureEnum.cxx:261
cifti::StructureEnum::INVALID
@ INVALID
Definition: StructureEnum.h:51
cifti::StructureEnum
Enumerated type for a structure in a brain.
Definition: StructureEnum.h:43
cifti::StructureEnum::fromGuiName
static Enum fromGuiName(const AString &guiName, bool *isValidOut)
Definition: StructureEnum.cxx:312
cifti::StructureEnum::BRAIN_STEM
@ BRAIN_STEM
Definition: StructureEnum.h:67
cifti::StructureEnum::OTHER_WHITE_MATTER
@ OTHER_WHITE_MATTER
Definition: StructureEnum.h:109
cifti::StructureEnum::CORTEX_LEFT
@ CORTEX_LEFT
Definition: StructureEnum.h:89
cifti::StructureEnum::~StructureEnum
~StructureEnum()
Definition: StructureEnum.cxx:64
cifti::StructureEnum::DIENCEPHALON_VENTRAL_LEFT
@ DIENCEPHALON_VENTRAL_LEFT
Definition: StructureEnum.h:93
cifti::StructureEnum::toName
static AString toName(Enum enumValue)
Definition: StructureEnum.cxx:244
cifti::StructureEnum::PALLIDUM_LEFT
@ PALLIDUM_LEFT
Definition: StructureEnum.h:101
cifti::StructureEnum::CEREBELLAR_WHITE_MATTER_LEFT
@ CEREBELLAR_WHITE_MATTER_LEFT
Definition: StructureEnum.h:73
cifti::StructureEnum::CEREBRAL_WHITE_MATTER_RIGHT
@ CEREBRAL_WHITE_MATTER_RIGHT
Definition: StructureEnum.h:85
cifti::StructureEnum::toGuiName
static AString toGuiName(Enum enumValue)
Definition: StructureEnum.cxx:295
cifti::StructureEnum::fromCiftiName
static Enum fromCiftiName(const AString &ciftiName, bool *isValidOut)
Definition: StructureEnum.cxx:363
cifti::StructureEnum::toCiftiName
static AString toCiftiName(Enum enumValue)
Definition: StructureEnum.cxx:346
cifti::StructureEnum::AMYGDALA_RIGHT
@ AMYGDALA_RIGHT
Definition: StructureEnum.h:65
cifti::StructureEnum::HIPPOCAMPUS_LEFT
@ HIPPOCAMPUS_LEFT
Definition: StructureEnum.h:97
cifti::StructureEnum::isRight
static bool isRight(const Enum enumValue)
Definition: StructureEnum.cxx:427
cifti::StructureEnum::CAUDATE_RIGHT
@ CAUDATE_RIGHT
Definition: StructureEnum.h:71
cifti::StructureEnum::HIPPOCAMPUS_RIGHT
@ HIPPOCAMPUS_RIGHT
Definition: StructureEnum.h:99
cifti::StructureEnum::PUTAMEN_RIGHT
@ PUTAMEN_RIGHT
Definition: StructureEnum.h:113
cifti::StructureEnum::getContralateralStructure
static Enum getContralateralStructure(const Enum enumValue)
Definition: StructureEnum.cxx:562
cifti::StructureEnum::CEREBELLUM_RIGHT
@ CEREBELLUM_RIGHT
Definition: StructureEnum.h:81
cifti::StructureEnum::ALL_WHITE_MATTER
@ ALL_WHITE_MATTER
Definition: StructureEnum.h:55
cifti::StructureEnum::CORTEX_RIGHT
@ CORTEX_RIGHT
Definition: StructureEnum.h:91
cifti::StructureEnum::getAllEnums
static void getAllEnums(std::vector< Enum > &allEnums)
Definition: StructureEnum.cxx:401
cifti
namespace for all CiftiLib functionality
Definition: CiftiBrainModelsMap.h:42
cifti::StructureEnum::ACCUMBENS_RIGHT
@ ACCUMBENS_RIGHT
Definition: StructureEnum.h:61
cifti::StructureEnum::ALL_GREY_MATTER
@ ALL_GREY_MATTER
Definition: StructureEnum.h:57
cifti::StructureEnum::DIENCEPHALON_VENTRAL_RIGHT
@ DIENCEPHALON_VENTRAL_RIGHT
Definition: StructureEnum.h:95