Go to the documentation of this file. 1 #ifndef _OME_OUTPUT_ON_STREAM_H_
2 #define _OME_OUTPUT_ON_STREAM_H_ "$Id: OMEoutputOnStream.h 312 2020-03-21 21:25:35Z geoff $"
16 template <
typename STREAMTYPE>
23 for (int_fast16_t count = 0; count < indent; ++count) {
26 outputStream <<
"{\n";
30 int_fast16_t newIndent = indent < 0 ? -indent : indent;
32 for (SparseArrayType_t::const_iterator i =
sparseArray.begin();
34 for (int_fast16_t count = 0; count < newIndent; ++count) {
37 outputStream <<
"[" << i->first <<
"] = ";
38 i->second->outputOnStream(outputStream, -(newIndent + 1), includeTypePrefix);
42 for (int_fast16_t count = 0; count < newIndent; ++count) {
47 outputStream <<
"}\n";
51 return (outputStream);
54 template <
typename STREAMTYPE>
57 outputStream <<
"[\"" << *
key <<
"\"] = ";
59 return (outputStream);
62 template <
typename STREAMTYPE>
69 for (int_fast16_t count = 0; count < indent; ++count) {
72 outputStream <<
"{\n";
76 int_fast16_t newIndent = (indent < 0) ? -indent : indent;
78 AssocArrayType_t::const_iterator i =
assocArray.begin();
80 for (int_fast16_t count = 0; count < newIndent; ++count) {
83 i->second->outputOnStream(outputStream, -newIndent - 1, includeTypePrefix);
88 for (int_fast16_t count = 0; count < newIndent; ++count) {
92 outputStream <<
"}\n";
96 return (outputStream);
100 uint8_t includeTypePrefix,
const OMEstring *lang)
const
102 const char *fieldModifier;
103 int fieldModifierLen;
113 for (int_fast16_t count = 0; count < indent; ++count) {
118 outputStream <<
"[NLM NULL]";
119 return (outputStream);
124 outputStream << messProto;
125 return (outputStream);
128 const char *cp =
static_cast<const char *
>(messProto);
129 const char *lastChar = cp + messProto.
length();
130 for (state = NORMAL; cp != lastChar; cp++) {
136 else if (*cp ==
'$') {
147 outputStream <<
'\t';
150 outputStream <<
'\n';
153 outputStream <<
'\r';
161 if ((*cp >=
'0') && (*cp <=
'9')) {
163 state = SAW_FIELD_NUM;
165 fieldModifierLen = 0;
167 else if (*cp ==
'%') {
168 state = SAW_FIELD_MODIFIER;
172 outputStream <<
'$' << *cp;
176 case SAW_FIELD_MODIFIER:
177 if ((*cp >=
'0') && (*cp <=
'9')) {
178 fieldModifierLen = cp - fieldModifier;
180 state = SAW_FIELD_NUM;
184 if ((*cp >=
'0') && (*cp <=
'9')) {
193 const OMEtype &data = args[sum];
197 data, anno, fieldModifier,
204 std::cerr <<
"NLM format: ILLEGAL state\n";
208 if (state == SAW_FIELD_NUM) {
213 const OMEtype &data = args[sum];
217 data, anno, fieldModifier,
220 return (outputStream);
224 const class OMEbaseType &data,
225 const class OMEbaseType &annotation,
226 const char *fieldModifier,
int modifierLen)
230 return (outputStream);
235 int_fast16_t indent,
bool fullInfo)
const
237 o <<
"OID INTERNAL REFEFENCES NOT SUPPORTED IN EXTERNAL LIBRARIES\n";
244 int_fast16_t indent,
bool fullInfo)
const
248 outputStream <<
"EXT ACL=" <<
acl <<
"\n";
250 return (outputStream);
254 int_fast16_t indent,
bool fullInfo)
const
257 case OMErefType::internal: {
262 case OMErefType::external: {
270 return (outputStream);
273 template <
typename STREAMTYPE>
inline STREAMTYPE &
OMEsetStorage::outputOnStream(STREAMTYPE &outputStream, int_fast16_t indent, uint8_t includeTypePrefix)
const
280 for (int_fast16_t count = 0; count < indent; ++count) {
283 outputStream <<
"{\n";
285 outputStream <<
"{ ";
288 int_fast16_t newIndent = (indent < 0) ? -indent : indent;
289 bool notFirst =
false;
290 for (
_STD deque<OMEbaseTypeP>::const_iterator i =
dataSet.begin();
292 if (notFirst ==
false) {
295 outputStream <<
", ";
298 (*i)->outputOnStream(outputStream, newIndent + 1, includeTypePrefix);
301 for (int_fast16_t count = 0; count < newIndent; ++count) {
304 outputStream <<
"}\n";
308 return (outputStream);
311 template <
typename STREAMTYPE>
inline STREAMTYPE &OMEbaseType::outputOnStream(STREAMTYPE &outputStream, int_fast16_t indent,
312 uint8_t includeTypePrefix)
const
317 for (int_fast16_t i = 0; i < indent; ++i) {
321 int_fast16_t negIndent = (indent < 0) ? indent : -indent;
323 if (includeTypePrefix & OUTPUT_TYPENAME) {
324 outputStream << typeName() <<
" ";
328 if ((includeTypePrefix & OUTPUT_TYPENAME) == 0) {
329 outputStream <<
"nil";
331 if (includeTypePrefix & OUTPUT_NEWLINE) {
332 outputStream <<
"\n";
336 outputStream <<
int_to_ascii(workBfr,
sizeof(workBfr), value.i);
337 if (includeTypePrefix & OUTPUT_NEWLINE) {
338 outputStream <<
"\n";
344 outputStream <<
uint_to_ascii(workBfr,
sizeof(workBfr), value.ui);
345 if (includeTypePrefix & OUTPUT_NEWLINE) {
346 outputStream <<
"\n";
351 outputStream <<
float_to_ascii((
char *) workBfr,
sizeof(workBfr), value.f);
352 if (includeTypePrefix & OUTPUT_NEWLINE) {
353 outputStream <<
"\n";
359 if (includeTypePrefix & OUTPUT_NEWLINE) {
360 outputStream <<
"\n";
365 if (includeTypePrefix & OUTPUT_NEWLINE) {
366 outputStream <<
"\n";
371 if (includeTypePrefix & OUTPUT_NEWLINE) {
372 outputStream <<
"\n";
376 value.oid->outputOnStream(outputStream, 0);
377 if (includeTypePrefix & OUTPUT_NEWLINE) {
378 outputStream <<
"\n";
382 value.s->outputOnStream(outputStream, 0, includeTypePrefix);
383 if (includeTypePrefix & OUTPUT_NEWLINE) {
384 outputStream <<
"\n";
388 value.array->outputOnStream(outputStream, negIndent, includeTypePrefix);
391 value.assoc->outputOnStream(outputStream, negIndent, includeTypePrefix);
394 value.set->outputOnStream(outputStream, negIndent, includeTypePrefix);
397 if (includeTypePrefix & OUTPUT_TYPENAME) {
398 outputStream <<
"-> ";
400 value.pointer->outputOnStream(outputStream, negIndent, includeTypePrefix);
403 if ((includeTypePrefix & DISABLE_QUOTE_OUTPUT) == 0) {
404 outputStream <<
"\"";
406 value.nlm->outputOnStream(outputStream, 0, includeTypePrefix);
407 if ((includeTypePrefix & DISABLE_QUOTE_OUTPUT) == 0) {
408 outputStream <<
"\"";
410 if (includeTypePrefix & OUTPUT_NEWLINE) {
411 outputStream <<
"\n";
415 value.fixed->outputOnStream(outputStream, 0);
416 if (includeTypePrefix & OUTPUT_NEWLINE) {
417 outputStream <<
"\n";
421 outputStream <<
"UnsupportedType(" << type <<
")";
422 if (includeTypePrefix & OUTPUT_NEWLINE) {
423 outputStream <<
"\n";
427 return (outputStream);
430 template <
typename STREAMTYPE>
inline STREAMTYPE &
operator<<(STREAMTYPE &outputStream,
const OMEbaseType &data)
444 data.outputOnStream(outputStream, 0, mode);
445 return (outputStream);
#define OME_EXT_TYPE(member)
Definition: OMEbaseType.h:19
@ OME_NLM
Definition: OMEmanifests.h:90
@ OME_FLOAT
Definition: OMEmanifests.h:82
@ OME_DISABLE_QUOTE_OUTPUT
Definition: OMEmanifests.h:110
class OMEoidStorageBase * storageRef
Definition: OMEoid.h:128
@ OME_POINTER
Definition: OMEmanifests.h:92
@ OME_UINT16
Definition: OMEmanifests.h:98
STREAMTYPE & outputOnStream(STREAMTYPE &outputOnStream, int_fast16_t indent=0, uint8_t includeTypePrefix=OME_DEFAULT_COMPLEX_OUTPUT_MODE) const
Definition: OMEoutputOnStream.h:63
STREAMTYPE & outputOnStream(STREAMTYPE &outputStream, int_fast16_t indent=0, uint8_t includeTypePrefix=OME_DEFAULT_COMPLEX_OUTPUT_MODE, const OMEstring *lang=nullptr) const
Definition: OMEoutputOnStream.h:99
Implements text and binary string storage.
Definition: OMEstring.h:305
OMEoidID oidData
Definition: OMEoid.h:421
OMEnlmStorage * data
Definition: OMErefCount.h:82
Fundamental ANY type for FARGOS/VISTA Object Management Environment.
Definition: OMEbaseType.h:250
@ OME_DOUBLE
Definition: OMEmanifests.h:83
class OMEnlmData * messageData
Definition: OMEnlm.h:28
@ OME_UINT32
Definition: OMEmanifests.h:96
STREAMTYPE & outputOnStream(STREAMTYPE &outputStream, int_fast16_t indent=0, bool fullInfo=false) const
Definition: OMEoidIntStub2.cpp:10
class OMEstring * key
Definition: OMEassoc.h:27
STREAMTYPE & outputOnStream(STREAMTYPE &outputOnStream, int_fast16_t indent=0, uint8_t includeTypePrefix=OME_DEFAULT_COMPLEX_OUTPUT_MODE) const
Definition: OMEoutputOnStream.h:55
@ OME_STRING
Definition: OMEmanifests.h:85
@ OME_OUTPUT_NEWLINE
Definition: OMEmanifests.h:111
OMEassoc acl
Definition: OMEoid.h:50
@ OME_NIL
Definition: OMEmanifests.h:78
static STREAMTYPE & outputFormattedData(STREAMTYPE &o, const class OMEtype &data, const class OMEtype &annotation, const char *fieldModifier, int modifierLen)
Definition: OMEoutputOnStream.h:223
@ OME_OID
Definition: OMEmanifests.h:84
STREAMTYPE & outputOnStream(STREAMTYPE &outputStream, int_fast16_t indent=0, uint8_t includeTypePrefix=OME_DEFAULT_COMPLEX_OUTPUT_MODE) const
Definition: OMEoutputOnStream.h:273
Extreme-performance text/number conversion routines.
STREAMTYPE & operator<<(STREAMTYPE &outputStream, const OMEtype &data)
Definition: OMEoutputOnStream.h:430
@ OME_UINT64
Definition: OMEmanifests.h:97
Interface to an internal OME object.
Definition: OMEoid.h:324
char * float_to_ascii(char *resultBfr, uint_fast8_t bfrLen, double value, uint_fast8_t *retStrLen, int_fast8_t outputPrecision, bool roundValue)
Format a double-precision value with indicated decimal places.
Definition: text2int.cpp:2808
class OMEtype * value
Definition: OMEassoc.h:28
char * int_to_ascii(uint32_t resultBfr[], uint_fast8_t bfrLen, int64_t value, uint_fast8_t *retStrLen)
Identical to uint_to_ascii(), except that negative values are accepted.
Definition: text2int.cpp:2699
STREAMTYPE & outputOnStream(STREAMTYPE &outputStream, int_fast16_t indent=0, bool fullInfo=false) const
Definition: OMEoutputOnStream.h:253
size_t length() const
Definition: OMEstring.h:401
OMEarray argumentInfo
Definition: OMEnlm.h:30
@ OME_FORCE_QUOTES_IN_CONTAINER_OUTPUT
Definition: OMEmanifests.h:112
OMEarray messageArguments
Definition: OMEnlm.h:29
AssocArrayType_t assocArray
Definition: OMEassoc.h:63
@ OME_SET
Definition: OMEmanifests.h:89
bool isEmpty() const OME_ALWAYS_INLINE
Definition: OMEarray.h:252
_STD deque< OMEbaseTypeP > dataSet
Definition: OMEset.h:26
STREAMTYPE & outputOnStream(STREAMTYPE &outputOnStream, int_fast16_t indent=0, uint8_t includeTypePrefix=OUTPUT_TYPENAME) const
Definition: OMEoutputOnStream.h:311
@ OME_UINT8
Definition: OMEmanifests.h:99
STREAMTYPE & outputOnStream(STREAMTYPE &outputStream, int_fast16_t indent=0, bool fullInfo=false) const
Definition: OMEoutputOnStream.h:243
@ OME_FIXED
Definition: OMEmanifests.h:91
#define _STD
Definition: OMEmanifests.h:146
Implements sparse array of OMEtype elements.
Definition: OMEarray.h:75
STREAMTYPE & outputOnStream(STREAMTYPE &outputStream, int_fast16_t indent=0, uint8_t includeTypePrefix=OME_DEFAULT_COMPLEX_OUTPUT_MODE) const
Definition: OMEoutputOnStream.h:17
@ OME_DEFAULT_COMPLEX_OUTPUT_MODE
Definition: OMEmanifests.h:116
Interface to an external OME object.
Definition: OMEoid.h:415
char * uint_to_ascii(uint32_t resultBfr[], uint_fast8_t bfrLen, uint64_t value, uint_fast8_t *retStrLen)
Quickly convert a binary integer into ASCII decimal text.
Definition: text2int.cpp:2628
@ OME_ARRAY
Definition: OMEmanifests.h:86
@ OME_ASSOC
Definition: OMEmanifests.h:87
OMErefType referenceType
Definition: OMEoid.h:134
@ OME_DEFAULT_OUTPUT_MODE
Definition: OMEmanifests.h:115
const OMEstring & getMessageText(const OMEstring *lang=nullptr) const
Definition: OMEnlm.cpp:41
SparseArrayType_t sparseArray
Definition: OMEarray.h:32
@ OME_INT32
Definition: OMEmanifests.h:79
@ OME_INT64
Definition: OMEmanifests.h:81