-/*******************************************************************************
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Header: FGConfigFile.h
Author: Jon Berndt
--------------------------------------------------------------------------------
03/29/00 JSB Created
-********************************************************************************
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
SENTRY
-*******************************************************************************/
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#ifndef FGCONFIGFILE_H
#define FGCONFIGFILE_H
-/*******************************************************************************
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
INCLUDES
-*******************************************************************************/
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#ifdef FGFS
# include <simgear/compiler.h>
-# ifdef FG_HAVE_STD_INCLUDES
-# include <fstream>
-# else
+# include STL_STRING
+# include STL_FSTREAM
+# include STL_IOSTREAM
+ SG_USING_STD(string);
+ SG_USING_STD(ostream);
+ SG_USING_STD(istream);
+ SG_USING_STD(ifstream);
+ SG_USING_STD(cerr);
+ SG_USING_STD(endl);
+ SG_USING_STD(ios);
+ SG_USING_STD(cout);
+#else
+# include <string>
+# if defined(sgi) && !defined(__GNUC__) && (_COMPILER_VERSION < 740)
# include <fstream.h>
+# include <iostream.h>
+# else
+# include <fstream>
+# include <iostream>
+ using std::ostream;
+ using std::istream;
+ using std::ios;
+ using std::cerr;
+ using std::cout;
+ using std::ifstream;
+ using std::endl;
# endif
-#else
-# include <fstream>
+ using std::string;
#endif
-#include <string>
+#include "FGJSBBase.h"
-/*******************************************************************************
-DEFINES
-*******************************************************************************/
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+DEFINITIONS
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-#ifndef FGFS
-using std::string;
-using std::ifstream;
-#endif
+#define ID_CONFIGFILE "$Id$"
+
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+FORWARD DECLARATIONS
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+
+namespace JSBSim {
+
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+CLASS DOCUMENTATION
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-/*******************************************************************************
+/** Encapsulates reading a JSBSim config file.
+ JSBSim config files are in XML format.
+ @author Jon S. Berndt
+ @version $Id$
+*/
+
+/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DECLARATION
-*******************************************************************************/
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-class FGConfigFile
+class FGConfigFile : public FGJSBBase
{
public:
- FGConfigFile(string);
- ~FGConfigFile(void);
-
- string GetLine(void);
+ /** Constructor
+ @param Filename the name of the config file to be read. */
+ FGConfigFile(string Filename);
+ /// Destructor
+ ~FGConfigFile();
+
+ /** Returns the next line from the currently open config file.
+ Comments are bypassed and ignored.
+ @return the next valid line from the config file OR "EOF" if end of file is
+ reached.*/
string GetNextConfigLine(void);
- string GetValue(string);
+
+ string GetCurrentLine(void) { return CurrentLine; }
+
+ /** Returns the value of the tag supplied.
+ @param tag the tag for the value that is desired.
+ @return tthe value of the tag supplied.*/
+ string GetValue(string tag);
+
string GetValue(void);
- bool IsCommentLine(void);
+ string GetCommentString(void) {return CommentString;}
+ string GetLineComment(void) {return LineComment;}
bool IsOpen(void) {return Opened;}
FGConfigFile& operator>>(double&);
- FGConfigFile& operator>>(float&);
FGConfigFile& operator>>(int&);
FGConfigFile& operator>>(string&);
void ResetLineIndexToZero(void);
-protected:
-
private:
ifstream cfgfile;
string CurrentLine;
+ string CommentString;
+ string LineComment;
bool CommentsOn;
bool Opened;
- unsigned int CurrentIndex;
-};
+ unsigned int CurrentIndex;
+ string GetLine(void);
-/******************************************************************************/
+ void Debug(int from);
+};
+}
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#endif
+