summaryrefslogtreecommitdiff
path: root/trunk/ACE/apps/Gateway/Gateway/File_Parser.h
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/ACE/apps/Gateway/Gateway/File_Parser.h')
-rw-r--r--trunk/ACE/apps/Gateway/Gateway/File_Parser.h97
1 files changed, 97 insertions, 0 deletions
diff --git a/trunk/ACE/apps/Gateway/Gateway/File_Parser.h b/trunk/ACE/apps/Gateway/Gateway/File_Parser.h
new file mode 100644
index 00000000000..bbe3e1be348
--- /dev/null
+++ b/trunk/ACE/apps/Gateway/Gateway/File_Parser.h
@@ -0,0 +1,97 @@
+/* -*- C++ -*- */
+// $Id$
+
+// ============================================================================
+//
+// = LIBRARY
+// gateway
+//
+// = FILENAME
+// File_Parser.h
+//
+// = AUTHOR
+// Doug Schmidt
+//
+// ============================================================================
+
+#ifndef _FILE_PARSER
+#define _FILE_PARSER
+
+#include "ace/Basic_Types.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+class FPRT
+{
+ // = TITLE
+ // This class serves as a namespace for the <Return_Type>.
+public:
+ enum Return_Type
+ {
+ RT_EOLINE,
+ RT_EOFILE,
+ RT_SUCCESS,
+ RT_COMMENT,
+ RT_DEFAULT,
+ RT_PARSE_ERROR
+ };
+};
+
+template <class ENTRY>
+class File_Parser
+{
+ // = TITLE
+ // Class used to parse the configuration file for the
+ // <Consumer_Map>.
+public:
+
+ /// Destructor.
+ virtual ~File_Parser (void);
+
+ // = Open and Close the file specified
+ int open (const ACE_TCHAR filename[]);
+ int close (void);
+
+ virtual FPRT::Return_Type read_entry (ENTRY &entry,
+ int &line_number) = 0;
+ // Pure virtual hook that subclasses override and use the protected
+ // methods to fill in the <entry>.
+
+protected:
+ FPRT::Return_Type getword (char buf[]);
+ // Read the next ASCII word.
+
+ FPRT::Return_Type getint (ACE_INT32 &value);
+ // Read the next integer.
+
+ FPRT::Return_Type readword (char buf[]);
+ // Read the next "word," which is demarcated by <delimiter>s.
+ //
+ // @@ This function is inherently flawed since it doesn't take a
+ // count of the size of <buf>...
+
+ int delimiter (char ch);
+ // Returns true if <ch> is a delimiter, i.e., ' ', ',', or '\t'.
+
+ int comments (char ch);
+ // Returns true if <ch> is the comment character, i.e., '#'.
+
+ int skipline (void);
+ // Skips to the remainder of a line, e.g., when we find a comment
+ // character.
+
+ FILE *infile_;
+ // Pointer to the file we're reading.
+};
+
+#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
+#include "File_Parser.cpp"
+#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
+
+#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA)
+#pragma implementation ("File_Parser.cpp")
+#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */
+
+#endif /* _FILE_PARSER */