00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00043 #ifndef ConstHDFNode_h_
00044 #define ConstHDFNode_h_ 1
00045
00046 #include <string>
00047 #include <boost/shared_ptr.hpp>
00048 #include "ClearSilverNode.h"
00049 #include "Nodes.h"
00050
00051 namespace ClearSilver
00052 {
00062 class ConstHDFNode
00063 {
00064 public:
00065 typedef std::string Name;
00066
00067 private:
00068 bool is_iterator_;
00069
00070 private:
00071
00072 ConstHDFNode& operator = (const ConstHDFNode& n);
00073
00074 protected:
00075 virtual Nodes nodes () const = 0;
00076 virtual Nodes& nodes () = 0;
00077 virtual void push (const Name&, const ClearSilverNode&) = 0;
00078 virtual void pop () = 0;
00079 virtual ClearSilverNode top () const = 0;
00080
00081 protected:
00083 void swap (ConstHDFNode&) throw();
00084
00086 Nodes find_node (const std::string&) const;
00096 bool& is_iterator ();
00097
00098 public:
00100
00101
00102 ConstHDFNode ();
00103 ConstHDFNode (const ConstHDFNode& n);
00104 ~ConstHDFNode () throw();
00105
00106
00108
00109 bool empty () const;
00110
00111
00113
00115 operator bool () const;
00117 operator std::string () const;
00118
00119
00121
00123 std::string name () const;
00125 std::string value () const;
00126
00127
00136
00137 std::string get_value () const;
00138 std::string get_value (const char* key) const;
00139 std::string get_value (const std::string& key) const;
00140 std::string get_value (const char* key, const char* default_value) const;
00141 std::string get_value (const std::string& key,
00142 const std::string& default_value) const;
00143
00144 void write_file (const char * filename) const;
00145 void write_file (const std::string& filename) const;
00146
00147 void dump () const;
00148 void dump (const char* prefix) const;
00149 void dump (const std::string& prefix) const;
00150
00151
00153 virtual ClearSilverNode node () const = 0;
00154
00163
00164 static std::string Boolean (bool b);
00165 static std::string True ();
00166 static std::string False ();
00167
00168
00170 bool is_dataset () const;
00172 bool is_reference () const;
00174 bool is_iterator () const;
00175
00182 static bool& debug ();
00183 };
00184 };
00185
00186 #endif