00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef SGE_AUDIO_LOADER_HPP_INCLUDED
00022 #define SGE_AUDIO_LOADER_HPP_INCLUDED
00023
00024 #include "file.hpp"
00025 #include "../../string.hpp"
00026 #include "../../path.hpp"
00027 #include "../../shared_ptr.hpp"
00028 #include "../../plugin/traits.hpp"
00029 #include "../../plugin/capabilities.hpp"
00030 #include "../../export.hpp"
00031 #include <boost/noncopyable.hpp>
00032
00033 namespace sge
00034 {
00035 namespace audio
00036 {
00037
00038 class SGE_CLASS_SYMBOL loader : boost::noncopyable {
00039 public:
00040 virtual const file_ptr load(const path& file) = 0;
00041 virtual bool is_valid_file(const path& file) const = 0;
00042 SGE_SYMBOL virtual ~loader();
00043 };
00044
00045 typedef shared_ptr<loader> loader_ptr;
00046
00047 }
00048
00049 namespace plugin
00050 {
00051 namespace detail
00052 {
00053
00054 template<> struct traits<audio::loader> {
00055 SGE_SYMBOL static address_name plugin_loader_name();
00056 SGE_SYMBOL static capabilities::type get_plugin_type();
00057 typedef audio::loader* (*loader_fun)();
00058 };
00059
00060 }
00061 }
00062
00063 }
00064
00065 #endif // AUDIO_HPP