00001
00002
00003
00004
00005
00006
00007
00008 #ifndef _IMPULSE_STRING_H_
00009 #define _IMPULSE_STRING_H_
00010
00011 #include <string>
00012
00013 namespace impulse {
00014
00015
00016
00017
00018
00019 class String : public Frame {
00020
00021 public:
00022
00023 String( string value = "" ) : _string( value ) { }
00024
00025 string cstring() { return _string; }
00026
00027 string inspect() { return "\"" + _string + "\""; }
00028
00029 String& operator <<( double value ) { return _write( value, "%lf" ); }
00030 String& operator <<( long value ) { return _write( value, "%ld" ); }
00031
00032 protected:
00033
00034 template <typename T>
00035 String& _write( T value, const char* format );
00036
00037 private:
00038
00039 string _string;
00040
00041 };
00042
00043
00044
00045
00046
00047 template <typename T>
00048 inline String& String::_write( T value, const char* format )
00049 {
00050 char buffer[256]; snprintf( buffer, 255, format, value );
00051
00052 _string.append( buffer );
00053
00054 return *this;
00055 }
00056
00057
00058
00059
00060
00061
00062 }
00063
00064 #endif