From c9b6b9a5ca082fe7c1b6f58d7713f785a9eb6a5c Mon Sep 17 00:00:00 2001 From: Martial Simon Date: Mon, 15 Sep 2025 01:08:27 +0200 Subject: add: graphs et rushs --- graphs/cpp/chain_of_responsibility/director.cc | 10 ++++++++++ graphs/cpp/chain_of_responsibility/handler.cc | 19 +++++++++++++++++++ graphs/cpp/chain_of_responsibility/president.cc | 10 ++++++++++ graphs/cpp/chain_of_responsibility/vice_president.cc | 10 ++++++++++ 4 files changed, 49 insertions(+) create mode 100644 graphs/cpp/chain_of_responsibility/director.cc create mode 100644 graphs/cpp/chain_of_responsibility/handler.cc create mode 100644 graphs/cpp/chain_of_responsibility/president.cc create mode 100644 graphs/cpp/chain_of_responsibility/vice_president.cc (limited to 'graphs/cpp/chain_of_responsibility') diff --git a/graphs/cpp/chain_of_responsibility/director.cc b/graphs/cpp/chain_of_responsibility/director.cc new file mode 100644 index 0000000..af4072f --- /dev/null +++ b/graphs/cpp/chain_of_responsibility/director.cc @@ -0,0 +1,10 @@ +#include "director.hh" + +#include +void Director::handle_request(int level) +{ + if (level <= 3) + std::cout << "Director handles\n"; + else + forward_request(level); +} \ No newline at end of file diff --git a/graphs/cpp/chain_of_responsibility/handler.cc b/graphs/cpp/chain_of_responsibility/handler.cc new file mode 100644 index 0000000..256933b --- /dev/null +++ b/graphs/cpp/chain_of_responsibility/handler.cc @@ -0,0 +1,19 @@ +#include "handler.hh" + +#include +Handler::Handler(Handler* next) + : next_{ next } +{} +void Handler::set_successor(Handler* h) +{ + next_ = h; +} +void Handler::forward_request(int level) +{ + if (next_ == nullptr) + { + std::cout << "Nobody can handle this request\n"; + } + else + next_->handle_request(level); +} \ No newline at end of file diff --git a/graphs/cpp/chain_of_responsibility/president.cc b/graphs/cpp/chain_of_responsibility/president.cc new file mode 100644 index 0000000..9ee0566 --- /dev/null +++ b/graphs/cpp/chain_of_responsibility/president.cc @@ -0,0 +1,10 @@ +#include "president.hh" + +#include +void President::handle_request(int level) +{ + if (level <= 9) + std::cout << "President handles\n"; + else + forward_request(level); +} \ No newline at end of file diff --git a/graphs/cpp/chain_of_responsibility/vice_president.cc b/graphs/cpp/chain_of_responsibility/vice_president.cc new file mode 100644 index 0000000..0316d63 --- /dev/null +++ b/graphs/cpp/chain_of_responsibility/vice_president.cc @@ -0,0 +1,10 @@ +#include "vice_president.hh" + +#include +void VicePresident::handle_request(int level) +{ + if (level <= 6) + std::cout << "VicePresident handles\n"; + else + forward_request(level); +} \ No newline at end of file -- cgit v1.2.3