34#ifndef SOMAIO_WRITER_PYTHONWRITER_D_H
35#define SOMAIO_WRITER_PYTHONWRITER_D_H
52 const T & x = obj.GenericObject::value<T>();
53 soma::AsciiDataSourceTraits<T>::write( ds, x );
63 const char & x = obj.GenericObject::value<
char>();
64 soma::AsciiDataSourceTraits<int>::write( ds, x );
70 soma::PythonWriter & w,
int,
bool )
74 const unsigned char & x = obj.GenericObject::value<
unsigned char>();
75 soma::AsciiDataSourceTraits<unsigned>::write( ds, x );
81 soma::PythonWriter & w,
int,
bool )
89 soma::PythonWriter & w,
int,
bool )
92 soma::AsciiDataSourceTraits<double>::write( ds, obj.
getScalar() );
98 soma::PythonWriter & w,
int,
bool )
101 soma::AsciiDataSourceTraits<float>::write( ds,
float( obj.
getScalar() ) );
107 soma::PythonWriter & w,
int,
bool )
110 soma::AsciiDataSourceTraits<int16_t>::write(
117 soma::PythonWriter & w,
int,
bool )
120 soma::AsciiDataSourceTraits<uint16_t>::write(
127 soma::PythonWriter & w,
int,
bool )
130 soma::AsciiDataSourceTraits<int32_t>::write(
137 soma::PythonWriter & w,
int,
bool )
140 soma::AsciiDataSourceTraits<uint32_t>::write(
147 bool writeInternals )
152 const std::map<T, carto::Object>
153 & x = obj.GenericObject::value<std::map<T, carto::Object> >();
154 typename std::map<T, carto::Object>::const_iterator im, em = x.end();
155 bool first =
true, hassyntax =
false;
156 std::string ind, ind2;
164 for( i=0; i<indent-1; ++i )
174 soma::AsciiDataSourceTraits<std::string>::write( ds, ind );
191 synt = sx->GenericObject::value<std::string>();
202 soma::AsciiDataSourceTraits<std::string>::write( ds,
"'__syntax__' : " );
207 for( im=x.begin(); im!=em; ++im )
215 soma::AsciiDataSourceTraits<std::string>::write( ds, ind );
219 w.
write( key, indent,
"",
"", writeInternals );
220 soma::AsciiDataSourceTraits<std::string>::write( ds,
" : " );
221 w.
write( im->second, indent,
"",
"", writeInternals );
224 soma::AsciiDataSourceTraits<std::string>::write( ds, ind );
231 soma::PythonWriter & w,
232 int indent,
bool writeInternals )
241 bool first =
true, hassyntax =
false;
242 std::string ind, ind2;
250 for( i=0; i<indent-1; ++i )
260 soma::AsciiDataSourceTraits<std::string>::write( ds, ind );
276 synt = sx->GenericObject::value<std::string>();
287 soma::AsciiDataSourceTraits<std::string>::write( ds,
"'__syntax__' : " );
294 while( im->isValid() )
299 if( ( writeInternals || !w.
isInternal(
"", key ) )
300 && ( key !=
"__syntax__" || !hassyntax ) )
308 soma::AsciiDataSourceTraits<std::string>::write( ds, ind );
311 soma::AsciiDataSourceTraits<std::string>::write( ds,
" : " );
312 w.
write( im->currentValue(), indent,
"", key, writeInternals );
319 long key = im->intKey();
326 soma::AsciiDataSourceTraits<std::string>::write( ds, ind );
328 soma::AsciiDataSourceTraits<long>::write( ds, key );
329 soma::AsciiDataSourceTraits<std::string>::write( ds,
" : " );
330 w.
write( *im->currentValue(), indent,
"",
"", writeInternals );
341 soma::AsciiDataSourceTraits<std::string>::write( ds, ind );
343 w.
write( key, indent,
"",
"", writeInternals );
344 soma::AsciiDataSourceTraits<std::string>::write( ds,
" : " );
345 w.
write( *im->currentValue(), indent,
"",
"", writeInternals );
352 soma::AsciiDataSourceTraits<std::string>::write( ds, ind2 );
358 bool writeInternals )
361 const std::map<carto::Object, carto::Object> & x
362 = obj.
value<std::map<carto::Object, carto::Object> >();
363 std::map<carto::Object, carto::Object>::const_iterator im, em = x.end();
364 bool first =
true, hassyntax =
false;
365 std::string ind, ind2;
373 for( i=0; i<indent-1; ++i )
383 soma::AsciiDataSourceTraits<std::string>::write( ds, ind );
399 synt = sx->GenericObject::value<std::string>();
410 soma::AsciiDataSourceTraits<std::string>::write( ds,
"'__syntax__' : " );
415 for( im=x.begin(); im!=em; ++im )
423 soma::AsciiDataSourceTraits<std::string>::write( ds, ind );
425 w.
write( im->first, indent,
"",
"", writeInternals );
426 soma::AsciiDataSourceTraits<std::string>::write( ds,
" : " );
427 w.
write( im->second, indent,
"",
"", writeInternals );
431 soma::AsciiDataSourceTraits<std::string>::write( ds, ind2 );
437 int indent,
bool writeInternals )
452 w.
write( it->currentValue(), indent,
"",
"", writeInternals );
463 soma::PythonWriter & w,
465 bool writeInternals )
485 de = ix->currentValue();
486 genericHelper<typename T::value_type>( *de, w, ind, writeInternals );
virtual bool getProperty(const std::string &key, Object &value) const=0
virtual Object objectIterator() const=0
Object reference(Object &value)
virtual double getScalar() const=0
virtual std::string getString() const=0
virtual bool hasSyntax() const=0
virtual std::string getSyntax() const=0
virtual int putch(int ch)=0
carto::rc_ptr< DataSource > dataSource()
void writeString(DataSource &, std::string)
utility function
static void genericSequenceHelper(const carto::GenericObject &obj, PythonWriter &w, int ind, bool writeInternals)
void write(const carto::GenericObject &object, bool writeInternals=false, bool writevariable=true)
Writes a generic object to stream.
bool isInternal(const std::string &syntax, const std::string &semantic)