00001
00008 #include <cassert>
00009 #include "cnumEtypes.h"
00010
00011 namespace ot {
00012
00013 template<unsigned char cNum>
00014 unsigned char getElemType(unsigned char hnMask) {
00015 unsigned char eType = 0;
00016 switch(hnMask) {
00017 case ot::cNumEtype<cNum>::ET_N: {
00018 eType = 0;
00019 break;
00020 }
00021 case ot::cNumEtype<cNum>::ET_Y: {
00022 eType = 1;
00023 break;
00024 }
00025 case ot::cNumEtype<cNum>::ET_X: {
00026 eType = 2;
00027 break;
00028 }
00029 case ot::cNumEtype<cNum>::ET_XY: {
00030 eType = 3;
00031 break;
00032 }
00033 case ot::cNumEtype<cNum>::ET_Z: {
00034 eType = 4;
00035 break;
00036 }
00037 case ot::cNumEtype<cNum>::ET_ZY: {
00038 eType = 5;
00039 break;
00040 }
00041 case ot::cNumEtype<cNum>::ET_ZX: {
00042 eType = 6;
00043 break;
00044 }
00045 case ot::cNumEtype<cNum>::ET_ZXY: {
00046 eType = 7;
00047 break;
00048 }
00049 case ot::cNumEtype<cNum>::ET_XY_XY: {
00050 eType = 8;
00051 break;
00052 }
00053 case ot::cNumEtype<cNum>::ET_XY_ZXY: {
00054 eType = 9;
00055 break;
00056 }
00057 case ot::cNumEtype<cNum>::ET_YZ_ZY: {
00058 eType = 10;
00059 break;
00060 }
00061 case ot::cNumEtype<cNum>::ET_YZ_ZXY: {
00062 eType = 11;
00063 break;
00064 }
00065 case ot::cNumEtype<cNum>::ET_YZ_XY_ZXY: {
00066 eType = 12;
00067 break;
00068 }
00069 case ot::cNumEtype<cNum>::ET_ZX_ZX: {
00070 eType = 13;
00071 break;
00072 }
00073 case ot::cNumEtype<cNum>::ET_ZX_ZXY: {
00074 eType = 14;
00075 break;
00076 }
00077 case ot::cNumEtype<cNum>::ET_ZX_XY_ZXY: {
00078 eType = 15;
00079 break;
00080 }
00081 case ot::cNumEtype<cNum>::ET_ZX_YZ_ZXY: {
00082 eType = 16;
00083 break;
00084 }
00085 case ot::cNumEtype<cNum>::ET_ZX_YZ_XY_ZXY: {
00086 eType = 17;
00087 break;
00088 }
00089 default: {
00090 assert(false);
00091 }
00092 }
00093 return eType;
00094 }
00095
00096 }
00097
00098