This is a header file defining a complete implementation of the Siena attributes-based data model. In particular, this file shows how to implement the siena::Value, siena::Attribute, siena::Message, siena::Constraint, siena::Filter, and siena::Predicate interfaces. The implementation of the classes declared in this file are implemented in the simple_attributes_types.cc source file.
#ifndef SIMPLE_ATTRIBUTES_TYPES_H
#define SIMPLE_ATTRIBUTES_TYPES_H
#include <list>
#include <map>
public:
simple_value();
private:
union {
};
};
typedef std::map<siena::String, const simple_value *> attribute_map;
public:
simple_attribute(attribute_map::const_iterator b,
attribute_map::const_iterator e);
private:
attribute_map::const_iterator i;
attribute_map::const_iterator end;
};
public:
virtual Iterator *
first()
const;
simple_message();
virtual ~simple_message();
private:
attribute_map attrs;
};
class simple_op_value: public simple_value {
public:
private:
};
typedef std::multimap<siena::String, const simple_op_value *> constraint_map;
public:
simple_constraint(constraint_map::const_iterator b,
constraint_map::const_iterator e);
private:
constraint_map::const_iterator i;
constraint_map::const_iterator end;
};
public:
virtual Iterator *
first()
const;
const simple_op_value * v);
simple_filter();
virtual ~simple_filter();
private:
constraint_map constraints;
};
typedef std::list<simple_filter *> filter_list;
public:
virtual Filter::Iterator *
first()
const;
simple_predicate_i(filter_list::const_iterator b,
filter_list::const_iterator e);
private:
filter_list::const_iterator i;
filter_list::const_iterator end;
};
public:
virtual Iterator *
first()
const;
void add(simple_filter * v);
simple_filter * last_filter();
simple_predicate();
virtual ~simple_predicate();
private:
filter_list filters;
};
#endif