mirror of
https://github.com/matrix-construct/construct
synced 2024-11-15 14:31:11 +01:00
ircd::buffer: Preliminary shared_buffer.
This commit is contained in:
parent
3eadd31c7f
commit
80f4b7151f
2 changed files with 36 additions and 0 deletions
|
@ -39,6 +39,7 @@ namespace ircd::buffer
|
|||
struct window_buffer;
|
||||
template<class buffer, size_t SIZE> struct fixed_buffer;
|
||||
template<class buffer, uint align = 16> struct unique_buffer;
|
||||
template<class buffer> struct shared_buffer;
|
||||
|
||||
template<size_t SIZE> using fixed_const_buffer = fixed_buffer<const_buffer, SIZE>;
|
||||
template<size_t SIZE> using fixed_mutable_buffer = fixed_buffer<mutable_buffer, SIZE>;
|
||||
|
@ -89,6 +90,7 @@ namespace ircd::buffer
|
|||
#include "fixed_buffer.h"
|
||||
#include "window_buffer.h"
|
||||
#include "unique_buffer.h"
|
||||
#include "shared_buffer.h"
|
||||
|
||||
// Export these important aliases down to main ircd namespace
|
||||
namespace ircd
|
||||
|
@ -97,6 +99,7 @@ namespace ircd
|
|||
using buffer::mutable_buffer;
|
||||
using buffer::fixed_buffer;
|
||||
using buffer::unique_buffer;
|
||||
using buffer::shared_buffer;
|
||||
using buffer::null_buffer;
|
||||
using buffer::window_buffer;
|
||||
using buffer::fixed_const_buffer;
|
||||
|
|
33
include/ircd/buffer/shared_buffer.h
Normal file
33
include/ircd/buffer/shared_buffer.h
Normal file
|
@ -0,0 +1,33 @@
|
|||
// Matrix Construct
|
||||
//
|
||||
// Copyright (C) Matrix Construct Developers, Authors & Contributors
|
||||
// Copyright (C) 2016-2018 Jason Volk <jason@zemos.net>
|
||||
//
|
||||
// Permission to use, copy, modify, and/or distribute this software for any
|
||||
// purpose with or without fee is hereby granted, provided that the above
|
||||
// copyright notice and this permission notice is present in all copies. The
|
||||
// full license for this software is available in the LICENSE file.
|
||||
|
||||
#pragma once
|
||||
#define HAVE_IRCD_BUFFER_SHARED_BUFFER_H
|
||||
|
||||
template<class buffer>
|
||||
struct ircd::buffer::shared_buffer
|
||||
:std::shared_ptr<char>
|
||||
,buffer
|
||||
{
|
||||
shared_buffer(const size_t &size);
|
||||
shared_buffer() = default;
|
||||
};
|
||||
|
||||
template<class buffer>
|
||||
ircd::buffer::shared_buffer<buffer>::shared_buffer(const size_t &size)
|
||||
:std::shared_ptr<char>
|
||||
{
|
||||
std::make_shared<char>(size)
|
||||
}
|
||||
,buffer
|
||||
{
|
||||
std::shared_ptr<char>::get(), size
|
||||
}
|
||||
{}
|
Loading…
Reference in a new issue