Integration of OCCT 6.5.0 from SVN
[occt.git] / src / StepData / StepData_EnumTool.cxx
1 #include <StepData_EnumTool.ixx>
2
3 static TCollection_AsciiString nulstr("");
4
5 StepData_EnumTool::StepData_EnumTool
6   (const Standard_CString e0, const Standard_CString e1,
7    const Standard_CString e2, const Standard_CString e3,
8    const Standard_CString e4, const Standard_CString e5,
9    const Standard_CString e6, const Standard_CString e7,
10    const Standard_CString e8, const Standard_CString e9,
11    const Standard_CString e10,const Standard_CString e11,
12    const Standard_CString e12,const Standard_CString e13,
13    const Standard_CString e14,const Standard_CString e15,
14    const Standard_CString e16,const Standard_CString e17,
15    const Standard_CString e18,const Standard_CString e19,
16    const Standard_CString e20,const Standard_CString e21,
17    const Standard_CString e22,const Standard_CString e23,
18    const Standard_CString e24,const Standard_CString e25,
19    const Standard_CString e26,const Standard_CString e27,
20    const Standard_CString e28,const Standard_CString e29,
21    const Standard_CString e30,const Standard_CString e31,
22    const Standard_CString e32,const Standard_CString e33,
23    const Standard_CString e34,const Standard_CString e35,
24    const Standard_CString e36,const Standard_CString e37,
25    const Standard_CString e38,const Standard_CString e39)
26 {
27   AddDefinition (e0);   AddDefinition (e1);   AddDefinition (e2);
28   AddDefinition (e3);   AddDefinition (e4);   AddDefinition (e5);
29   AddDefinition (e6);   AddDefinition (e7);   AddDefinition (e8);
30   AddDefinition (e9);   AddDefinition (e10);  AddDefinition (e11);
31   AddDefinition (e12);  AddDefinition (e13);  AddDefinition (e14);
32   AddDefinition (e15);  AddDefinition (e16);  AddDefinition (e17);
33   AddDefinition (e18);  AddDefinition (e19);  AddDefinition (e20);
34   AddDefinition (e21);  AddDefinition (e22);  AddDefinition (e23);
35   AddDefinition (e24);  AddDefinition (e25);  AddDefinition (e26);
36   AddDefinition (e27);  AddDefinition (e28);  AddDefinition (e29);
37   AddDefinition (e30);  AddDefinition (e31);  AddDefinition (e32);
38   AddDefinition (e33);  AddDefinition (e34);  AddDefinition (e35);
39   AddDefinition (e36);  AddDefinition (e37);  AddDefinition (e38);
40   AddDefinition (e39);
41   theinit = thetexts.Length();  theopt = Standard_True;
42 }
43
44     void  StepData_EnumTool::AddDefinition (const Standard_CString term)
45 {
46   char text[80];
47   if (!term) return;
48   if (term[0] == '\0') return;
49   Standard_Integer n0 = 0, n1 = 0;
50   for (; term[n0] != '\0'; n0 ++)  {
51     if (term[n0] <= 32) {
52       if (n1 == 0) continue;
53       if (n1 > 1 || text[0] != '$') {
54         if (text[n1-1] != '.')  {  text[n1] = '.';  n1 ++;  }
55         text[n1] = '\0';
56       }
57       thetexts.Append ( TCollection_AsciiString(text) );
58       n1 = 0;
59     }
60     if (n1 == 0 && term[n0] != '.' && term[n0] != '$')  {  text[0] = '.';   n1 ++;  }
61     text[n1] = term[n0];  n1 ++;
62   }
63   if (n1 > 0 || text[0] != '$') {
64     if (text[n1-1] != '.')  {  text[n1] = '.';  n1 ++;  }
65     text[n1] = '\0';
66   }
67   if (text[n1-1] != '.')  {  text[n1] = '.';  n1 ++;  }
68   text[n1] = '\0';
69   thetexts.Append ( TCollection_AsciiString(text) );
70 }
71
72     Standard_Boolean  StepData_EnumTool::IsSet () const
73       {  return (thetexts.Length() > theinit);  }
74
75     Standard_Integer  StepData_EnumTool::MaxValue () const
76       {  return thetexts.Length() - 1;  }
77
78     void  StepData_EnumTool::Optional (const Standard_Boolean mode)
79       {  theopt = mode;  }
80
81     Standard_Integer  StepData_EnumTool::NullValue () const
82       {  return (theopt ? Value("$") : Standard_False);  }
83
84     const TCollection_AsciiString&  StepData_EnumTool::Text
85   (const Standard_Integer num) const
86 {
87   if (num < 0 || num >= thetexts.Length()) return nulstr;
88   return thetexts.Value (num+1);
89 }
90
91     Standard_Integer  StepData_EnumTool::Value
92   (const Standard_CString txt) const
93 {
94   Standard_Integer nb = thetexts.Length();
95   for (Standard_Integer i = 1; i <= nb; i ++) {
96     if (thetexts.Value(i).IsEqual(txt)) return i-1;
97   }
98   return (-1);
99 }
100
101     Standard_Integer  StepData_EnumTool::Value
102   (const TCollection_AsciiString& txt) const
103 {
104   Standard_Integer nb = thetexts.Length();
105   for (Standard_Integer i = 1; i <= nb; i ++) {
106     if (thetexts.Value(i).IsEqual(txt)) return i-1;
107   }
108   return (-1);
109 }