27 #include <libopenraw/debug.h> 29 #include "rawfile.hpp" 30 #include "rawfilefactory.hpp" 33 using namespace Debug;
39 RawFileFactory::RawFileFactory(RawFile::Type type,
40 const RawFileFactory::raw_file_factory_t &fn,
43 LOGDBG1(
"registering type %d\n", (
int)type);
44 registerType(type, fn, ext);
47 void RawFileFactory::registerType(RawFile::Type type,
48 const RawFileFactory::raw_file_factory_t &fn,
52 LOGERR(
"NULL fn for registerFactory()\n");
53 assert(fn ==
nullptr);
56 extensions()[ext] = type;
59 void RawFileFactory::unRegisterType(RawFile::Type type)
61 Table::iterator iter = table().find(type);
62 if (iter == table().end()) {
63 LOGERR(
"attempting to unregisterFactory() in unregistered element\n");
69 const char **RawFileFactory::fileExtensions()
71 static const char **_fileExtensions = NULL;
72 if (!_fileExtensions) {
73 Extensions &ext = extensions();
74 size_t s = ext.size();
75 _fileExtensions = (
const char **)calloc((s + 1),
sizeof(
char *));
76 const char **current = _fileExtensions;
77 Extensions::const_iterator iter(ext.begin());
78 for (; iter != ext.end(); ++iter) {
79 *current = iter->first.c_str();
84 return _fileExtensions;
CIFF is the container for CRW files. It is an attempt from Canon to make this a standard. I guess it failed.