00001 00002 class NOVTABLE chapter_list 00003 { 00004 public: 00006 virtual t_size get_chapter_count() const = 0; 00010 virtual const file_info & get_info(t_size p_chapter) const = 0; 00011 00013 virtual void set_chapter_count(t_size p_count) = 0; 00017 virtual void set_info(t_size p_chapter,const file_info & p_info) = 0; 00018 00020 void copy(const chapter_list & p_source); 00021 00022 inline const chapter_list & operator=(const chapter_list & p_source) {copy(p_source); return *this;} 00023 00024 protected: 00025 chapter_list() {} 00026 ~chapter_list() {} 00027 }; 00028 00030 class chapter_list_impl : public chapter_list 00031 { 00032 public: 00033 chapter_list_impl(const chapter_list_impl & p_source) {copy(p_source);} 00034 chapter_list_impl(const chapter_list & p_source) {copy(p_source);} 00035 chapter_list_impl() {} 00036 00037 const chapter_list_impl & operator=(const chapter_list_impl & p_source) {copy(p_source); return *this;} 00038 const chapter_list_impl & operator=(const chapter_list & p_source) {copy(p_source); return *this;} 00039 00040 t_size get_chapter_count() const {return m_infos.get_size();} 00041 const file_info & get_info(t_size p_chapter) const {return m_infos[p_chapter];} 00042 00043 void set_chapter_count(t_size p_count) {m_infos.set_size(p_count);} 00044 void set_info(t_size p_chapter,const file_info & p_info) {m_infos[p_chapter] = p_info;} 00045 private: 00046 pfc::array_t<file_info_impl> m_infos; 00047 }; 00048 00049 00051 class NOVTABLE chapterizer : public service_base 00052 { 00053 public: 00057 virtual bool is_our_file(const char * p_path,abort_callback & p_abort) = 0; 00058 00063 virtual void set_chapters(const char * p_path,chapter_list const & p_list,abort_callback & p_abort) = 0; 00068 virtual void get_chapters(const char * p_path,chapter_list & p_list,abort_callback & p_abort) = 0; 00069 00071 static bool g_find(service_ptr_t<chapterizer> & p_out,const char * p_path,abort_callback & p_abort); 00072 00073 FB2K_MAKE_SERVICE_INTERFACE_ENTRYPOINT(chapterizer); 00074 };
1.5.5