Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const size_t bufSize{ 20 };
- char* text{ new char[bufSize] };
- memcpy (text, "Hello,World! :)\n", bufSize);
- //auto storage{ folly::IOBuf::create (bufSize) };
- //auto storage{ folly::IOBuf::wrapBuffer(text, bufSize) };
- std::unique_ptr<folly::IOBuf>* storage{ new std::unique_ptr<folly::IOBuf>};
- *storage = folly::IOBuf::takeOwnership (text, bufSize, [](void* ptr, void* ud) { std::cout << "Free owned buffer!\n"; delete[] static_cast<char*>(ptr); });
- //storage->append (bufSize);
- //memcpy (storage->writableData(), "Hello,World! :)\n", bufSize);
- std::cout << (*storage)->length () << ' ' << (*storage)->capacity () << '\n';
- std::cout << "isShared: " << std::boolalpha << (*storage)->isShared () << '\n';
- std::cout << "storage->buffer(): " << reinterpret_cast<const void*>((*storage)->writableData ()) << '\n';
- {
- auto data{ (*storage)->clone () };
- std::cout << data->length () << ' ' << data->capacity () << '\n';
- //data->append (bufSize);
- //std::cout << data->length () << ' ' << data->capacity () << '\n';
- std::cout << "isShared: " << std::boolalpha << data->isShared () << '\n';
- std::cout << "data->buffer(): " << reinterpret_cast<const void*>(data->buffer ()) << '\n';
- std::cout << "data->writableData(): " << reinterpret_cast<const void*>(data->writableData ()) << '\n';
- // MODIFY
- //data->unshare ();
- data->trimStart (2);
- std::cout << "data->buffer(): " << reinterpret_cast<const void*>(data->buffer ()) << '\n';
- std::cout << "data->writableData(): " << reinterpret_cast<const void*>(data->writableData ()) << '\n';
- *(data->writableData()) = 'Z';
- //std::cout << "isShared: " << std::boolalpha << data->isShared () << '\n';
- //auto begin{ data->writableData () };
- //auto end{ begin + data->length () };
- delete storage;
- //memcpy (begin, "Hello,World! :)\n", bufSize);
- std::cout << data->data () << '\n';
- }
- //std::cout << "isShared: " << std::boolalpha << (*storage)->isShared () << '\n';
- //std::cout << (*storage)->data () << '\n';
- //for (uint16_t i{ 0 }; begin < end; *(begin++) = static_cast<uint8_t>(i), ++i);
- return 0;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement