Lumiera
0.pre.04~rc.1
»edit your freedom«
Loading...
Searching...
No Matches
size-trait.hpp
Go to the documentation of this file.
1
/*
2
SIZE-TRAIT.hpp - helpers and definitions to deal with the size of some known types
3
4
Copyright (C)
5
2011, Hermann Vosseler <Ichthyostega@web.de>
6
7
**Lumiera** is free software; you can redistribute it and/or modify it
8
under the terms of the GNU General Public License as published by the
9
Free Software Foundation; either version 2 of the License, or (at your
10
option) any later version. See the file COPYING for further details.
11
12
*/
13
14
39
#ifndef LIB_META_SIZE_TRAIT_H
40
#define LIB_META_SIZE_TRAIT_H
41
42
43
44
#include <vector>
45
#include <string>
46
47
48
namespace
lib
{
49
namespace
meta {
50
51
77
class
SizeTrait
78
{
79
//-------------------------------------mimicked-definitions--
80
81
typedef
std::vector<size_t>
Vector
;
82
typedef
std::vector<bool>
BVector
;
83
84
struct
CompatAllocator
85
: std::allocator<char>
86
{ };
87
88
struct
Locale
89
{
90
void
*
_M_impl
;
91
};
92
93
template
<
class
T>
94
struct
Optional
95
{
96
bool
m_initialized_
;
97
T
m_storage_
;
98
};
99
100
enum
IOS_Openmode
101
{
102
_S_app
= 1L << 0,
103
_S_ate
= 1L << 1,
104
_S_bin
= 1L << 2,
105
_S_in
= 1L << 3,
106
_S_out
= 1L << 4,
107
_S_trunc
= 1L << 5,
108
_S_ios_openmode_end
= 1L << 16
109
};
110
111
struct
BasicStringbuf
112
{
113
char
*
_M_in_beg
;
114
char
*
_M_in_cur
;
115
char
*
_M_in_end
;
116
char
*
_M_out_beg
;
117
char
*
_M_out_cur
;
118
char
*
_M_out_end
;
119
120
Locale
_M_buf_locale
;
121
122
virtual
~BasicStringbuf
() { }
123
};
124
125
struct
BasicAltstringbuf
126
:
BasicStringbuf
127
{
128
char
*
putend_
;
129
bool
is_allocated_
;
130
IOS_Openmode
mode_
;
131
CompatAllocator
alloc_
;
132
};
133
134
struct
BoostFormat
135
{
136
Vector
items_
;
137
BVector
bound_
;
// note: differs in size
138
int
style_
;
139
int
cur_arg_
;
140
int
num_args_
;
141
mutable
bool
dumped_
;
142
std::string
prefix_
;
143
unsigned
char
exceptions
;
144
BasicAltstringbuf
buf_
;
145
Optional<Locale>
loc_
;
146
};
147
//-------------------------------------mimicked-definitions--
148
149
150
public
:
/* ===== Interface: size constants ===== */
151
152
enum
{
ALIGNMENT
=
sizeof
(size_t)
153
154
,
STRING
=
sizeof
(std::string)
155
,
VECTOR
=
sizeof
(
Vector
)
156
,
BVECTOR
=
sizeof
(
BVector
)
157
158
,
BOOST_FORMAT
=
sizeof
(
BoostFormat
)
159
};
160
};
161
162
163
}}
// namespace lib::meta
164
#endif
lib::meta::SizeTrait
A collection of constants to describe the expected size of some known classes, without needing to inc...
Definition
size-trait.hpp:78
lib::meta::SizeTrait::BoostFormat::items_
Vector items_
Definition
size-trait.hpp:136
lib::meta::SizeTrait::BoostFormat::num_args_
int num_args_
Definition
size-trait.hpp:140
lib::meta::SizeTrait::BoostFormat::cur_arg_
int cur_arg_
Definition
size-trait.hpp:139
lib::meta::SizeTrait::BVECTOR
@ BVECTOR
Definition
size-trait.hpp:156
lib::meta::SizeTrait::VECTOR
@ VECTOR
Definition
size-trait.hpp:155
lib::meta::SizeTrait::ALIGNMENT
@ ALIGNMENT
Definition
size-trait.hpp:152
lib::meta::SizeTrait::BOOST_FORMAT
@ BOOST_FORMAT
Definition
size-trait.hpp:158
lib::meta::SizeTrait::STRING
@ STRING
Definition
size-trait.hpp:154
lib::meta::SizeTrait::IOS_Openmode
IOS_Openmode
Definition
size-trait.hpp:101
lib::meta::SizeTrait::_S_trunc
@ _S_trunc
Definition
size-trait.hpp:107
lib::meta::SizeTrait::_S_out
@ _S_out
Definition
size-trait.hpp:106
lib::meta::SizeTrait::_S_ios_openmode_end
@ _S_ios_openmode_end
Definition
size-trait.hpp:108
lib::meta::SizeTrait::_S_app
@ _S_app
Definition
size-trait.hpp:102
lib::meta::SizeTrait::_S_bin
@ _S_bin
Definition
size-trait.hpp:104
lib::meta::SizeTrait::_S_ate
@ _S_ate
Definition
size-trait.hpp:103
lib::meta::SizeTrait::_S_in
@ _S_in
Definition
size-trait.hpp:105
lib::meta::SizeTrait::Optional::m_initialized_
bool m_initialized_
Definition
size-trait.hpp:96
lib::meta::SizeTrait::BoostFormat::dumped_
bool dumped_
Definition
size-trait.hpp:141
lib::meta::SizeTrait::Vector
std::vector< size_t > Vector
Definition
size-trait.hpp:81
lib::meta::SizeTrait::Locale::_M_impl
void * _M_impl
Definition
size-trait.hpp:90
lib::meta::SizeTrait::BoostFormat::style_
int style_
Definition
size-trait.hpp:138
lib::meta::SizeTrait::BVector
std::vector< bool > BVector
Definition
size-trait.hpp:82
lib::meta::SizeTrait::BoostFormat::buf_
BasicAltstringbuf buf_
Definition
size-trait.hpp:144
lib::meta::SizeTrait::BoostFormat::exceptions
unsigned char exceptions
Definition
size-trait.hpp:143
lib::meta::SizeTrait::Optional::m_storage_
T m_storage_
Definition
size-trait.hpp:97
lib::meta::SizeTrait::BoostFormat::prefix_
std::string prefix_
Definition
size-trait.hpp:142
lib::meta::SizeTrait::BoostFormat::loc_
Optional< Locale > loc_
Definition
size-trait.hpp:145
lib::meta::SizeTrait::BoostFormat::bound_
BVector bound_
Definition
size-trait.hpp:137
lib::meta::SizeTrait::BoostFormat
Definition
size-trait.hpp:135
lib::meta::SizeTrait::Locale
Definition
size-trait.hpp:89
lib::meta::SizeTrait::Optional
Definition
size-trait.hpp:95
lib::meta::enable_if
enable_if_c< Cond::value, T >::type enable_if
SFINAE helper to control the visibility of specialisations and overloads.
Definition
meta/util.hpp:87
lib
Implementation namespace for support and library code.
Definition
common-services.cpp:55
lib::meta::SizeTrait::BasicAltstringbuf
Definition
size-trait.hpp:127
lib::meta::SizeTrait::BasicAltstringbuf::is_allocated_
bool is_allocated_
Definition
size-trait.hpp:129
lib::meta::SizeTrait::BasicAltstringbuf::putend_
char * putend_
Definition
size-trait.hpp:128
lib::meta::SizeTrait::BasicAltstringbuf::mode_
IOS_Openmode mode_
Definition
size-trait.hpp:130
lib::meta::SizeTrait::BasicAltstringbuf::alloc_
CompatAllocator alloc_
Definition
size-trait.hpp:131
lib::meta::SizeTrait::BasicStringbuf
Definition
size-trait.hpp:112
lib::meta::SizeTrait::BasicStringbuf::_M_in_cur
char * _M_in_cur
Definition
size-trait.hpp:114
lib::meta::SizeTrait::BasicStringbuf::_M_in_beg
char * _M_in_beg
Definition
size-trait.hpp:113
lib::meta::SizeTrait::BasicStringbuf::_M_buf_locale
Locale _M_buf_locale
Definition
size-trait.hpp:120
lib::meta::SizeTrait::BasicStringbuf::_M_in_end
char * _M_in_end
Definition
size-trait.hpp:115
lib::meta::SizeTrait::BasicStringbuf::_M_out_cur
char * _M_out_cur
Definition
size-trait.hpp:117
lib::meta::SizeTrait::BasicStringbuf::_M_out_end
char * _M_out_end
Definition
size-trait.hpp:118
lib::meta::SizeTrait::BasicStringbuf::~BasicStringbuf
virtual ~BasicStringbuf()
Definition
size-trait.hpp:122
lib::meta::SizeTrait::BasicStringbuf::_M_out_beg
char * _M_out_beg
Definition
size-trait.hpp:116
lib::meta::SizeTrait::CompatAllocator
Definition
size-trait.hpp:86
lib
meta
size-trait.hpp
Generated on Fri Nov 7 2025 for Lumiera by
1.9.8