Scarab  v2.0.1
Project 8 C++ Utility Library
param_base.hh
Go to the documentation of this file.
1 /*
2  * param_base.hh
3  *
4  * Created on: Jan 14, 2014
5  * Author: nsoblath
6  */
7 
8 #ifndef SCARAB_PARAM_BASE_HH_
9 #define SCARAB_PARAM_BASE_HH_
10 
11 #include "error.hh"
12 
13 #include <sstream>
14 #include <string>
15 
16 namespace scarab
17 {
18  class param_value;
19  class param_array;
20  class param_node;
21 
23  {
24  public:
25  param();
26  param(const param& orig);
27  virtual ~param();
28 
29  virtual param* clone() const;
30 
31  virtual bool is_null() const;
32  virtual bool is_value() const;
33  virtual bool is_array() const;
34  virtual bool is_node() const;
35 
36  virtual bool has_subset( const param& a_subset ) const;
37 
38  param_value& as_value();
39  param_array& as_array();
40  param_node& as_node();
41 
42  const param_value& as_value() const;
43  const param_array& as_array() const;
44  const param_node& as_node() const;
45 
47  const param_value& operator()() const;
49  param_value& operator()();
50 
53  const param& operator[]( unsigned a_index ) const;
56  param& operator[]( unsigned a_index );
57 
60  const param& operator[]( const std::string& a_name ) const;
63  param& operator[]( const std::string& a_name );
64 
65  virtual std::string to_string() const;
66 
67  static unsigned s_indent_level;
68  };
69 
70  SCARAB_API std::ostream& operator<<(std::ostream& out, const param& value);
71 
72 } /* namespace scarab */
73 
74 #endif /* SCARAB_PARAM_BASE_HH_ */
#define SCARAB_API
Definition: scarab_api.hh:24
static unsigned s_indent_level
Definition: param_base.hh:67
SCARAB_API std::ostream & operator<<(std::ostream &out, const param_array &a_value)
Definition: param_array.cc:97
std::string to_string(std::uint64_t x)
Definition: date.h:7722