]> git.xonotic.org Git - xonotic/netradiant.git/blobdiff - libs/script/scripttokenwriter.h
fix cancel button
[xonotic/netradiant.git] / libs / script / scripttokenwriter.h
index 04935862287bc37cd28179e913fd1f68a66fd0ae..f1c5fc3147f46aa4c78f8de2cc631e18f48e0b76 100644 (file)
@@ -1,25 +1,25 @@
 /*
-Copyright (C) 2001-2006, William Joseph.
-All Rights Reserved.
+   Copyright (C) 2001-2006, William Joseph.
+   All Rights Reserved.
 
-This file is part of GtkRadiant.
+   This file is part of GtkRadiant.
 
-GtkRadiant is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
+   GtkRadiant is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
 
-GtkRadiant is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+   GtkRadiant is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-You should have received a copy of the GNU General Public License
-along with GtkRadiant; if not, write to the Free Software
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-*/
+   You should have received a copy of the GNU General Public License
+   along with GtkRadiant; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
 
-#if !defined(INCLUDED_SCRIPT_SCRIPTTOKENWRITER_H)
+#if !defined( INCLUDED_SCRIPT_SCRIPTTOKENWRITER_H )
 #define INCLUDED_SCRIPT_SCRIPTTOKENWRITER_H
 
 #include "iscriplib.h"
@@ -27,62 +27,55 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 class SimpleTokenWriter : public TokenWriter
 {
 public:
-  SimpleTokenWriter(TextOutputStream& ostream)
-    : m_ostream(ostream), m_separator('\n')
-  {
-  }
-  ~SimpleTokenWriter()
-  {
-    writeSeparator();
-  }
-  void release()
-  {
-    delete this;
-  }
-  void nextLine()
-  {
-    m_separator = '\n';
-  }
-  void writeToken(const char* token)
-  {
-    ASSERT_MESSAGE(strchr(token, ' ') == 0, "token contains whitespace: ");
-    writeSeparator();
-    m_ostream << token;
-  }
-  void writeString(const char* string)
-  {
-    writeSeparator();
-    m_ostream << '"' << string << '"';
-  }
-  void writeInteger(int i)
-  {
-    writeSeparator();
-    m_ostream << i;
-  }
-  void writeUnsigned(std::size_t i)
-  {
-    writeSeparator();
-    m_ostream << Unsigned(i);
-  }
-  void writeFloat(double f)
-  {
-    writeSeparator();
-    m_ostream << Decimal(f);
-  }
+SimpleTokenWriter( TextOutputStream& ostream )
+       // HACK: \0 separator is used to tell we are at beginning of file
+       : m_ostream( ostream ), m_separator( '\0' ){
+}
+~SimpleTokenWriter(){
+       writeSeparator();
+}
+void release(){
+       delete this;
+}
+void nextLine(){
+       m_separator = '\n';
+}
+void writeToken( const char* token ){
+       ASSERT_MESSAGE( strchr( token, ' ' ) == 0, "token contains whitespace: " );
+       writeSeparator();
+       m_ostream << token;
+}
+void writeString( const char* string ){
+       writeSeparator();
+       m_ostream << '"' << string << '"';
+}
+void writeInteger( int i ){
+       writeSeparator();
+       m_ostream << i;
+}
+void writeUnsigned( std::size_t i ){
+       writeSeparator();
+       m_ostream << Unsigned( i );
+}
+void writeFloat( double f ){
+       writeSeparator();
+       m_ostream << Decimal( f );
+}
 
 private:
-  void writeSeparator()
-  {
-    m_ostream << m_separator;
-    m_separator = ' ';
-  }
-  TextOutputStream& m_ostream;
-  char m_separator;
+void writeSeparator(){
+       // HACK: do not write separator at beginning of file
+       if (m_separator != '\0') {
+               m_ostream << m_separator;
+       }
+       m_separator = ' ';
+}
+TextOutputStream& m_ostream;
+char m_separator;
 };
 
-inline TokenWriter& NewSimpleTokenWriter(TextOutputStream& ostream)
-{
-  return *(new SimpleTokenWriter(ostream));
+inline TokenWriter& NewSimpleTokenWriter( TextOutputStream& ostream ){
+       return *( new SimpleTokenWriter( ostream ) );
 }
 
 #endif