26 #include "rawfilefactory.h"
29 using namespace Debug;
36 RawFileFactory::RawFileFactory(RawFile::Type type,
37 const RawFileFactory::raw_file_factory_t & fn,
40 Trace(DEBUG1) <<
"registering type "
42 registerType(type, fn, ext);
46 void RawFileFactory::registerType(RawFile::Type type,
47 const RawFileFactory::raw_file_factory_t & fn,
52 Trace(ERROR) <<
"NULL fn for registerFactory()\n";
56 extensions()[ext] = type;
60 void RawFileFactory::unRegisterType(RawFile::Type type)
62 Table::iterator iter = table().find(type);
63 if (iter == table().end())
65 Trace(ERROR) <<
"attempting to unregisterFactory() in unregistered "
72 const char **RawFileFactory::fileExtensions()
74 static const char **_fileExtensions = NULL;
75 if(!_fileExtensions) {
76 Extensions & ext = extensions();
77 size_t s = ext.size();
78 _fileExtensions = (
const char**)calloc((s + 1),
sizeof(
char*));
79 const char **current = _fileExtensions;
80 Extensions::const_iterator iter(ext.begin());
81 for ( ; iter != ext.end(); ++iter) {
82 *current = iter->first.c_str();
87 return _fileExtensions;