15 #include <vsg/io/Options.h>
16 #include <vsg/io/Output.h>
31 std::ostream& indent()
33 _output.
write(_indentationString, std::min(_indentation, _maximumIndentation));
44 void _write(
size_t num,
const T* value)
48 _output <<
' ' << *value;
52 for (
size_t numInRow = 1; num > 0; --num, ++value, ++numInRow)
54 _output <<
' ' << *value;
56 if (numInRow == _maximumNumbersPerLine && num > 1)
67 void _write_real(
size_t num,
const T* value)
71 if (std::isfinite(*value))
72 _output <<
' ' << *value;
74 _output <<
' ' << 0.0;
78 for (
size_t numInRow = 1; num > 0; --num, ++value, ++numInRow)
80 if (std::isfinite(*value))
81 _output <<
' ' << *value;
83 _output <<
' ' << 0.0;
85 if (numInRow == _maximumNumbersPerLine && num > 1)
95 template<
typename R,
typename T>
96 void _write_withcast(
size_t num,
const T* value)
100 _output << ' ' << static_cast<R>(*value);
104 for (
size_t numInRow = 1; num > 0; --num, ++value, ++numInRow)
106 _output << ' ' << static_cast<R>(*value);
108 if (numInRow == _maximumNumbersPerLine && num > 1)
119 void write(
size_t num,
const int8_t* value)
override { _write_withcast<int16_t>(num, value); }
120 void write(
size_t num,
const uint8_t* value)
override { _write_withcast<uint16_t>(num, value); }
122 void write(
size_t num,
const int16_t* value)
override { _write(num, value); }
123 void write(
size_t num,
const uint16_t* value)
override { _write(num, value); }
124 void write(
size_t num,
const int32_t* value)
override { _write(num, value); }
125 void write(
size_t num,
const uint32_t* value)
override { _write(num, value); }
126 void write(
size_t num,
const int64_t* value)
override { _write(num, value); }
127 void write(
size_t num,
const uint64_t* value)
override { _write(num, value); }
128 void write(
size_t num,
const float* value)
override { _write_real(num, value); }
129 void write(
size_t num,
const double* value)
override { _write_real(num, value); }
131 void _write(
const std::string& str)
144 void write(
size_t num,
const std::string* value)
override;
145 void write(
size_t num,
const Path* value)
override;
151 std::ostream& _output;
153 std::size_t _indentationStep = 2;
154 std::size_t _indentation = 0;
155 std::size_t _maximumIndentation = 0;
156 std::size_t _maximumNumbersPerLine = 12;
158 const char* _indentationString =
" ";
Definition: AsciiOutput.h:27
void write(const vsg::Object *object) override
write object
void writeEndOfLine() override
write end of line as an
Definition: AsciiOutput.h:41
void writePropertyName(const char *propertyName) override
write property name if appropriate for format
void write(size_t num, const int8_t *value) override
write contiguous array of value(s)
Definition: AsciiOutput.h:119