Каков наилучший метод для поддержки метаданных объекта для конкретной реализации? (хотя, надеюсь, все еще набирается строго) - PullRequest
1 голос
/ 20 марта 2011

В целях сохранения этого краткого (и точечного) я собираюсь изложить три короткие конструкции объекта и затем объяснить, что именно я пытаюсь выполнить здесь.

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:

  1. Записи ACL для конкретной реализации для directory_object и filesystem_object
  2. пользовательские теги-данные, зависящие от реализации (т. Е. Структура, которая что-то означает для кода, повторяющего конкретный экземпляр дерева.)

Учитывая вышеизложенную информацию, как наилучшим образом я смогу достичь этих целей?

P.S. Это может быть деталью будущей реализации, но в конечном итоге я получу доступ к моей древовидной реализации "удаленно" (то есть, это приведет к созданию многопоточного сервера, поэтому любая помощь, предоставленная здесь, должна быть реализована и там, и там и здесь.)

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...