source: Sophya/trunk/SophyaPI/PIext/nomgadapter.cc@ 1222

Last change on this file since 1222 was 1222, checked in by ercodmgr, 25 years ago

DecodeTypeIdName pour T T* etc.. cmv 10/10/00

File size: 4.9 KB
RevLine 
[295]1#include "machdefs.h"
2#include <stdlib.h>
3#include <typeinfo>
4#include <iostream.h>
5#include <string>
6#include "nomgadapter.h"
7
8/* --Methode-- */
9NObjMgrAdapter::NObjMgrAdapter(AnyDataObj* o)
10{
11mObj = o;
12}
13
14/* --Methode-- */
15NObjMgrAdapter::~NObjMgrAdapter()
16{
17}
18
19/* --Methode-- */
20NObjMgrAdapter* NObjMgrAdapter::Clone(AnyDataObj* o)
21{
22return(new NObjMgrAdapter(o));
23}
24
25/* --Methode-- */
26AnyDataObj* NObjMgrAdapter::GetDataObj()
27{
28return(mObj);
29}
30
31/* --Methode-- */
[1164]32string NObjMgrAdapter::GetDataObjType()
33{
34 return("AnyDataObj ");
35}
36
[463]37
38/* --Methode-- */
[1165]39AnyDataObj* NObjMgrAdapter::CloneDataObj()
[1164]40{
41string s = typeid(*mObj).name();
[1165]42cout << "NObjMgrAdapter::CloneDataObj() - Error : Not supported for " << s << endl;
[1164]43return(NULL);
44}
45
46/* --Methode-- */
47void NObjMgrAdapter::CopyFrom(AnyDataObj *)
48{
49string s = typeid(*mObj).name();
50cout << "NObjMgrAdapter::CopyFrom() - Error : Not supported for " << s << endl;
51}
52
53
54/* --Methode-- */
55string NObjMgrAdapter::ToString()
56{
57char buff[128];
58sprintf("%s@%lx", typeid(*mObj).name(), (long)mObj);
59return(buff);
60}
61
62/* --Methode-- */
63void NObjMgrAdapter::FillFromString()
64{
65string s = typeid(*mObj).name();
66cout << "NObjMgrAdapter::FillFromString() - Error : Not supported for " << s << endl;
67 return;
68}
69
70/* --Methode-- */
[295]71void NObjMgrAdapter::ReadFits(string const & )
72{
73string s = typeid(*mObj).name();
74cout << "NObjMgrAdapter::ReadFits() - Error : Not supported for " << s << endl;
75}
76
77/* --Methode-- */
78void NObjMgrAdapter::SaveFits(string const & )
79{
80string s = typeid(*mObj).name();
81cout << "NObjMgrAdapter::SaveFits() - Error : Not supported for " << s << endl;
82}
83
84/* --Methode-- */
85void NObjMgrAdapter::SavePPF(POutPersist&, string const & )
86{
87string s = typeid(*mObj).name();
88cout << "NObjMgrAdapter::SavePPF() - Error : Not supported for " << s << endl;
89}
90
91/* --Methode-- */
92void NObjMgrAdapter::Print(ostream& )
93{
94string s = typeid(*mObj).name();
95cout << "NObjMgrAdapter::Print() - Error : Not supported for " << s << endl;
96}
97
98/* --Methode-- */
99PIDrawer* NObjMgrAdapter::GetDrawer(string &)
100{
101return(NULL);
102}
103
104/* --Methode-- */
105P2DArrayAdapter* NObjMgrAdapter::Get2DArray(string &)
106{
107return(NULL);
108}
109
110/* --Methode-- */
[344]111NTupleInterface* NObjMgrAdapter::GetNTupleInterface(bool& adel)
[295]112{
113string s = typeid(*mObj).name();
114cout << "NObjMgrAdapter::GetNTupleInterface() - Error : Not supported for " << s << endl;
[344]115adel = false;
[295]116return(NULL);
117}
118
[1207]119/* --Methode-- */
120GeneralFitData* NObjMgrAdapter::GetGeneralFitData(bool& adel
121 ,GeneralFitData::FitErrType errtype
122 ,double errscale,double errmin,int i1,int i2,int j1,int j2)
123{
124string s = typeid(*mObj).name();
125cout << "NObjMgrAdapter::GetGeneralFitData() - Error : Not supported for "<<s<<endl;
126adel = false;
127return(NULL);
128}
[295]129
[1207]130AnyDataObj* NObjMgrAdapter::FitResidusObj(GeneralFit& mfit)
131{
132string s = typeid(*mObj).name();
133cout << "NObjMgrAdapter::FitResidusObj() - Error : Not supported for "<<s<<endl;
134return(NULL);
135}
[295]136
137
[1207]138AnyDataObj* NObjMgrAdapter::FitFunctionObj(GeneralFit& mfit)
139{
140string s = typeid(*mObj).name();
141cout << "NObjMgrAdapter::FitFunctionObj() - Error : Not supported for "<<s<<endl;
142return(NULL);
143}
[1215]144
145/* --Methode-- */
146string NObjMgrAdapter::DecodeTypeIdName(string linuxtype)
147// seulement pour Linux qui ne code pas correctement
148{
149#if defined(Linux) || defined(linux)
150 string type("");
151 const char* str = linuxtype.c_str();
152 int lstr = (int) strlen(str);
153 if(lstr<=0) return string("Linux Decoding error: lstr<=0");
154
155 // Le dernier caractere donne le type
156 lstr--;
157 if (str[lstr]=='v') type = "void";
158 else if(str[lstr]=='b') type = "bool";
159 else if(str[lstr]=='c') type = "char";
160 else if(str[lstr]=='s') type = "short";
161 else if(str[lstr]=='i') type = "int";
162 else if(str[lstr]=='l') type = "long";
163 else if(str[lstr]=='x') type = "long long";
164 else if(str[lstr]=='f') type = "float";
165 else if(str[lstr]=='d') type = "double";
166 else if(str[lstr]=='r') type = "long double";
167 else return string("Linux Decoding error: bad last char");
168 if(lstr==0) return type;
169
[1222]170 // Les caracteres precedents donnent: signed, unsigned, *, & ou const.
[1215]171 // Mais si on a un Z, alors c'est un complexe (code ...t7complex1Z...)
[1222]172 for(int i=0; i<(int)strlen(str); i++) {
[1215]173 lstr--;
174 if (str[lstr]=='U') type = "unsigned " + type;
175 else if(str[lstr]=='S') type = "signed " + type;
176 else if(str[lstr]=='P') type = type + "*";
177 else if(str[lstr]=='R') type = type + "&";
178 else if(str[lstr]=='C') type = "const " + type;
179 else if(str[lstr]=='Z') { // Complexe
180 type = "complex<" + type + ">";
[1222]181 for(int j=0;j<(int)strlen(str);j++) {
[1215]182 if (str[j]=='P') type = type + "*";
183 else if(str[j]=='R') type = type + "&";
184 else if(str[j]=='C') type = "const " + type;
185 else if(str[j]=='t') break;
186 else return string("Linux Decoding error: bad char 1,2 for Z");
187 }
188 break;
189 }
190 else return string("Linux Decoding error: bad last-1,last-2 char");
191 if(lstr==0) break;
192 }
193
194return type;
195#else
[1216]196return linuxtype;
[1215]197#endif
198}
Note: See TracBrowser for help on using the repository browser.