35 #include <boost/shared_ptr.hpp>
36 #include <boost/any.hpp>
46 virtual std::vector<pos_t>
all(
pos_t)
const = 0;
49 template<
class T> T
get_prop(std::string property,
52 return boost::any_cast<T>(
get_prop_(property, std::vector<pos_t>(1, site)));
55 template<
class T> T
get_prop(std::string property,
58 std::vector<pos_t> v(2);
59 v[0] = bond1; v[1] = bond2;
60 return boost::any_cast<T>(
get_prop_(property, v));
63 template<
class T> T
get_prop(std::string property,
64 std::vector<pos_t>
const & positions)
const
66 return boost::any_cast<T>(
get_prop_(property, positions));
70 virtual boost::any
get_prop_(std::string
const &, std::vector<pos_t>
const &)
const = 0;
79 boost::shared_ptr<lattice_impl>
86 typedef boost::shared_ptr<lattice_impl> impl_ptr;
98 impl_ptr
impl()
const {
return impl_; }
100 std::vector<pos_t>
forward(
pos_t site)
const {
return impl_->forward(site); }
101 std::vector<pos_t>
all(
pos_t site)
const {
return impl_->all(site); }
104 {
return impl_->get_prop<T>(property, site); }
107 {
return impl_->get_prop<T>(property, bond1, bond2); }
109 template<
class T> T
get_prop(std::string property, std::vector<pos_t>
const & positions)
const
110 {
return impl_->get_prop<T>(property, positions); }
112 boost::any
get_prop_(std::string
const & property, std::vector<pos_t>
const & positions)
const
113 {
return impl_->get_prop_(property, positions); }
T get_prop(std::string property, pos_t site) const
virtual std::vector< pos_t > all(pos_t) const =0
boost::shared_ptr< lattice_impl > lattice_factory(BaseParameters &parms)
lattice factory
Lattice(BaseParameters &parms)
boost::any get_prop_(std::string const &property, std::vector< pos_t > const &positions) const
virtual std::vector< pos_t > forward(pos_t) const =0
T get_prop(std::string property, pos_t bond1, pos_t bond2) const
int maximum_vertex_type() const
virtual pos_t size() const =0
T get_prop(std::string property, pos_t site) const
std::vector< pos_t > all(pos_t site) const
virtual boost::any get_prop_(std::string const &, std::vector< pos_t > const &) const =0
T get_prop(std::string property, std::vector< pos_t > const &positions) const
std::vector< pos_t > forward(pos_t site) const
T get_prop(std::string property, std::vector< pos_t > const &positions) const
T get_prop(std::string property, pos_t bond1, pos_t bond2) const
virtual int maximum_vertex_type() const =0