/* * Copyright (C) 2007-2012 Xagasoft, All rights reserved. * * This file is part of the libgats library and is released under the * terms of the license contained in the file LICENSE. */ #include "gats/string.h" #include "gats/integer.h" #include Gats::String::String() { } Gats::String::String( const char *s ) : Bu::String( s ) { } Gats::String::String( const char *s, long iLength ) : Bu::String( s, iLength ) { } Gats::String::String( long iLength ) : Bu::String( iLength ) { } Gats::String::String( const String &s ) : Bu::String( s ) { } Gats::String::String( const Bu::String &s ) : Bu::String( s ) { } Gats::String::~String() { } Gats::Object *Gats::String::clone() const { return new Gats::String( Bu::String::clone() ); } void Gats::String::write( Bu::Stream &rOut ) const { rOut.write("s", 1 ); uint32_t iSize = getSize(); Gats::Integer::writePackedInt( rOut, iSize ); rOut.write( getStr(), iSize ); } void Gats::String::read( Bu::Stream &rIn, char cType ) { uint32_t iSize; Gats::Integer::readPackedInt( rIn, iSize ); setSize( iSize ); rIn.read( getStr(), iSize ); } Bu::Formatter &operator<<( Bu::Formatter &f, const Gats::String &s ) { for( Gats::String::const_iterator i = s.begin(); i; i++ ) { if( *i >= 127 || *i <= 31 ) return f << "(binary str) " << s.getSize() << " bytes"; } return f << "(str) \"" << dynamic_cast(s) << "\""; }