#include <form_loader.h>
Inheritance diagram for NLGEORGES::CFormLoader:
Nevrax France
Definition at line 49 of file form_loader.h.
Public Member Functions | |
UForm * | loadForm (const char *filename) |
CFormDfn * | loadFormDfn (const char *filename, bool forceLoad) |
UFormDfn * | loadFormDfn (const char *filename) |
UType * | loadFormType (const char *filename) |
CType * | loadType (const char *filename) |
Static Public Member Functions | |
UFormLoader * | createLoader () |
Create a form loader. | |
void | releaseLoader (UFormLoader *loader) |
Create a form loader. | |
Private Types | |
typedef std::map< std::string, NLMISC::CRefPtr< CFormDfn > > | TFormDfnMap |
typedef std::map< std::string, NLMISC::CRefPtr< CForm > > | TFormMap |
typedef std::map< std::string, NLMISC::CRefPtr< CType > > | TTypeMap |
Private Member Functions | |
virtual void | warning (bool exception, const char *function, const char *format,...) const |
Private Attributes | |
TFormMap | _MapForm |
TFormDfnMap | _MapFormDfn |
TTypeMap | _MapType |
|
Definition at line 68 of file form_loader.h. |
|
Definition at line 69 of file form_loader.h. |
|
Definition at line 67 of file form_loader.h. |
|
Create a form loader.
Definition at line 53 of file form_loader.cpp. Referenced by NLSOUND::CAudioMixerUser::init(), and loadForm().
00054 { 00055 return new CFormLoader; 00056 } |
|
Load a form, use NMISC::CPath to find the file. The pointer on the form must be held in a CSmartPtr<UForm>. Returns NULL if the form can't be loaded. Implements NLGEORGES::UFormLoader. Definition at line 205 of file form_loader.cpp. References _MapForm, file, index, loadFormDfn(), NLMISC::strlwr(), uint, and warning(). Referenced by NLGEORGES::CForm::readParent().
00206 { 00207 // Lower string filename 00208 string lowerStr = strlwr ((string)filename); 00209 lowerStr = CFile::getFilename (lowerStr); 00210 00211 // Already in the map ? 00212 TFormMap::iterator ite = _MapForm.find (lowerStr); 00213 if (ite != _MapForm.end() && ite->second) 00214 { 00215 // Return the pointer 00216 return (CForm*)ite->second; 00217 } 00218 else 00219 { 00220 // Create the form 00221 CForm *form = new CForm; 00222 00223 // Insert the form first 00224 _MapForm[lowerStr] = form; 00225 00226 // Load the type 00227 try 00228 { 00229 // Get the form DFN filename 00230 string name = CFile::getFilename (filename); 00231 uint index = name.rfind ('.'); 00232 if (index == string::npos) 00233 { 00234 // Output error 00235 warning (false, "loadForm", "Form name is invalid (%s). It should have the extension of its DFN type.", name.c_str ()); 00236 00237 // Delete the form 00238 delete form; 00239 form = NULL; 00240 _MapForm.erase (lowerStr); 00241 } 00242 name = name.substr (index+1); 00243 name += ".dfn"; 00244 00245 // Load the dfn 00246 CFormDfn *dfn = loadFormDfn (name.c_str (), false); 00247 if (dfn) 00248 { 00249 // Open the file 00250 name = CPath::lookup (filename, false, false); 00251 if (name.empty()) 00252 name = filename; 00253 CIFile file; 00254 if (file.open (name)) 00255 { 00256 // Init an xml stream 00257 CIXml read; 00258 read.init (file); 00259 00260 // Read the form 00261 form->read (read.getRootNode (), *this, dfn, filename); 00262 } 00263 else 00264 { 00265 // Output error 00266 warning (false, "loadForm", "Can't open the form file (%s).", filename); 00267 00268 // Delete the form 00269 delete form; 00270 form = NULL; 00271 _MapForm.erase (lowerStr); 00272 } 00273 } 00274 else 00275 { 00276 // Output error 00277 warning (false, "loadForm", "Can't open the dfn file (%s).", name.c_str ()); 00278 00279 // Delete the form 00280 delete form; 00281 form = NULL; 00282 _MapForm.erase (lowerStr); 00283 } 00284 } 00285 catch (Exception &e) 00286 { 00287 // Output error 00288 warning (false, "loadForm", "Error while loading the form (%s): %s", filename, e.what()); 00289 00290 // Delete the form 00291 delete form; 00292 form = NULL; 00293 _MapForm.erase (lowerStr); 00294 } 00295 00296 return form; 00297 } 00298 } |
|
Definition at line 139 of file form_loader.cpp. References _MapFormDfn, file, NLMISC::strlwr(), and warning().
00140 { 00141 // Lower string filename 00142 string lowerStr = strlwr ((string)filename); 00143 lowerStr = CFile::getFilename (lowerStr); 00144 00145 // Already in the map ? 00146 TFormDfnMap::iterator ite = _MapFormDfn.find (lowerStr); 00147 if (ite != _MapFormDfn.end() && ite->second) 00148 { 00149 // Return the pointer 00150 return ite->second; 00151 } 00152 else 00153 { 00154 // Create the formDfn 00155 CFormDfn *formDfn = new CFormDfn; 00156 00157 // Insert the form first 00158 _MapFormDfn[lowerStr] = formDfn; 00159 00160 // Load the type 00161 try 00162 { 00163 // Open the file 00164 string name = CPath::lookup (filename, false, false); 00165 if (name.empty()) 00166 name = filename; 00167 CIFile file; 00168 if (file.open (name)) 00169 { 00170 // Init an xml stream 00171 CIXml read; 00172 read.init (file); 00173 00174 // Read the type 00175 formDfn->read (read.getRootNode (), *this, forceLoad, filename); 00176 } 00177 else 00178 { 00179 // Output error 00180 warning (false, "loadFormDfn", "Can't open the form file (%s).", filename); 00181 00182 // Delete the formDfn 00183 delete formDfn; 00184 formDfn = NULL; 00185 _MapFormDfn.erase (lowerStr); 00186 } 00187 } 00188 catch (Exception &e) 00189 { 00190 // Output error 00191 warning (false, "loadFormDfn", "Error while loading the form (%s): %s", filename, e.what()); 00192 00193 // Delete the formDfn 00194 delete formDfn; 00195 formDfn = NULL; 00196 _MapFormDfn.erase (lowerStr); 00197 } 00198 00199 return formDfn; 00200 } 00201 } |
|
Load a DFN, use NMISC::CPath to find the file. The pointer on the form must be held in a CSmartPtr<UFormDfn>. Returns NULL if the DFN can't be loaded. Implements NLGEORGES::UFormLoader. Definition at line 302 of file form_loader.cpp. Referenced by loadForm(), NLGEORGES::CFormElmVirtualStruct::read(), NLGEORGES::CFormDfn::read(), NLGEORGES::CFormDfn::CEntry::setDfn(), and NLGEORGES::CFormDfn::setParent().
00303 { 00304 return loadFormDfn (filename, false); 00305 } |
|
Load a type, use NMISC::CPath to find the file. The pointer on the form must be held in a CSmartPtr<UType>. Returns NULL if the type can't be loaded. Implements NLGEORGES::UFormLoader. Definition at line 309 of file form_loader.cpp. References loadType().
00310 { 00311 return loadType (filename); 00312 } |
|
Definition at line 69 of file form_loader.cpp. References _MapType, file, NLMISC::strlwr(), type, and warning(). Referenced by loadFormType(), NLGEORGES::CFormDfn::read(), and NLGEORGES::CFormDfn::CEntry::setType().
00070 { 00071 // Lower string filename 00072 string lowerStr = strlwr ((string)filename); 00073 lowerStr = CFile::getFilename (lowerStr); 00074 00075 // Already in the map ? 00076 TTypeMap::iterator ite = _MapType.find (lowerStr); 00077 if (ite != _MapType.end() && (ite->second != NULL) ) 00078 { 00079 // Return the pointer 00080 return ite->second; 00081 } 00082 else 00083 { 00084 // Create the type 00085 CType *type = new CType; 00086 00087 // Load the type 00088 try 00089 { 00090 // Open the file 00091 string name = CPath::lookup (filename, false, false); 00092 if (name.empty()) 00093 name = filename; 00094 CIFile file; 00095 if (file.open (name)) 00096 { 00097 // Init an xml stream 00098 CIXml read; 00099 read.init (file); 00100 00101 // Read the type 00102 type->read (read.getRootNode ()); 00103 } 00104 else 00105 { 00106 // Output error 00107 warning (false, "loadType", "Can't open the form file (%s).", filename); 00108 00109 // Delete the type 00110 delete type; 00111 type = NULL; 00112 } 00113 } 00114 catch (Exception &e) 00115 { 00116 // Output error 00117 warning (false, "loadType", "Error while loading the form (%s): %s", filename, e.what()); 00118 00119 // Delete the type 00120 delete type; 00121 type = NULL; 00122 } 00123 00124 // Loaded ? 00125 if (type) 00126 { 00127 // Insert a new entry 00128 _MapType[lowerStr]= type; 00129 ite = _MapType.find (lowerStr); 00130 //CType *typeType = ite->second; 00131 // int toto = 0; 00132 } 00133 return type; 00134 } 00135 } |
|
Create a form loader.
Definition at line 60 of file form_loader.cpp. Referenced by NLSOUND::CAudioMixerUser::init(), and loadForm().
00061 {
00062 delete ((CFormLoader*)loader);
00063 }
|
|
Definition at line 316 of file form_loader.cpp. References buffer, format, and NLGEORGES::warning(). Referenced by loadForm(), loadFormDfn(), and loadType().
00317 { 00318 // Make a buffer string 00319 va_list args; 00320 va_start( args, format ); 00321 char buffer[1024]; 00322 vsnprintf( buffer, 1024, format, args ); 00323 va_end( args ); 00324 00325 // Set the warning 00326 NLGEORGES::warning (exception, "(CFormLoader::%s) : %s", function, buffer); 00327 } |
|
Definition at line 78 of file form_loader.h. Referenced by loadForm(). |
|
Definition at line 75 of file form_loader.h. Referenced by loadFormDfn(). |
|
Definition at line 72 of file form_loader.h. Referenced by loadType(). |