Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> семантика владения для intrusive/shared buffers? 
V
    Опции темы
boostcoder
Дата 2.5.2012, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



привет.

имеем объект типа yas::binary_mem_oarchive.
у него есть метод get_intrusive_buffer(), возвращающий объект типа intrusive_buffer, который реализован так:
Код

struct intrusive_buffer {
    intrusive_buffer(const void* data, std::size_t size)
        :data(data)
        ,size(size)
    {}
    intrusive_buffer(const intrusive_buffer& o)
        :data(o.data)
        ,size(o.size)
    {}

    const void* data;
    const std::size_t size;

private:
    intrusive_buffer();
};


т.е. intrusive_buffer не владеет данными.

используется это дело так:
Код

yas::binary_mem_oarchive oa;
oa & 33 & "44" & std::string("55");

...

intrusive_buffer buf = oa.get_intrusive_buffer();


сейчас же, решил добавить shared_buffer(по сути, тот же intrusive_buffer но массив хранится в shared_ptr`е) который обладает семантикой владения, и тут появилось три вопроса:
1. раз уж shared_buffer обладает семантикой владения, то он должен создавать копию данных из binary_mem_oarchive, или же сам binary_mem_oarchive должен хранить данные в объекте shared_buffer и возвращать его же?
2. первый и очевидный способ инициализации объекта shared_buffer выглядит так:
Код

yas::binary_mem_oarchive oa;
oa & 33 & "44" & std::string("55");
shared_buffer buf = oa.get_shared_buffer();

   нужно ли позволить инициализировать объекты типа shared_buffer из объектов intrusive_buffer? я думаю что нет.
3. нужно ли позволить инициализировать объекты типа intrusive_buffer из объектов shared_buffer?

спасибо.

PM WWW   Вверх
boostcoder
Дата 8.5.2012, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



жуть сколько ответов за целую неделю, смочь бы прочесть их все smile 
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0934 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.