BDE 4.39.x Production Release
Loading...
Searching...
No Matches
s_baltst_testattribute.h
Go to the documentation of this file.
1/// @file s_baltst_testattribute.h
2///
3/// The content of this file has been pre-processed for Doxygen.
4///
5
6
7// s_baltst_testattribute.h -*-C++-*-
8#ifndef INCLUDED_S_BALTST_TESTATTRIBUTE
9#define INCLUDED_S_BALTST_TESTATTRIBUTE
10
11#include <bsls_ident.h>
12BSLS_IDENT("$Id: $")
13
14/// @defgroup s_baltst_testattribute s_baltst_testattribute
15/// @brief Provide attribute metadata types for test sequences.
16/// @addtogroup Standalones
17/// @{
18/// @addtogroup s_baltst
19/// @{
20/// @addtogroup s_baltst_testattribute
21/// @{
22///
23/// <h1> Outline </h1>
24/// * <a href="#s_baltst_testattribute-purpose"> Purpose</a>
25/// * <a href="#s_baltst_testattribute-classes"> Classes </a>
26///
27/// # Purpose {#s_baltst_testattribute-purpose}
28/// Provide attribute metadata types for test sequences.
29///
30/// # Classes {#s_baltst_testattribute-classes}
31///
32/// - s_baltst::TestAttribute: attribute metadata for test sequences
33/// - s_baltst::TestAttribute1: an example attribute
34/// - s_baltst::TestAttribute2: an example attribute
35/// - s_baltst::TestAttributeDefaults: defaults
36/// - s_baltst::TypedTestAttribute: attribute metadata with value type
37/// @}
38/** @} */
39/** @} */
40
41/** @addtogroup Standalones
42 * @{
43 */
44/** @addtogroup s_baltst
45 * @{
46 */
47/** @addtogroup s_baltst_testattribute
48 * @{
49 */
50/
51#include <bdlat_attributeinfo.h>
52
53#include <bsl_cstring.h>
54#include <bsl_string.h>
55#include <bsl_string_view.h>
56
57
58namespace s_baltst {
59
60 // ============================
61 // struct TestAttributeDefaults
62 // ============================
63
64/// This utility `struct` provides a namespace for non-modifiable,
65/// constant-initialized default values for the non-type template parameters
66/// of a `TestAttribute`.
67///
68/// See @ref s_baltst_testattribute
70
71 // CLASS DATA
72 static const char k_DEFAULT_ANNOTATION[1];
73 static const char k_DEFAULT_NAME[1];
75};
76
77 // ===================
78 // class TestAttribute
79 // ===================
80
81/// This class provides a namespace for a suite of non-modifiable,
82/// constant-initialized data that can be used to specify all attributes of
83/// a `bdlat_AttributeInfo` object.
84///
85/// See @ref s_baltst_testattribute
86template <int ID,
88 const char *ANNOTATION = TestAttributeDefaults::k_DEFAULT_ANNOTATION,
89 int FORMATTING_MODE =
92
93 public:
94 // CLASS DATA
95 static const char *k_NAME;
96 static const char *k_ANNOTATION;
97 enum { k_ID = ID, k_FORMATTING_MODE = FORMATTING_MODE };
98
99 // CLASS METHODS
100 static int id();
101
102 static bsl::string_view name();
103
105
106 static int formattingMode();
107
109
110 // CREATORS
112};
113
114// CLASS DATA
115template <int ID,
116 const char *NAME,
117 const char *ANNOTATION,
118 int FORMATTING_MODE>
120 NAME;
121
122template <int ID,
123 const char *NAME,
124 const char *ANNOTATION,
125 int FORMATTING_MODE>
126const char
128 ANNOTATION;
129
130 // ========================
131 // class TypedTestAttribute
132 // ========================
133
134/// This class provides two member type definitions, `Type`, and
135/// `Attribute`, which are aliases to the arguments supplied to the `TYPE`
136/// and `TEST_SELECTION` template parameters, respectively.
137///
138/// See @ref s_baltst_testattribute
139template <class TYPE, class TEST_ATTRIBUTE>
141
142 public:
143 // TYPES
144 typedef TYPE Type;
145 typedef TEST_ATTRIBUTE Attribute;
146};
147
148 // =========================
149 // struct TestAttribute_Data
150 // =========================
151
153 // PUBLIC CLASS DATA
154 static const int k_ATTRIBUTE_1_ID = 0;
155 static const char k_ATTRIBUTE_1_NAME[sizeof("attr1")];
156 static const char k_ATTRIBUTE_1_ANNOTATION[sizeof("")];
157 static const int k_ATTRIBUTE_1_FORMATTING_MODE = 0;
158 static const int k_ATTRIBUTE_2_ID = 1;
159 static const char k_ATTRIBUTE_2_NAME[sizeof("attr2")];
160 static const char k_ATTRIBUTE_2_ANNOTATION[sizeof("")];
161 static const int k_ATTRIBUTE_2_FORMATTING_MODE = 0;
162};
163
164 // ====================
165 // class TestAttribute1
166 // ====================
167
173
174 // ====================
175 // class TestAttribute2
176 // ====================
177
183
184// ============================================================================
185// INLINE DEFINITIONS
186// ============================================================================
187
188 // -------------------
189 // class TestAttribute
190 // -------------------
191
192// CLASS METHODS
193template <int ID,
194 const char *NAME,
195 const char *ANNOTATION,
196 int FORMATTING_MODE>
201
202template <int ID,
203 const char *NAME,
204 const char *ANNOTATION,
205 int FORMATTING_MODE>
210
211template <int ID,
212 const char *NAME,
213 const char *ANNOTATION,
214 int FORMATTING_MODE>
220
221template <int ID,
222 const char *NAME,
223 const char *ANNOTATION,
224 int FORMATTING_MODE>
229
230template <int ID,
231 const char *NAME,
232 const char *ANNOTATION,
233 int FORMATTING_MODE>
236{
237 bdlat_AttributeInfo result = {k_ID,
238 k_NAME,
239 static_cast<int>(bsl::strlen(k_NAME)),
240 k_ANNOTATION,
241 k_FORMATTING_MODE};
242
243 return result;
244}
245
246// CREATORS
247template <int ID,
248 const char *NAME,
249 const char *ANNOTATION,
250 int FORMATTING_MODE>
254
255} // close package namespace
256
257
258#endif // INCLUDED_S_BALTST_TESTATTRIBUTE
259
260// ----------------------------------------------------------------------------
261// Copyright 2021 Bloomberg Finance L.P.
262//
263// Licensed under the Apache License, Version 2.0 (the "License");
264// you may not use this file except in compliance with the License.
265// You may obtain a copy of the License at
266//
267// http://www.apache.org/licenses/LICENSE-2.0
268//
269// Unless required by applicable law or agreed to in writing, software
270// distributed under the License is distributed on an "AS IS" BASIS,
271// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
272// See the License for the specific language governing permissions and
273// limitations under the License.
274// ----------------------------- END-OF-FILE ----------------------------------
275
276/** @} */
277/** @} */
278/** @} */
Definition bslstl_stringview.h:471
Definition s_baltst_testattribute.h:91
static const char * k_ANNOTATION
Definition s_baltst_testattribute.h:96
TestAttribute()
Definition s_baltst_testattribute.h:251
static bsl::string_view annotation()
Definition s_baltst_testattribute.h:216
static bdlat_AttributeInfo attributeInfo()
Definition s_baltst_testattribute.h:235
static int formattingMode()
Definition s_baltst_testattribute.h:225
@ k_FORMATTING_MODE
Definition s_baltst_testattribute.h:97
@ k_ID
Definition s_baltst_testattribute.h:97
static const char * k_NAME
Definition s_baltst_testattribute.h:95
static int id()
Definition s_baltst_testattribute.h:197
static bsl::string_view name()
Definition s_baltst_testattribute.h:206
Definition s_baltst_testattribute.h:140
TYPE Type
Definition s_baltst_testattribute.h:144
TEST_ATTRIBUTE Attribute
Definition s_baltst_testattribute.h:145
#define BSLS_IDENT(str)
BSLS_IDENT() - insert string into .comment binary segment (if supported)
Definition bsls_ident.h:238
Definition s_baltst_address.h:66
TestAttribute< TestAttribute_Data::k_ATTRIBUTE_2_ID, TestAttribute_Data::k_ATTRIBUTE_2_NAME, TestAttribute_Data::k_ATTRIBUTE_2_ANNOTATION, TestAttribute_Data::k_ATTRIBUTE_2_FORMATTING_MODE > TestAttribute2
Definition s_baltst_testattribute.h:182
TestAttribute< TestAttribute_Data::k_ATTRIBUTE_1_ID, TestAttribute_Data::k_ATTRIBUTE_1_NAME, TestAttribute_Data::k_ATTRIBUTE_1_ANNOTATION, TestAttribute_Data::k_ATTRIBUTE_1_FORMATTING_MODE > TestAttribute1
Definition s_baltst_testattribute.h:172
Definition bdlat_attributeinfo.h:139
Definition s_baltst_testattribute.h:69
@ k_DEFAULT_FORMATTING_MODE
Definition s_baltst_testattribute.h:74
static const char k_DEFAULT_ANNOTATION[1]
Definition s_baltst_testattribute.h:72
static const char k_DEFAULT_NAME[1]
Definition s_baltst_testattribute.h:73
Definition s_baltst_testattribute.h:152
static const int k_ATTRIBUTE_2_FORMATTING_MODE
Definition s_baltst_testattribute.h:161
static const char k_ATTRIBUTE_2_ANNOTATION[sizeof("")]
Definition s_baltst_testattribute.h:160
static const int k_ATTRIBUTE_1_ID
Definition s_baltst_testattribute.h:154
static const char k_ATTRIBUTE_2_NAME[sizeof("attr2")]
Definition s_baltst_testattribute.h:159
static const int k_ATTRIBUTE_2_ID
Definition s_baltst_testattribute.h:158
static const char k_ATTRIBUTE_1_NAME[sizeof("attr1")]
Definition s_baltst_testattribute.h:155
static const char k_ATTRIBUTE_1_ANNOTATION[sizeof("")]
Definition s_baltst_testattribute.h:156
static const int k_ATTRIBUTE_1_FORMATTING_MODE
Definition s_baltst_testattribute.h:157