00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef LOADERFILETYPEREGISTRY_H
00020 #define LOADERFILETYPEREGISTRY_H
00021
00022 #include <pandabase.h>
00023
00024 #include "pvector.h"
00025 #include "pmap.h"
00026
00027 class LoaderFileType;
00028 class Filename;
00029
00030
00031
00032
00033
00034
00035 class EXPCL_PANDA LoaderFileTypeRegistry {
00036 protected:
00037 LoaderFileTypeRegistry();
00038
00039 public:
00040 ~LoaderFileTypeRegistry();
00041
00042 static LoaderFileTypeRegistry *get_ptr();
00043
00044 int get_num_types() const;
00045 LoaderFileType *get_type(int n) const;
00046
00047 LoaderFileType *get_type_from_extension(const string &extension) const;
00048
00049 void write_types(ostream &out, int indent_level = 0) const;
00050
00051 void register_type(LoaderFileType *type);
00052
00053 private:
00054 typedef pvector<LoaderFileType *> Types;
00055 Types _types;
00056
00057 typedef pmap<string, LoaderFileType *> Extensions;
00058 Extensions _extensions;
00059
00060 static LoaderFileTypeRegistry *_global_ptr;
00061 };
00062
00063 #endif
00064