В целях сохранения этого краткого (и точечного) я собираюсь изложить три короткие конструкции объекта и затем объяснить, что именно я пытаюсь выполнить здесь.
Tree_object class-
class tree_object
{
protected:
std::string name_;
tree_object* root_;
uint32_t type_;
// tree_objec::tree_object();
tree_object(enum OBJECT_TYPE type);
// tree_objec::tree_object();
tree_object(std::string name, enum OBJECT_TYPE type = ENTITY);
// tree_objec::tree_object();
tree_object(std::string name, enum OBJECT_TYPE type, tree_object& parent);
public:
// default constructor.
tree_object();
// Attach me to some parent node.
virtual bool attach(tree_object& parent);
// Detach me from my current parent.
virtual bool detach(bool forced = false);
// Get object name
virtual operator std::string();
// Set object name
void operator=(std::string value);
// Get object type
virtual operator uint32_t();
};
directory_object-
class directory_object: public tree_object
{
// List of children
std::vector<tree_object> children;
public:
// Attach me to some parent node.
bool attach(tree_object& parent);
// Detach me from my current parent.
bool detach(bool forced = false);
directory_object(std::string element_name = "");
directory_object(std::string element_name, tree_object& parent);
directory_object(std::string element_name, directory_object& parent);
};
filesystem_object-
class filesystem_object: public tree_object
{
public:
// Attach me to some parent node.
bool attach(tree_object& parent);
// Detach me from my current parent.
bool detach(bool forced = false);
filesystem_object(std::string element_name = "");
filesystem_object(std::string element_name, tree_object& parent);
filesystem_object(std::string element_name, directory_object& parent);
};
Учитывая приведенные выше определения объектов, я хочу добавить поддержку следующих понятий в directory_object
и filesystem_object
:
- Записи ACL для конкретной реализации для
directory_object
и filesystem_object
- пользовательские теги-данные, зависящие от реализации (т. Е. Структура, которая что-то означает для кода, повторяющего конкретный экземпляр дерева.)
Учитывая вышеизложенную информацию, как наилучшим образом я смогу достичь этих целей?
P.S. Это может быть деталью будущей реализации, но в конечном итоге я получу доступ к моей древовидной реализации "удаленно" (то есть, это приведет к созданию многопоточного сервера, поэтому любая помощь, предоставленная здесь, должна быть реализована и там, и там и здесь.)
Спасибо.