Разработка программного модуля для компьютерной игры
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
uct fs_incorrect_path,failure> incorrect_path;mll::debug::exception_template zip_restrictions;
}
}
Файл directory.hmll
{fs
{
//=====================================================================================//
// class directory //
//=====================================================================================//directory
{:std::list list_t;_t m_list;::string m_name;:list_t::iterator iterator;list_t::const_iterator const_iterator;:(const std::string &name): m_name(name) {}
~directory();mount(sub_fs *what);::auto_ptr unmount(iterator what);std::string &name() { return m_name; }_iterator begin() { return m_list.begin(); }_iterator end() { return m_list.end(); }size() const { return m_list.size(); }
};
}
}
Файл sub_fs.hmll
{fs
{sub_fs_iter;
//=====================================================================================//
// class sub_fs //
//=====================================================================================//sub_fs
{:priority_handler;: ~sub_fs() = 0 {}
///подцепить объект-приоритет системы
virtual void set_priority_handler(std::auto_ptr handler) = 0;
///Дисковый путь до объекта подсистемы (каталога, zip-файла etc), со слешем на конце
virtual const std::string& disk_path() const = 0;
/// Возможность изменять файлы внутри подсистемыbool system_readonly() const = 0;
/// Существует ли файл с указанным именем
virtual bool file_exists(const fs_path &name) const = 0;
/// Создать итератор внутри подсистемы по введенному пути
virtual std::auto_ptr new_iterator(const fs_path &) const = 0;
/// Размер файла с указанным именем в байтах
virtual unsigned file_size(const fs_path &name) const = 0;
/// Возможность писать в файл с указанным именем
virtual bool is_readonly(const fs_path &name) const = 0;
/// Дата последнего изменения файла с указанным именем
virtual time_t date(const fs_path &name) const = 0;
/// Является ли файл с указанным именем директорией
virtual bool is_dir(const fs_path &name) const = 0;
/// Вернуть указатель на поток istream для файла с указанным именем
virtual std::auto_ptr r_open_file(const fs_path &path, seekable = true) const = 0;
/// Вернуть указатель на поток ostream для файла с указанным именем
/** Если указан параметр append, поток должен указывать
на конец файла.*/std::auto_ptr w_open_file(const fs_path &path,append, bool seekable = true) const = 0;
/// Удалить файл с указанным именемvoid delete_file(const fs_path &name) const = 0;
///Создать директориюvoid make_dir(const fs_path &path) const = 0;://up_to_subsystem_priorityint priority() const = 0;
};
//=====================================================================================//
// class FILE_SYSTEM_EXPORT sub_fs::priority_handler //
//=====================================================================================//sub_fs::priority_handler
{:~priority_handler() {}int priority() const = 0;
};
}
}
Файл sub_fs_iter.hmll
{fs
{
//=====================================================================================//
// class sub_fs_iter //
//=====================================================================================//sub_fs_iter
{: ~sub_fs_iter() = 0 {}
/// Закончились ли файлы по указанному пути
virtual bool is_done() = 0;
/// Смещение на следующий файл
virtual sub_fs_iter &operator++() = 0;
/// Формирует объект file_obj из имеющейся информации о файле
virtual file_id get_id() = 0;
};
}
}
Файл fs_files.hmll
{fs
{
//=====================================================================================//
// template class reference_container //
//=====================================================================================//reference_container
{:T container_type;container_type &m_list;:_container(const container_type &list): m_list(list) {}
~reference_container() {}:typename container_type::const_iterator iterator;:
///получить итератор на начало
iterator begin() { return m_list.begin(); }
///получить итератор на конец
iterator end() { return m_list.end(); }
///получить размер контейнераsize() const { return m_list.size(); }
};
//=====================================================================================//
// template class value_container //
//=====================================================================================//value_container
{:T container_type;_type m_list;:_container(const container_type &list): m_list(list) {}_container(const value_container &another): m_list(another.m_list) {}
~value_container() {}:typename container_type::const_iterator iterator;:
///получить итератор на начало
iterator begin() { return m_list.begin(); }
///получить итератор на конец
iterator end() { return m_list.end(); }
///получить размер контейнераsize() const { return m_list.size(); }
};std::list id_container;
//=====================================================================================//
// class fs_files //
//=====================================================================================//fs_files
{:file_t::const_iterator iterator;:::shared_ptr &another);
~fs_files() {}_files &);:_container get_file_container() const;_container get_id_container(const file_id &id) const;:
///получить итератор на начало контейнера предпочтительных вариантов фалов
iterator begin() const { return m_list->begin(); }
///получить итератор на конецend() const { return m_list->end(); }
///получить размер контейнераint size() const { return m_list->size(); }
};
}
}
Файл file_id.hmll
{fs
{sub_fs;
//=====================================================================================//
// class file_id //
//=====================================================================================//FILE_SYSTEM_EXPORT file_id
{sub_fs *m_sub_fs;_path m_name;:_id(): m_sub_fs(0) {}_id(const sub_fs *sfs, const std::string &name);_id(const file_id &another);
//~file_id() {}_id& operator=(const file_id& another)
{(this != &another)
{_sub_fs = another.m_sub_fs;_name = another.m_name;
}*this;
}:const void * const () const { return m_sub_fs; }operator !() const { return m_sub_fs == 0; }:
/// Возвратит указатель на sub_fs, к которому принадлежит идентификатор
const sub_fs *sub_fs() const { return m_sub_fs; }
/// Полный виртуальный путь с именем
std::string path() const;
/// Виртуальный путь::string dir() const;
/// Имя файла::string fname() const;
/// Расширение::string ext() const;
///Полное имя с расширением
std::string name() const;
///Полный дисковый путь с именем
std::string disk_path() const;
/// Параметр "только чтение"is_readonly() const;
/// Размер файла в байтахfile_size() const;
/// Время последнего изменения файла
time_t date() const;
/// Директория ли это
bool is_dir() const;
};
}
}
Файл file.hmll
{fs
{
//=====================================================================================//
// class o_file //
//=====================================================================================//
/** \class o_file
\brief Класс - "файл для записи".
*/
/**Класс, содерж