00001
00002
00003
00004 #include "Conventions/StripEnd.h"
00005
00006 #include "MessageService/MsgService.h"
00007 CVSID("$Id: StripEnd.cxx,v 1.7 2005/08/26 17:18:48 rhatcher Exp $");
00008
00009
00010
00011 const char * StripEnd::AsString(StripEnd_t direction)
00012 {
00013 switch (direction) {
00014 case kUnknown: return "?"; break;
00015 case kNegative: return "-"; break;
00016 case kPositive: return "+"; break;
00017 case kWhole: return "*"; break;
00018 default: return "?"; break;
00019 }
00020 }
00021
00022
00023
00024 const char * StripEnd::AsString(StripEnd::StripEnd_t dir,
00025 Detector::Detector_t det,
00026 PlaneView::PlaneView_t view)
00027 {
00028
00029
00030
00031
00032 switch (det) {
00033 case Detector::kNear:
00034 {
00035 switch (view) {
00036 case PlaneView::kU:
00037 case PlaneView::kV:
00038 if (StripEnd::kEast == dir) return "East";
00039 else if (StripEnd::kWest == dir) return "West";
00040 break;
00041 default:
00042 return AsString(dir);
00043 }
00044 }
00045 break;
00046 case Detector::kFar:
00047 {
00048 switch (view) {
00049 case PlaneView::kU:
00050 case PlaneView::kV:
00051 if (StripEnd::kEast == dir) return "East";
00052 else if (StripEnd::kWest == dir) return "West";
00053 break;
00054 case PlaneView::kVSTopFlat:
00055 case PlaneView::kVSTopEastSlant:
00056 case PlaneView::kVSTopWestSlant:
00057 case PlaneView::kVSWallOnEdge:
00058 case PlaneView::kVSWallEastSlant:
00059 case PlaneView::kVSWallWestSlant:
00060 if (StripEnd::kNorth == dir) return "North";
00061 else if (StripEnd::kSouth == dir) return "South";
00062 break;
00063 default:
00064 return AsString(dir);
00065 }
00066 }
00067 break;
00068 case Detector::kCalDet:
00069 {
00070 switch (view) {
00071 case PlaneView::kU:
00072 if (StripEnd::kUp == dir) return "Up";
00073 else if (StripEnd::kDown == dir) return "Down";
00074 break;
00075 case PlaneView::kV:
00076 case PlaneView::kA:
00077 if (StripEnd::kEast == dir) return "East";
00078 else if (StripEnd::kWest == dir) return "West";
00079 break;
00080 case PlaneView::kB:
00081 if (StripEnd::kNorth == dir) return "North";
00082 else if (StripEnd::kSouth == dir) return "South";
00083 break;
00084 default:
00085 return AsString(dir);
00086 }
00087 }
00088 break;
00089 default:
00090 return AsString(dir);
00091 }
00092
00093 return AsString(dir);
00094
00095 }
00096
00097
00098
00099 StripEnd::StripEnd_t StripEnd::CharToEnum(Char_t c)
00100 {
00101 switch (c) {
00102 case '-':
00103 case 'n':
00104 case 'N':
00105 case 'e':
00106 case 'E':
00107 case 'u':
00108 case 'U':
00109 case '1':
00110 case 0x01:
00111 return kNegative;
00112 break;
00113 case '+':
00114 case 'p':
00115 case 'P':
00116 case 's':
00117 case 'S':
00118 case 'w':
00119 case 'W':
00120 case 'd':
00121 case 'D':
00122 case '2':
00123 case 0x02:
00124 return kPositive;
00125 break;
00126 case '?':
00127 case '0':
00128 case 0x00:
00129 return kUnknown;
00130 break;
00131 case '*':
00132 case '3':
00133 case 0x03:
00134 return kWhole;
00135 break;
00136 }
00137
00138 MSG("Conv",Msg::kWarning)
00139 << " unhandled input return kUnknown" << endl;
00140 return kUnknown;
00141 }
00142
00143