library of assembled shared sources |
http://lass.cocamware.com |
00001 /** @file 00002 * @author Bram de Greve (bramz@users.sourceforge.net) 00003 * @author Tom De Muer (tomdemuer@users.sourceforge.net) 00004 * 00005 * *** BEGIN LICENSE INFORMATION *** 00006 * 00007 * The contents of this file are subject to the Common Public Attribution License 00008 * Version 1.0 (the "License"); you may not use this file except in compliance with 00009 * the License. You may obtain a copy of the License at 00010 * http://lass.sourceforge.net/cpal-license. The License is based on the 00011 * Mozilla Public License Version 1.1 but Sections 14 and 15 have been added to cover 00012 * use of software over a computer network and provide for limited attribution for 00013 * the Original Developer. In addition, Exhibit A has been modified to be consistent 00014 * with Exhibit B. 00015 * 00016 * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT 00017 * WARRANTY OF ANY KIND, either express or implied. See the License for the specific 00018 * language governing rights and limitations under the License. 00019 * 00020 * The Original Code is LASS - Library of Assembled Shared Sources. 00021 * 00022 * The Initial Developer of the Original Code is Bram de Greve and Tom De Muer. 00023 * The Original Developer is the Initial Developer. 00024 * 00025 * All portions of the code written by the Initial Developer are: 00026 * Copyright (C) 2004-2007 the Initial Developer. 00027 * All Rights Reserved. 00028 * 00029 * Contributor(s): 00030 * 00031 * Alternatively, the contents of this file may be used under the terms of the 00032 * GNU General Public License Version 2 or later (the GPL), in which case the 00033 * provisions of GPL are applicable instead of those above. If you wish to allow use 00034 * of your version of this file only under the terms of the GPL and not to allow 00035 * others to use your version of this file under the CPAL, indicate your decision by 00036 * deleting the provisions above and replace them with the notice and other 00037 * provisions required by the GPL License. If you do not delete the provisions above, 00038 * a recipient may use your version of this file under either the CPAL or the GPL. 00039 * 00040 * *** END LICENSE INFORMATION *** 00041 */ 00042 00043 00044 00045 /** @class lass::io::XmlOFile 00046 * @brief Output stream for writing a selection of geometric primitives to XML files. 00047 * 00048 * if you open a XmlOFile with @a iOpenMode (or without a second argument), the file is opened 00049 * and that's it. Not automatic content is written to it: 00050 * 00051 * @code 00052 * { 00053 * XmlOFile a("foo.xml"); 00054 * a << "spam\n" 00055 * } 00056 * 00057 * // foo.xml: 00058 * // spam 00059 * 00060 * { 00061 * XmlOFile b("bar.xml, std::ios::trunc); 00062 * b << "eggs\n" 00063 * } 00064 * 00065 * // bar.xml: 00066 * // eggs 00067 * @endcode 00068 * 00069 * However, if your second argument is the name of your root element, then a standard XML 00070 * declaration will be written to it and the root element will be opened. When the file is 00071 * closed, this root element will be closed automatically as well. 00072 * 00073 * @code 00074 * { 00075 * XmlOFile c("fun.xml", "root"); 00076 * c << "ham\n" 00077 * } 00078 * 00079 * // fun.xml: 00080 * // <?xml version="1.0"?> 00081 * // <root> 00082 * // ham 00083 * // </root> 00084 * @endcode 00085 */ 00086 00087 00088 00089 #ifndef LASS_GUARDIAN_OF_INCLUSION_IO_XML_O_FILE_H 00090 #define LASS_GUARDIAN_OF_INCLUSION_IO_XML_O_FILE_H 00091 00092 00093 00094 #include "io_common.h" 00095 #include "xml_o_stream.h" 00096 00097 namespace lass 00098 { 00099 00100 namespace io 00101 { 00102 00103 00104 class LASS_DLL XmlOFile: public XmlOStream 00105 { 00106 public: 00107 XmlOFile(); 00108 XmlOFile(const char* iFilename, std::ios::openmode iOpenMode = std::ios::out | std::ios::trunc); 00109 XmlOFile(const char* iFilename, const char* iRoot); 00110 XmlOFile(const std::string& iFilename, std::ios::openmode iOpenMode = std::ios::out | std::ios::trunc); 00111 XmlOFile(const std::string& iFilename, const std::string& iRoot); 00112 virtual ~XmlOFile(); 00113 00114 void open(const char* iFilename, std::ios::openmode iOpenMode = std::ios::out | std::ios::trunc); 00115 void open(const char* iFilename, const char* iRoot); 00116 void open(const std::string& iFilename, std::ios::openmode iOpenMode = std::ios::out | std::ios::trunc); 00117 void open(const std::string& iFilename, const std::string& iRoot); 00118 void close(); 00119 bool is_open(); 00120 00121 virtual XmlOFile& operator<<( char iIn ); 00122 virtual XmlOFile& operator<<( signed char iIn ); 00123 virtual XmlOFile& operator<<( unsigned char iIn ); 00124 virtual XmlOFile& operator<<( signed short iIn ); 00125 virtual XmlOFile& operator<<( unsigned short iIn ); 00126 virtual XmlOFile& operator<<( signed int iIn ) ; 00127 virtual XmlOFile& operator<<( unsigned int iIn ); 00128 virtual XmlOFile& operator<<( signed long iIn ); 00129 virtual XmlOFile& operator<<( unsigned long iIn ); 00130 virtual XmlOFile& operator<<( float iIn ); 00131 virtual XmlOFile& operator<<( double iIn ); 00132 virtual XmlOFile& operator<<( long double iIn ); 00133 virtual XmlOFile& operator<<( bool iIn ); 00134 virtual XmlOFile& operator<<( const void* iIn ); 00135 virtual XmlOFile& operator<<( const char* iIn ); 00136 virtual XmlOFile& operator<<( const std::string& iIn ); 00137 00138 virtual XmlOFile& operator<<( std::ostream& (*iIn) (std::ostream&) ); 00139 00140 private: 00141 00142 std::ofstream file_; 00143 std::string root_; 00144 }; 00145 00146 00147 00148 } 00149 00150 } 00151 00152 #endif
Generated on Mon Nov 10 14:22:02 2008 for Library of Assembled Shared Sources by 1.5.7.1 |