#include #include #include #include namespace getfem { class Foo : public context_dependencies { public: explicit Foo(const std::string &name) : myName(name) {} void print_dependent(void); void print_dependencies(void); void update_from_context(void) const; std::string myName; }; void Foo::update_from_context(void) const { std::cout << "Do nothing on update from context" << "\n"; } void Foo::print_dependent(void) { std::cout << "Dependent objects for " << myName << " " << (void*) this << ": \n"; if (dependent.size() < 1) { std::cout << " No depentend objects\n"; } else { iterator_list it = dependent.begin(), ite = dependent.end(); for (; it != ite; ++it) { std::cout << " " << (void*) *it <<"\n"; } } } void Foo::print_dependencies(void) { std::cout << "Dependencies objects for " << myName << " " << (void*) this << ": \n"; if (dependencies.size() < 1) { std::cout << " No dependencies objects\n"; } else { iterator_list it = dependencies.begin(), ite = dependencies.end(); for (; it != ite; ++it) { std::cout << " " << (void*) *it << "\n"; } } } } /* namespace getfem */ int main() { getfem::Foo master("Master"); getfem::Foo slave("Slave"); getfem::Foo master2("Master 2"); master.add_dependency(slave); master.print_dependent(); master.print_dependencies(); std::cout << "\n\n --------------\n\n"; slave.print_dependent(); slave.print_dependencies(); master2 = master; std::cout << "\n\n --------------\n\n"; master2.print_dependent(); master2.print_dependencies(); }