OTQtConfigFileEditor.h
Go to the documentation of this file.00001 /* ======================================================================== 00002 * Copyright (c) 2006, 00003 * Institute for Computer Graphics and Vision 00004 * Graz University of Technology 00005 * All rights reserved. 00006 * 00007 * Redistribution and use in source and binary forms, with or without 00008 * modification, are permitted provided that the following conditions are 00009 * met: 00010 * 00011 * Redistributions of source code must retain the above copyright notice, 00012 * this list of conditions and the following disclaimer. 00013 * 00014 * Redistributions in binary form must reproduce the above copyright 00015 * notice, this list of conditions and the following disclaimer in the 00016 * documentation and/or other materials provided with the distribution. 00017 * 00018 * Neither the name of the Graz University of Technology nor the names of 00019 * its contributors may be used to endorse or promote products derived from 00020 * this software without specific prior written permission. 00021 * 00022 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 00023 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 00024 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 00025 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER 00026 * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 00027 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 00028 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 00029 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 00030 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 00031 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 00032 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00033 * ======================================================================== 00034 * PROJECT: OpenTracker 00035 * ======================================================================== */ 00045 #ifndef OTQT_OTQTCONFIGFILEEDITOR_H 00046 #define OTQT_OTQTCONFIGFILEEDITOR_H 00047 #include <dllinclude.h> 00048 #if USE_OTQT 00049 00050 #include <list> 00051 #include <string> 00052 00053 namespace ot { 00054 00055 //-------------------------------------------------------------------------------- 00072 class OPENTRACKER_API OTQtConfigFileEditor { 00073 00074 public: 00076 typedef std::list<std::string> LineList; 00078 typedef LineList::iterator LineIterator; 00080 typedef LineList::const_iterator ConstLineIterator; 00081 00082 public: 00089 OTQtConfigFileEditor(std::string & input_filename); 00093 ~OTQtConfigFileEditor(); 00098 OTQtConfigFileEditor(OTQtConfigFileEditor const & ref); 00099 00100 private: 00101 OTQtConfigFileEditor(); 00102 OTQtConfigFileEditor operator = (OTQtConfigFileEditor const & ref); 00103 00104 public: 00110 void init(); 00116 inline bool isInitialized() const { return is_initialized_; } 00122 bool containsExpr(std::string expr) const; 00130 int firstLineNoOfExpr(std::string expr, int start_index = 0) const; 00136 int countOfExpr(std::string expr) const; 00150 bool insertLines(int index_at, LineList & ins_lines, int num_indent_spaces = 0); 00159 bool killLine(int index); 00163 void writeToStdOut() const; 00168 void writeToFile(std::string const & output_filename) const; 00169 00170 00175 inline int getLineCount() const { return lines_.size(); }; 00181 std::string const & getLine(int index) const; 00182 00183 00184 private: 00190 void import(); 00191 00192 private: 00194 bool is_initialized_; 00196 std::string input_filename_; 00198 LineList lines_; 00199 00200 }; 00201 00202 } // namespace ot 00203 00204 #endif // USE_OTQT 00205 00206 #endif // OTQT_OTQTCONFIGFILEEDITOR_H 00207 00208 00209 /* 00210 * ------------------------------------------------------------ 00211 * End of OTQtConfigFileEditor.h 00212 * ------------------------------------------------------------ 00213 * Automatic Emacs configuration follows. 00214 * Local Variables: 00215 * mode:c++ 00216 * c-basic-offset: 4 00217 * eval: (c-set-offset 'substatement-open 0) 00218 * eval: (c-set-offset 'case-label '+) 00219 * eval: (c-set-offset 'statement 'c-lineup-runin-statements) 00220 * eval: (setq indent-tabs-mode nil) 00221 * End: 00222 * ------------------------------------------------------------ 00223 */