Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members  

configsource.h

Go to the documentation of this file.
00001 // configsource.h: interface for the ConfigSource class.
00002 //
00004 
00005 #if !defined(_CONFIGSOURCE_H__INCLUDED_)
00006 #define _CONFIGSOURCE_H__INCLUDED_
00007 
00008 #if _MSC_VER > 1000
00009 #pragma once
00010 #endif // _MSC_VER > 1000
00011 
00012 //---------------------------------------------------------------------------
00013 #include <stdlib.h>  // for atol, atoi
00014 #include <stdio.h>
00015 #include <string.h>
00016 #include <limits.h> // for invalid values
00017 #include <float.h>  // for invalid values
00018 
00019 
00020 #define MAX_LINE_LENGTH   1024
00021 
00022 #define MAX_TOKEN_LENGTH  100
00023 
00024 #define CS_MODE_COMMAND  0
00025 
00026 
00027 // These must all be negative numbers, as they are mingled with
00028 // the number of bytes read in the ReadLine() return code.
00029 enum COMFILE_STATE
00030 {
00031      COMFILE_ERROR   = -2
00032    , COMFILE_EOF     = -1
00033    , COMFILE_GOOD    =  0
00034 };
00035 
00036 
00037 //---------------------------------------------------------------------------
00038 class ConfigSource  
00039 {
00040 protected:
00041 
00042         int          ReadMode;
00043 
00044    char curr_token[MAX_TOKEN_LENGTH+1];
00045 
00046         int                      LastError; // err
00047 
00048         int                      LineParseIndex;  // i
00049 
00050         char                CurrentLine[MAX_LINE_LENGTH+1]; // card
00051 
00052         char                Token[100];
00053         bool                TokenIsNull;     // nul
00054 
00055    char         LastMessage[120];
00056 
00057 public:
00058         ConfigSource();
00059    ~ConfigSource();
00060 
00061    virtual void Close() { };
00062 
00063    // No source from which to read
00064    virtual int  ReadLine() { return COMFILE_EOF; }
00065 
00066    const char* GetCurrentLine() { return (const char *)CurrentLine; }
00067    char* NextToken();
00068    const char* GetCurrentToken() { return (const char *)Token; }
00069    char* GetToken(int n, int off);
00070    char* GetToken(int n);
00071    int Load(const char * p_cmd);
00072    int Error( char** p_textual = NULL );
00073    bool IsTokenNull() { return TokenIsNull; }
00074    char* String();
00075    int Int();
00076    int Int(int n);
00077    int Int(int n, int off);
00078    long Long();
00079    long Long(int n);
00080    long Long(int n, int off);
00081    // Double(?) returns MINDOUBLE for invalid
00082    double Double();
00083    double Double(int n);
00084    double Double(int n, int off);
00085    bool Its(const char* p_str);
00086 
00087    static int INVALID_INT;
00088    static long INVALID_LONG;
00089    static double INVALID_DOUBLE;
00090 
00091 };
00092 
00093 #endif // !defined(_CONFIGSOURCE_H__INCLUDED_)

Generated on Tue May 6 09:16:00 2003 for Earthworm Libs by doxygen1.3-rc3