9#ifndef INCLUDED_BSLFMT_TESTSPECIFICATIONGENERATOR
10#define INCLUDED_BSLFMT_TESTSPECIFICATIONGENERATOR
253#include <bslscm_version.h>
310 d_nextOption->setNextOption(
nextOption, allocator);
322 return d_nextOption->lastOption();
335 return d_nextOption.
get();
355 : d_isPresent_p(value)
368 *d_isPresent_p = !(*d_isPresent_p);
369 return *d_isPresent_p;
385template <
class t_TYPE>
411 bool *isPresentVariable,
412 t_TYPE *valueVariable,
415 : d_isPresent_p(isPresentVariable)
416 , d_value_p(valueVariable)
418 , d_values(values,
bslma::Default::allocator(basicAllocator))
421 *d_value_p = d_values[d_index];
437 if (*d_isPresent_p && d_values.
size() - 1 == d_index) {
440 *d_isPresent_p =
false;
442 *d_value_p = d_values[d_index];
445 else if (!*d_isPresent_p) {
448 *d_isPresent_p =
true;
454 *d_value_p = d_values[d_index];
475template <
class t_CHAR>
531 bool d_valueIdOptionIsPresent;
535 bool d_fillCharacterIsPresent;
539 char d_fillCharacter;
542 bool d_alignOptionIsPresent;
549 bool d_signOptionIsPresent;
556 bool d_hashOptionIsPresent;
561 bool d_zeroOptionIsPresent;
565 bool d_widthOptionIsPresent;
572 bool d_nestedWidthIsPresent;
579 bool d_precisionOptionIsPresent;
586 bool d_nestedPrecisionIsPresent;
594 bool d_localeOptionIsPresent;
598 bool d_typeOptionIsPresent;
636 void addOption(
Option *newOption);
639 void generateSpecification();
645 bool isAutoIndexingMode()
const;
649 bool isManualIndexingMode()
const;
694 void setup(
const char *instruction = 0);
798template <
class t_CHAR>
802 d_firstOption->setNextOption(newOption, d_allocator_p);
805 d_firstOption.load(newOption, d_allocator_p);
809template <
class t_CHAR>
810void TestSpecificationGenerator<t_CHAR>::generateSpecification()
813 const int maxIntValueLength = NFUtil::ToCharsMaxLength<int, 10>::k_VALUE;
816 d_formatSpec.clear();
818 if (d_fillCharacterIsPresent) {
819 d_spec.push_back(d_fillCharacter);
822 if (d_alignOptionIsPresent) {
823 switch (d_alignment) {
825 d_spec.push_back(
'<');
827 case e_ALIGN_MIDDLE: {
828 d_spec.push_back(
'^');
830 case e_ALIGN_RIGHT: {
831 d_spec.push_back(
'>');
839 if (d_signOptionIsPresent) {
841 case e_SIGN_POSITIVE: {
842 d_spec.push_back(
'+');
844 case e_SIGN_NEGATIVE: {
845 d_spec.push_back(
'-');
848 d_spec.push_back(
' ');
856 if (d_hashOptionIsPresent) {
857 d_spec.push_back(
'#');
860 if (d_zeroOptionIsPresent) {
861 d_spec.push_back(
'0');
864 if (d_widthOptionIsPresent && !d_nestedWidthIsPresent) {
865 char valueBuf[maxIntValueLength];
866 char *valueEnd = NFUtil::toChars(valueBuf,
867 valueBuf + maxIntValueLength,
869 d_spec.insert(d_spec.end(), valueBuf, valueEnd);
871 else if (d_nestedWidthIsPresent) {
872 switch (d_nestedWidthVariant) {
873 case e_NESTED_DEFAULT: {
874 d_spec.push_back(
'{');
875 d_spec.push_back(
'}');
877 case e_NESTED_ARG_1: {
878 d_spec.push_back(
'{');
879 d_spec.push_back(
'1');
880 d_spec.push_back(
'}');
882 case e_NESTED_ARG_2: {
883 d_spec.push_back(
'{');
884 d_spec.push_back(
'2');
885 d_spec.push_back(
'}');
890 if (d_precisionOptionIsPresent && !d_nestedPrecisionIsPresent) {
891 d_spec.push_back(
'.');
892 char valueBuf[maxIntValueLength];
893 char *valueEnd = NFUtil::toChars(valueBuf,
894 valueBuf + maxIntValueLength,
896 d_spec.insert(d_spec.end(), valueBuf, valueEnd);
898 else if (d_nestedPrecisionIsPresent) {
899 d_spec.push_back(
'.');
900 switch (d_nestedPrecisionVariant) {
901 case e_NESTED_DEFAULT: {
902 d_spec.push_back(
'{');
903 d_spec.push_back(
'}');
905 case e_NESTED_ARG_1: {
906 d_spec.push_back(
'{');
907 d_spec.push_back(
'1');
908 d_spec.push_back(
'}');
910 case e_NESTED_ARG_2: {
911 d_spec.push_back(
'{');
912 d_spec.push_back(
'2');
913 d_spec.push_back(
'}');
918 if (d_localeOptionIsPresent) {
919 d_spec.push_back(
'L');
921 if (d_typeOptionIsPresent) {
923 case e_TYPE_STRING: {
924 d_spec.push_back(
's');
926 case e_TYPE_ESCAPED: {
927 d_spec.push_back(
'?');
929 case e_TYPE_BINARY: {
930 d_spec.push_back(
'b');
932 case e_TYPE_BINARY_UC: {
933 d_spec.push_back(
'B');
935 case e_TYPE_CHARACTER: {
936 d_spec.push_back(
'c');
938 case e_TYPE_DECIMAL: {
939 d_spec.push_back(
'd');
942 d_spec.push_back(
'o');
944 case e_TYPE_INT_HEX: {
945 d_spec.push_back(
'x');
947 case e_TYPE_INT_HEX_UC: {
948 d_spec.push_back(
'X');
950 case e_TYPE_FLOAT_HEX: {
951 d_spec.push_back(
'a');
953 case e_TYPE_FLOAT_HEX_UC: {
954 d_spec.push_back(
'A');
956 case e_TYPE_SCIENTIFIC: {
957 d_spec.push_back(
'e');
959 case e_TYPE_SCIENTIFIC_UC: {
960 d_spec.push_back(
'E');
963 d_spec.push_back(
'f');
965 case e_TYPE_FIXED_UC: {
966 d_spec.push_back(
'F');
968 case e_TYPE_GENERAL: {
969 d_spec.push_back(
'g');
971 case e_TYPE_GENERAL_UC: {
972 d_spec.push_back(
'G');
974 case e_TYPE_POINTER: {
975 d_spec.push_back(
'p');
977 case e_TYPE_POINTER_UC: {
978 d_spec.push_back(
'P');
987 if (d_valueIdOptionIsPresent) {
988 d_formatSpec.push_back(
'{');
989 d_formatSpec.push_back(
'0');
990 d_formatSpec.push_back(
':');
993 d_formatSpec.push_back(
'{');
994 d_formatSpec.push_back(
':');
996 d_formatSpec.append(d_spec);
997 d_formatSpec.push_back(
'}');
1001template <
class t_CHAR>
1002bool TestSpecificationGenerator<t_CHAR>::isAutoIndexingMode()
const
1005 if (d_nestedWidthIsPresent && e_NESTED_DEFAULT != d_nestedWidthVariant) {
1008 else if (d_nestedPrecisionIsPresent && e_NESTED_DEFAULT !=
1009 d_nestedPrecisionVariant) {
1016template <
class t_CHAR>
1017bool TestSpecificationGenerator<t_CHAR>::isManualIndexingMode()
const
1019 bool result =
false;
1020 if (d_nestedWidthIsPresent) {
1021 if (e_NESTED_DEFAULT != d_nestedWidthVariant) {
1022 if (d_nestedPrecisionIsPresent) {
1023 if (e_NESTED_DEFAULT != d_nestedPrecisionVariant) {
1032 else if (d_nestedPrecisionIsPresent && e_NESTED_DEFAULT !=
1033 d_nestedPrecisionVariant) {
1040template <
class t_CHAR>
1043: d_valueIdOptionIsPresent(false)
1044, d_fillCharacterIsPresent(false)
1045, d_alignOptionIsPresent(false)
1046, d_signOptionIsPresent(false)
1047, d_hashOptionIsPresent(false)
1048, d_zeroOptionIsPresent(false)
1049, d_widthOptionIsPresent(false)
1050, d_nestedWidthIsPresent(false)
1051, d_precisionOptionIsPresent(false)
1052, d_nestedPrecisionIsPresent(false)
1053, d_localeOptionIsPresent(false)
1054, d_typeOptionIsPresent(false)
1055, d_type(e_TYPE_UNSPECIFIED)
1056, d_spec(basicAllocator)
1057, d_formatSpec(basicAllocator)
1058, d_fillCharacters(basicAllocator)
1059, d_widths(basicAllocator)
1060, d_precisions(basicAllocator)
1061, d_allocator_p(
bslma::Default::allocator(basicAllocator))
1064 const char defaultFillCharacters[] = {
'*',
'=' };
1065 const size_t numFillCharacters =
sizeof(defaultFillCharacters);
1066 const int defaultWidths[] = { 1, 5, 6, 10 };
1067 const size_t numWidths =
1068 sizeof(defaultWidths) /
sizeof(defaultWidths[0]);
1069 const int defaultPrecisions[] = { 0, 5, 6, 10 };
1070 const size_t numPrecisions =
1071 sizeof(defaultPrecisions) /
sizeof(defaultPrecisions[0]);
1073 defaultFillCharacters,
1074 defaultFillCharacters + numFillCharacters);
1077 defaultWidths + numWidths);
1080 defaultPrecisions + numPrecisions);
1084template <
class t_CHAR>
1087 d_fillCharacters.push_back(character);
1090template <
class t_CHAR>
1094 d_widths.push_back(width);
1097template <
class t_CHAR>
1101 d_precisions.push_back(precision);
1104template <
class t_CHAR>
1109 if (d_firstOption->nextState()) {
1110 generateSpecification();
1114 generateSpecification();
1118template <
class t_CHAR>
1123 bool rv = d_firstOption->nextState();
1124 while ( rv && !isStateValidForParse()) {
1126 rv = d_firstOption->nextState();
1128 generateSpecification();
1132 generateSpecification();
1136template <
class t_CHAR>
1141 bool rv = d_firstOption->nextState();
1142 while ( rv && !isStateValidForFormat()) {
1144 rv = d_firstOption->nextState();
1146 generateSpecification();
1150 generateSpecification();
1154template <
class t_CHAR>
1157 const char *defaultInstruction =
"F^+#0WP{}L";
1160 : defaultInstruction;
1161 bool typeIsSpecified =
false;
1162 bool widthIsAdded =
false;
1163 bool precisionIsAdded =
false;
1165 (void) typeIsSpecified;
1168 it != instructionStr.
end();
1174 &d_valueIdOptionIsPresent));
1177 addOption(
new (*d_allocator_p)
1179 &d_fillCharacterIsPresent,
1190 addOption(
new (*d_allocator_p)
1192 &d_alignOptionIsPresent,
1202 addOption(
new (*d_allocator_p)
1204 &d_signOptionIsPresent,
1211 &d_hashOptionIsPresent));
1216 &d_zeroOptionIsPresent));
1219 if (!widthIsAdded) {
1220 addOption(
new (*d_allocator_p)
1222 &d_widthOptionIsPresent,
1225 widthIsAdded =
true;
1229 if (!precisionIsAdded) {
1230 addOption(
new (*d_allocator_p)
1232 &d_precisionOptionIsPresent,
1235 precisionIsAdded =
true;
1239 if (!widthIsAdded) {
1240 addOption(
new (*d_allocator_p)
1242 &d_widthOptionIsPresent,
1245 widthIsAdded =
true;
1249 nestedVector.
push_back(e_NESTED_DEFAULT);
1254 new (*d_allocator_p)
1256 &d_nestedWidthIsPresent,
1257 &d_nestedWidthVariant,
1261 if (!precisionIsAdded) {
1262 addOption(
new (*d_allocator_p)
1264 &d_precisionOptionIsPresent,
1267 precisionIsAdded =
true;
1271 nestedVector.
push_back(e_NESTED_DEFAULT);
1276 new (*d_allocator_p)
1278 &d_nestedPrecisionIsPresent,
1279 &d_nestedPrecisionVariant,
1285 &d_localeOptionIsPresent));
1290 typeIsSpecified =
true;
1298 addOption(
new (*d_allocator_p)
1300 &d_typeOptionIsPresent,
1307 typeIsSpecified =
true;
1316 typeVector.
push_back(e_TYPE_INT_HEX_UC);
1318 addOption(
new (*d_allocator_p)
1320 &d_typeOptionIsPresent,
1327 typeIsSpecified =
true;
1337 typeVector.
push_back(e_TYPE_INT_HEX_UC);
1339 addOption(
new (*d_allocator_p)
1341 &d_typeOptionIsPresent,
1348 typeIsSpecified =
true;
1357 typeVector.
push_back(e_TYPE_INT_HEX_UC);
1359 addOption(
new (*d_allocator_p)
1361 &d_typeOptionIsPresent,
1368 typeIsSpecified =
true;
1372 typeVector.
push_back(e_TYPE_FLOAT_HEX_UC);
1373 typeVector.
push_back(e_TYPE_SCIENTIFIC);
1374 typeVector.
push_back(e_TYPE_SCIENTIFIC_UC);
1378 typeVector.
push_back(e_TYPE_GENERAL_UC);
1380 addOption(
new (*d_allocator_p)
1382 &d_typeOptionIsPresent,
1389 typeIsSpecified =
true;
1393 typeVector.
push_back(e_TYPE_POINTER_UC);
1395 addOption(
new (*d_allocator_p)
1397 &d_typeOptionIsPresent,
1404 typeIsSpecified =
true;
1414 typeVector.
push_back(e_TYPE_INT_HEX_UC);
1416 typeVector.
push_back(e_TYPE_FLOAT_HEX_UC);
1417 typeVector.
push_back(e_TYPE_SCIENTIFIC);
1418 typeVector.
push_back(e_TYPE_SCIENTIFIC_UC);
1422 typeVector.
push_back(e_TYPE_GENERAL_UC);
1424 typeVector.
push_back(e_TYPE_POINTER_UC);
1426 addOption(
new (*d_allocator_p)
1428 &d_typeOptionIsPresent,
1438 generateSpecification();
1442template <
class t_CHAR>
1449template <
class t_CHAR>
1453 return d_formatSpec;
1456template <
class t_CHAR>
1461 bool invalidSignOrHash = d_typeOptionIsPresent &&
1462 (d_signOptionIsPresent || d_hashOptionIsPresent) &&
1463 (e_TYPE_STRING == d_type ||
1464 e_TYPE_ESCAPED == d_type ||
1465 e_TYPE_CHARACTER == d_type ||
1466 e_TYPE_POINTER == d_type ||
1467 e_TYPE_POINTER_UC == d_type);
1471 bool invalidZero = d_typeOptionIsPresent && d_zeroOptionIsPresent &&
1472 (e_TYPE_STRING == d_type ||
1473 e_TYPE_ESCAPED == d_type ||
1474 e_TYPE_CHARACTER == d_type);
1478 bool invalidTypeForPrecision =
1479 (d_precisionOptionIsPresent || d_nestedPrecisionIsPresent) &&
1480 (e_TYPE_BINARY == d_type ||
1481 e_TYPE_BINARY_UC == d_type ||
1482 e_TYPE_CHARACTER == d_type ||
1483 e_TYPE_DECIMAL == d_type ||
1484 e_TYPE_OCTAL == d_type ||
1485 e_TYPE_INT_HEX == d_type ||
1486 e_TYPE_INT_HEX_UC == d_type ||
1487 e_TYPE_POINTER == d_type ||
1488 e_TYPE_POINTER_UC == d_type);
1491 bool missedAlignOption = d_fillCharacterIsPresent &&
1492 !d_alignOptionIsPresent;
1496 bool conflictingIndexingStyle = !isAutoIndexingMode() &&
1497 !isManualIndexingMode();
1499 return !(invalidSignOrHash ||
1501 invalidTypeForPrecision ||
1502 missedAlignOption ||
1503 conflictingIndexingStyle);
1506template <
class t_CHAR>
1510 bool conflictingIndexingStyle =
1511 (d_nestedWidthIsPresent || d_nestedPrecisionIsPresent) &&
1512 ((d_valueIdOptionIsPresent && isAutoIndexingMode()) ||
1513 (!d_valueIdOptionIsPresent && isManualIndexingMode()));
1515 return isStateValidForParse() && !conflictingIndexingStyle;
1518template <
class t_CHAR>
1521 return d_valueIdOptionIsPresent;
1524template <
class t_CHAR>
1527 return d_fillCharacterIsPresent;
1530template <
class t_CHAR>
1534 return d_fillCharacter;
1537template <
class t_CHAR>
1540 return d_alignOptionIsPresent;
1543template <
class t_CHAR>
1551template <
class t_CHAR>
1554 return d_signOptionIsPresent;
1557template <
class t_CHAR>
1565template <
class t_CHAR>
1568 return d_hashOptionIsPresent;
1571template <
class t_CHAR>
1574 return d_zeroOptionIsPresent;
1577template <
class t_CHAR>
1580 return d_widthOptionIsPresent;
1583template <
class t_CHAR>
1589template <
class t_CHAR>
1592 return d_nestedWidthIsPresent;
1595template <
class t_CHAR>
1599 return d_nestedWidthVariant;
1602template <
class t_CHAR>
1605 return d_precisionOptionIsPresent;
1608template <
class t_CHAR>
1614template <
class t_CHAR>
1617 return d_nestedPrecisionIsPresent;
1620template <
class t_CHAR>
1624 return d_nestedPrecisionVariant;
1627template <
class t_CHAR>
1630 return d_localeOptionIsPresent;
1633template <
class t_CHAR>
1636 return d_typeOptionIsPresent;
1639template <
class t_CHAR>
Definition bslstl_string.h:1252
iterator end() BSLS_KEYWORD_NOEXCEPT
Return the past-the-end iterator for this modifiable string.
Definition bslstl_string.h:6065
void swap(basic_string &other) BSLS_KEYWORD_NOEXCEPT_SPECIFICATION(AllocatorTraits const_iterator begin() const BSLS_KEYWORD_NOEXCEPT
Definition bslstl_string.h:2792
const CHAR_TYPE * const_iterator
Definition bslstl_string.h:1282
size_type size() const BSLS_KEYWORD_NOEXCEPT
Return the number of elements in this vector.
Definition bslstl_vector.h:3019
iterator begin() BSLS_KEYWORD_NOEXCEPT
Definition bslstl_vector.h:2866
bool empty() const BSLS_KEYWORD_NOEXCEPT
Return true if this vector has size 0, and false otherwise.
Definition bslstl_vector.h:3034
Definition bslstl_vector.h:1120
iterator insert(const_iterator position, const VALUE_TYPE &value)
Definition bslstl_vector.h:4386
void push_back(const VALUE_TYPE &value)
Definition bslstl_vector.h:4343
Definition bslfmt_testspecificationgenerator.h:346
~TestSpecificationGenerator_BoolOption()
Destroy this object.
Definition bslfmt_testspecificationgenerator.h:359
bool nextState()
Switch the state of this object to the next one.
Definition bslfmt_testspecificationgenerator.h:365
TestSpecificationGenerator_BoolOption(bool *value)
Create an object that displays its state through the specified value.
Definition bslfmt_testspecificationgenerator.h:354
Definition bslfmt_testspecificationgenerator.h:280
void setNextOption(TestSpecificationGenerator_Option *nextOption, bslma::Allocator *allocator)
Definition bslfmt_testspecificationgenerator.h:306
virtual bool nextState()=0
Switch the state of this object to the next one.
TestSpecificationGenerator_Option * nextOption() const
Definition bslfmt_testspecificationgenerator.h:333
TestSpecificationGenerator_Option * lastOption()
Definition bslfmt_testspecificationgenerator.h:319
TestSpecificationGenerator_Option()
Create an object, having no successor in the list of generator options.
Definition bslfmt_testspecificationgenerator.h:291
virtual ~TestSpecificationGenerator_Option()
Destroy this object.
Definition bslfmt_testspecificationgenerator.h:296
Definition bslfmt_testspecificationgenerator.h:387
TestSpecificationGenerator_TypedOption(bool *isPresentVariable, t_TYPE *valueVariable, const bsl::vector< t_TYPE > &values, bslma::Allocator *basicAllocator=0)
Definition bslfmt_testspecificationgenerator.h:410
bool nextState()
Switch the state of this object to the next one.
Definition bslfmt_testspecificationgenerator.h:431
~TestSpecificationGenerator_TypedOption()
Destroy this object.
Definition bslfmt_testspecificationgenerator.h:425
BSLMF_NESTED_TRAIT_DECLARATION(TestSpecificationGenerator_TypedOption, bslma::UsesBslmaAllocator)
Definition bslfmt_testspecificationgenerator.h:476
char fillCharacter() const
Return the current fill character.
Definition bslfmt_testspecificationgenerator.h:1531
Alignment
Definition bslfmt_testspecificationgenerator.h:480
@ e_ALIGN_LEFT
Definition bslfmt_testspecificationgenerator.h:482
@ e_ALIGN_DEFAULT
Definition bslfmt_testspecificationgenerator.h:481
@ e_ALIGN_MIDDLE
Definition bslfmt_testspecificationgenerator.h:483
@ e_ALIGN_RIGHT
Definition bslfmt_testspecificationgenerator.h:484
BSLMF_NESTED_TRAIT_DECLARATION(TestSpecificationGenerator, bslma::UsesBslmaAllocator)
bool isWidthOptionPresent() const
Definition bslfmt_testspecificationgenerator.h:1578
bool isLocaleOptionPresent() const
Definition bslfmt_testspecificationgenerator.h:1628
bool isHashOptionPresent() const
Definition bslfmt_testspecificationgenerator.h:1566
int width() const
Return the current width value.
Definition bslfmt_testspecificationgenerator.h:1584
bool nextValidForParse()
Definition bslfmt_testspecificationgenerator.h:1119
Sign
Definition bslfmt_testspecificationgenerator.h:487
@ e_SIGN_POSITIVE
Definition bslfmt_testspecificationgenerator.h:489
@ e_SIGN_DEFAULT
Definition bslfmt_testspecificationgenerator.h:488
@ e_SIGN_NEGATIVE
Definition bslfmt_testspecificationgenerator.h:490
@ e_SIGN_SPACE
Definition bslfmt_testspecificationgenerator.h:491
bool isNestedWidthPresent() const
Definition bslfmt_testspecificationgenerator.h:1590
const bsl::basic_string< t_CHAR > & formatSpec() const
Definition bslfmt_testspecificationgenerator.h:1451
bool isValueIdOptionPresent() const
Definition bslfmt_testspecificationgenerator.h:1519
bool isPrecisionOptionPresent() const
Definition bslfmt_testspecificationgenerator.h:1603
void addPrecision(int precision)
Definition bslfmt_testspecificationgenerator.h:1098
Alignment alignment() const
Return the current alignment type.
Definition bslfmt_testspecificationgenerator.h:1545
bool isNestedPrecisionPresent() const
Definition bslfmt_testspecificationgenerator.h:1615
void addFillCharacter(char character)
Definition bslfmt_testspecificationgenerator.h:1085
NestedVariant nestedPrecisionVariant() const
Return the current nested precision variant.
Definition bslfmt_testspecificationgenerator.h:1622
NestedVariant
Definition bslfmt_testspecificationgenerator.h:494
@ e_NESTED_DEFAULT
Definition bslfmt_testspecificationgenerator.h:495
@ e_NESTED_ARG_2
Definition bslfmt_testspecificationgenerator.h:497
@ e_NESTED_ARG_1
Definition bslfmt_testspecificationgenerator.h:496
int precision() const
Return the current precision value.
Definition bslfmt_testspecificationgenerator.h:1609
FormatType type() const
Return the current presentation type value.
Definition bslfmt_testspecificationgenerator.h:1641
bool isTypeOptionPresent() const
Definition bslfmt_testspecificationgenerator.h:1634
bool isStateValidForParse() const
Definition bslfmt_testspecificationgenerator.h:1457
Sign sign() const
Return the current sign option value.
Definition bslfmt_testspecificationgenerator.h:1559
const bsl::basic_string< t_CHAR > & spec() const
Definition bslfmt_testspecificationgenerator.h:1444
FormatType
Definition bslfmt_testspecificationgenerator.h:500
@ e_TYPE_POINTER_UC
Definition bslfmt_testspecificationgenerator.h:520
@ e_TYPE_UNSPECIFIED
Definition bslfmt_testspecificationgenerator.h:501
@ e_TYPE_DECIMAL
Definition bslfmt_testspecificationgenerator.h:507
@ e_TYPE_STRING
Definition bslfmt_testspecificationgenerator.h:502
@ e_TYPE_FLOAT_HEX
Definition bslfmt_testspecificationgenerator.h:511
@ e_TYPE_ESCAPED
Definition bslfmt_testspecificationgenerator.h:503
@ e_TYPE_FIXED_UC
Definition bslfmt_testspecificationgenerator.h:516
@ e_TYPE_OCTAL
Definition bslfmt_testspecificationgenerator.h:508
@ e_TYPE_FLOAT_HEX_UC
Definition bslfmt_testspecificationgenerator.h:512
@ e_TYPE_CHARACTER
Definition bslfmt_testspecificationgenerator.h:506
@ e_TYPE_INT_HEX
Definition bslfmt_testspecificationgenerator.h:509
@ e_TYPE_INT_HEX_UC
Definition bslfmt_testspecificationgenerator.h:510
@ e_TYPE_SCIENTIFIC
Definition bslfmt_testspecificationgenerator.h:513
@ e_TYPE_GENERAL
Definition bslfmt_testspecificationgenerator.h:517
@ e_TYPE_BINARY
Definition bslfmt_testspecificationgenerator.h:504
@ e_TYPE_FIXED
Definition bslfmt_testspecificationgenerator.h:515
@ e_TYPE_POINTER
Definition bslfmt_testspecificationgenerator.h:519
@ e_TYPE_BINARY_UC
Definition bslfmt_testspecificationgenerator.h:505
@ e_TYPE_GENERAL_UC
Definition bslfmt_testspecificationgenerator.h:518
@ e_TYPE_SCIENTIFIC_UC
Definition bslfmt_testspecificationgenerator.h:514
bool nextValidForFormat()
Definition bslfmt_testspecificationgenerator.h:1137
void addWidth(int width)
Definition bslfmt_testspecificationgenerator.h:1091
bool isStateValidForFormat() const
Definition bslfmt_testspecificationgenerator.h:1507
bool next()
Definition bslfmt_testspecificationgenerator.h:1105
bool isSignOptionPresent() const
Definition bslfmt_testspecificationgenerator.h:1552
NestedVariant nestedWidthVariant() const
Return the current nested width variant.
Definition bslfmt_testspecificationgenerator.h:1597
bool isAlignOptionPresent() const
Definition bslfmt_testspecificationgenerator.h:1538
bool isZeroOptionPresent() const
Definition bslfmt_testspecificationgenerator.h:1572
TestSpecificationGenerator(bslma::Allocator *basicAllocator=0)
Definition bslfmt_testspecificationgenerator.h:1041
bool isFillCharacterPresent() const
Definition bslfmt_testspecificationgenerator.h:1525
void setup(const char *instruction=0)
Definition bslfmt_testspecificationgenerator.h:1155
Definition bslma_allocator.h:545
Definition bslma_managedptr.h:1173
TARGET_TYPE * get() const
Definition bslma_managedptr.h:2596
#define BSLS_ASSERT(X)
Definition bsls_assert.h:1976
#define BSLS_ASSERT_INVOKE(X)
Definition bsls_assert.h:2084
#define BSLS_IDENT(str)
BSLS_IDENT() - insert string into .comment binary segment (if supported)
Definition bsls_ident.h:238
Definition bslfmt_enablestreamedformatter.h:130
Definition baljsn_encoder_testtypes.h:76
Definition bslma_usesbslmaallocator.h:344