From 6aafeef5421596f1d8758b3e2bf191691aa33064 Mon Sep 17 00:00:00 2001 From: molhot Date: Thu, 31 Aug 2023 23:17:02 +0900 Subject: [PATCH] =?UTF-8?q?=E3=82=AF=E3=83=A9=E3=82=B9=E3=81=AE=E5=A4=89?= =?UTF-8?q?=E6=9B=B4=E5=AE=8C=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- srcs/includes/BaseKeyValueMap.hpp | 16 ++ srcs/includes/HttpRequest.hpp | 290 ++++++++++---------------- srcs/includes/RequestLine.hpp | 2 + srcs/includes/TwoValueSet.hpp | 16 +- srcs/includes/ValueArraySet.hpp | 8 +- srcs/includes/ValueDateSet.hpp | 16 +- srcs/includes/ValueInsertMethod.hpp | 121 +++++++++++ srcs/includes/ValueMap.hpp | 5 +- srcs/includes/ValueSet.hpp | 10 +- srcs/includes/ValueWeightArraySet.hpp | 9 +- 10 files changed, 283 insertions(+), 210 deletions(-) create mode 100644 srcs/includes/BaseKeyValueMap.hpp create mode 100644 srcs/includes/ValueInsertMethod.hpp diff --git a/srcs/includes/BaseKeyValueMap.hpp b/srcs/includes/BaseKeyValueMap.hpp new file mode 100644 index 00000000..81a5de2d --- /dev/null +++ b/srcs/includes/BaseKeyValueMap.hpp @@ -0,0 +1,16 @@ +#ifndef BASEKEYVALUEMAP_HPP +#define BASEKEYVALUEMAP_HPP + +#include +#include + +class BaseKeyValueMap +{ + private: + BaseKeyValueMap(const KeyValueMap &other); + + public: + virtual ~BaseKeyValueMap(); +}; + +#endif \ No newline at end of file diff --git a/srcs/includes/HttpRequest.hpp b/srcs/includes/HttpRequest.hpp index dfdc1283..8094a011 100644 --- a/srcs/includes/HttpRequest.hpp +++ b/srcs/includes/HttpRequest.hpp @@ -7,6 +7,7 @@ #include #include +#include "BaseKeyValueMap.hpp" #include "HandlingString.hpp" #include "RequestLine.hpp" #include "ValueWeightArraySet.hpp" @@ -15,6 +16,9 @@ #include "TwoValueSet.hpp" #include "ValueMap.hpp" #include "ValueDateSet.hpp" +#include "ValueInsertMethod.hpp" + +class BaseKeyValueMap; class RequestLine; class ValueWeightArraySet; @@ -24,208 +28,128 @@ class TwoValueSet; class ValueMap; class ValueDateSet; -//日付に関するクラスを作成すること +class ValueInsertMethod; class HttpRequest { private: - RequestLine _requestline; - - ValueWeightArraySet _accept; - ValueArraySet _accept_ch; - ValueWeightArraySet _accept_charset; - ValueWeightArraySet _accept_encoding; - ValueWeightArraySet _accept_language; - //Accept-Patchどういう持ち方かわからん - TwoValueSet _accept_post; - ValueSet _accept_ranges; - ValueSet _access_control_allow_credentials; - ValueArraySet _access_control_allow_headers; - ValueArraySet _access_control_allow_methods; - ValueSet _access_control_allow_origin; - ValueArraySet _access_control_expose_headers; - ValueSet _access_control_max_age; - ValueArraySet _access_control_request_headers; - ValueSet _access_control_request_method; - ValueSet _age; - ValueArraySet _allow; - ValueMap _alt_svc; - TwoValueSet _alt_used; - ValueMap _authorization; - //Cache-Controlどう使うのか全くわからない うまく分けられん - ValueArraySet _clear_site_data; - ValueSet _connection; - ValueMap _content_disponesition; - ValueArraySet _content_encoding; - ValueArraySet _content_language; - ValueSet _content_length; - ValueSet _content_location; - ValueSet _content_range; - TwoValueSet _content_security_policy; - TwoValueSet _content_security_policy_report_only; - ValueMap _content_type; - ValueMap _cookie; - ValueSet _cross_origin_embedder_policy; - ValueSet _cross_origin_opener_policy; - ValueSet _cross_origin_resource_policy; - ValueDateSet _date; - ValueSet _etag; - ValueSet _expect; - //expect-ctは現状廃止されているっぽくて対応したくない - ValueDateSet _expires; - ValueMap _forwarded; - ValueSet _email; - ValuseSet _from; - TwoValueSet _host; - ValueArraySet _if_match; - ValueDateSet _if_modified_since; - ValueArraySet _if_none_match; - ValueDateSet _if_range; - ValueDateSet _if_unmodified_since; - ValueSet _keep_alive; - ValueDateSet _last_modified; - ValueMap _link; - ValueSet _location; - ValueSet _max_forwards; - ValueSet _origin; - TwoValueSet _permission_policy; - ValueMap _proxy_authenticate; - TwoValueSet _proxy_authorization; - //range何かよくわからん これどれが当てはまるかわからん - ValueSet _referer; - ValueSet _referrer_policy; - ValueSet _retry_after; - ValueSet _sec_fetch_dest; - ValueSet _sec_fetch_mode; - ValueSet _sec_fetch_site; - ValueSet _sec_fetch_user; - ValueSet _sec_purpose; - ValueSet _sec_websocket_accept; - ValueSet _server; - ValueMap _servertiming; - ValueSet _service_worker_navigation_preload; - ValueMap _set_cookie; - ValueSet _sourcemap; - ValueMap _strict_transport_security; - ValueSet _te; - ValueSet _timing_allow_origin; - ValueSet _trailer; - ValueArraySet _transfer_encoding; - ValueArraySet _upgrade; - ValueSet _upgrade_insecure_requests; - ValueSet _user_agent; - ValueArraySet _vary; - ValueSet _via; - ValueArraySet _www_authenticate; - ValueMap _x_xss_protection; - + RequestLine _requestline; std::map inputvalue_functionmap; + std::map request_keyvalue_map; HttpRequest(); HttpRequest(const HttpRequest &other); - HttpRequest &operator=(const HttpRequest &other); bool check_keyword_exist(const std::string &key); std::string obtain_request_key(const std::string value); std::string obtain_request_value(const std::string value); - void ready_functionmap(void) const; + + TwoValueSet ready_TwoValueSet(const std::string &value); + ValueArraySet ready_ValueArraySet(const std::string &value); + ValueDateSet ready_ValueDateSet(const std::string &value); + ValueMap ready_ValueMap(const std::string &value); + ValueSet ready_ValueSet(const std::string &value); + ValueWeightArraySet ready_ValueWeightArraySet(const std::string &value); + void ready_functionmap(void); public: - HttpRequest(const std::string &value); + + HttpRequest(const std::string &all_request_text); ~HttpRequest(); - void set_accept(const std::string &value);//命名規則はMDN上に乗っている名前の前に_をつけることで対応していく、ただし大文字は全て小文字に変更して対応するものとする//要相談 - void set_accept_ch(const std::string &value);//ハイフンは_にしちゃいたいかも - //初期化に引数を必ず取りたいため、引数なしのコンストラクタは許可したくなく、privateに避難しているがこれだとダメっぽい?ちゃうんかい - void set_accept_charset(const std::string &value); - void set_accept_encoding(const std::string &value); - void set_accept_language(const std::string &value); - //Accept-Patchどういう持ち方かわからん - void set_accept_post(const std::string &value); - void set_accept_ranges(const std::string &value); - void set_access_control_allow_credentials(const std::string &value); - void set_access_control_allow_headers(const std::string &value); - void set_access_control_allow_methods(const std::string &value); - void set_access_control_allow_origin(const std::string &value); - void set_access_control_expose_headers(const std::string &value); - void set_access_control_max_age(const std::string &value); - void set_access_control_request_headers(const std::string &value); - void set_access_control_request_method(const std::string &value); - void set_age(const std::string &value); - void set_allow(const sts::string &value); - void set_alt_svc(const std::string &value); - void set_alt_used(const std::string &value); + void set_all_method(); + void set_accept(const std::string &key, const std::string &value); + void set_accept_ch(const std::string &key,const std::string &value); + void set_accept_charset(const std::string &key,const std::string &value); + void set_accept_encoding(const std::string &key,const std::string &value); + void set_accept_language(const std::string &key,const std::string &value); + void set_//方かわからん + void set_accept_post(const std::string &key,const std::string &value); + void set_accept_ranges(const std::string &key,const std::string &value); + void set_access_control_allow_credentials(const std::string &key,const std::string &value); + void set_access_control_allow_headers(const std::string &key,const std::string &value); + void set_access_control_allow_methods(const std::string &key,const std::string &value); + void set_access_control_allow_origin(const std::string &key,const std::string &value); + void set_access_control_expose_headers(const std::string &key,const std::string &value); + void set_access_control_max_age(const std::string &key,const std::string &value); + void set_access_control_request_headers(const std::string &key,const std::string &value); + void set_access_control_request_method(const std::string &key,const std::string &value); + void set_age(const std::string &key,const std::string &value); + void set_allow(const std::string &key,const std::string &value); + void set_alt_svc(const std::string &key,const std::string &value); + void set_alt_used(const std::string &key,const std::string &value); void set_authorization(const std::string &value); - //Cache-Controlどう使うのか全くわからない - void set_clear_site_data(const std::string &value); - void set_connection(const std::string &value); - void set_content_disponesition(const std::string &value); - void set_content_encoding(const std::string &value); - void set_content_language(const std::string &value); - void set_content_length(const std::string &value); - void set_content_location(const std::string &value); - void set_content_range(const std::string &value); - void set_content_security_policy(const std::string &value); - void set_content_security_policy_report_only(const std::string &value); - void set_content_type(const std::string &value); - void set_cookie(const std::string &value); - void set_cross_origin_embedder_policy(const std::string &value); - void set_cross_origin_opener_policy(const std::string &value); - void set_cross_origin_resource_policy(const std::string &value); - void set_date(const std:string &value); - void set_etag(const std::string &value); - void set_expect(const std::string &value); - //expect-ctは現状廃止されているっぽくて対応したくない - void set_expires(const std::string &value); - void set_forwarded(const std::string &value); - void set_email(const std::string &value); - void set_from(const std::string &value); - void set_host(const std::string &value); - void set_if_match(const std::string &value); - void set_if_modified_since(const std::string &value); - void set_if_none_match(const std::string &value); - void set_if_range(const std::string &value); - void set_if_unmodified_since(const std::string &value); - void set_keepalive(const std::string &value); - void set_last_modified(const std::string &value); - void set_link(const std::string &value); - void set_location(const std::string &value); - void set_max_forwards(const std::string &value); - void set_origin(const std::string &value); - void set_permission_policy(const std::string &value); - void set_proxy_authenticate(const std::string &value); - void set_proxy_authorization(const std::string &value); - //range何かよくわからん - void set_referer(const std::string &value); - void set_referrer_policy(const std::string &value); - void set_retry_after(const std::string &value); - void set_sec_fetch_dest(const std::string &value); - void set_sec_fetch_mode(const std::string &value); - void set_sec_fetch_site(const std::string &value); - void set_sec_fetch_user(const std::string &value); - void set_sec_purpose(const std::string &value); - void set_sec_websocket_accept(const std::string &value); - void set_server(const std::string &value); - void set_servertiming(const std::string &value); - void set_service_worker_navigation_preload(const std::string &value); - void set_set_cookie(const std::string &value); - void set_sourcemap(const std::string &value); - void set_strict_transport_security(const std::string &value); - void set_te(const std::string &value); - - void set_timing_allow_origin(const std::string &value); - void set_trailer(const std::string &value); - void set_transfer_encoding(const std::string &value); - void set_upgrade(const std::string &value); - void set_upgrade_insecure_requests(const std::string &value); - void set_user_agent(const std::string &value); - void set_vary(const std::string &value); - void set_via(const std::string &value); - void set_www_authenticate(const std::string &value); - void set_x_xss_protection(const std::string &value); + void set//か全くわからない うまく分けられん + void set_clear_site_data(const std::string &key,const std::string &value); + void set_connection(const std::string &key,const std::string &value); + void set_content_disponesition(const std::string &key,const std::string &value); + void set_content_encoding(const std::string &key,const std::string &value); + void set_content_language(const std::string &key,const std::string &value); + void set_content_length(const std::string &key,const std::string &value); + void set_content_location(const std::string &key,const std::string &value); + void set_content_range(const std::string &key,const std::string &value); + void set_content_security_policy(const std::string &key,const std::string &value); + void set_content_security_policy_report_only(const std::string &key,const std::string &value); + void set_content_type(const std::string &key,const std::string &value); + void set_cookie(const std::string &key,const std::string &value); + void set_cross_origin_embedder_policy(const std::string &key,const std::string &value); + void set_cross_origin_opener_policy(const std::string &key,const std::string &value); + void set_cross_origin_resource_policy(const std::string &key,const std::string &value); + void set_date(const std::string &key,const std::string &value); + void set_etag(const std::string &key,const std::string &value); + void set_expect(const std::string &key,const std::string &value); + void set//ているっぽくて対応したくない + void set_expires(const std::string &key,const std::string &value); + void set_forwarded(const std::string &key,const std::string &value); + void set_email(const std::string &key,const std::string &value); + void set_from(const std::string &key,const std::string &value); + void set_host(const std::string &key,const std::string &value); + void set_if_match(const std::string &key,const std::string &value); + void set_if_modified_since(const std::string &key,const std::string &value); + void set_if_none_match(const std::string &key,const std::string &value); + void set_if_range(const std::string &key,const std::string &value); + void set_if_unmodified_since(const std::string &key,const std::string &value); + void set_keep_alive(const std::string &key,const std::string &value); + void set_last_modified(const std::string &key,const std::string &value); + void set_link(const std::string &key,const std::string &value); + void set_location(const std::string &key,const std::string &value); + void set_max_forwards(const std::string &key,const std::string &value); + void set_origin(const std::string &key,const std::string &value); + void set_permission_policy(const std::string &key,const std::string &value); + void set_proxy_authenticate(const std::string &key,const std::string &value); + void set_proxy_authorization(const std::string &key,const std::string &value); + void set//れどれが当てはまるかわからん + void set_referer(const std::string &key,const std::string &value); + void set_referrer_policy(const std::string &key,const std::string &value); + void set_retry_after(const std::string &key,const std::string &value); + void set_sec_fetch_dest(const std::string &key,const std::string &value); + void set_sec_fetch_mode(const std::string &key,const std::string &value); + void set_sec_fetch_site(const std::string &key,const std::string &value); + void set_sec_fetch_user(const std::string &key,const std::string &value); + void set_sec_purpose(const std::string &key,const std::string &value); + void set_sec_websocket_accept(const std::string &key,const std::string &value); + void set_server(const std::string &key,const std::string &value); + void set_servertiming(const std::string &key,const std::string &value); + void set_service_worker_navigation_preload(const std::string &key,const std::string &value); + void set_set_cookie(const std::string &key,const std::string &value); + void set_sourcemap(const std::string &key,const std::string &value); + void set_strict_transport_security(const std::string &key,const std::string &value); + void set_te(const std::string &key,const std::string &value); + void set_timing_allow_origin(const std::string &key,const std::string &value); + void set_trailer(const std::string &key,const std::string &value); + void set_transfer_encoding(const std::string &key,const std::string &value); + void set_upgrade(const std::string &key,const std::string &value); + void set_upgrade_insecure_requests(const std::string &key,const std::string &value); + void set_user_agent(const std::string &key,const std::string &value); + void set_vary(const std::string &key,const std::string &value); + void set_via(const std::string &key,const std::string &value); + void set_www_authenticate(const std::string &key,const std::string &value); + void set_x_xss_protection(const std::string &key,const std::string &value); //debug関数 - void show_requestinfs(void); + void show_requestinfs(void) const; }; +#include "../HttpRequest/HttpRequest.cpp" + #endif \ No newline at end of file diff --git a/srcs/includes/RequestLine.hpp b/srcs/includes/RequestLine.hpp index 69189324..d0ce9149 100644 --- a/srcs/includes/RequestLine.hpp +++ b/srcs/includes/RequestLine.hpp @@ -24,6 +24,8 @@ class RequestLine std::string get_method(void) const; std::string get_target_page(void) const; std::string get_version(void) const; + + void show_requestline(void) const; }; #endif \ No newline at end of file diff --git a/srcs/includes/TwoValueSet.hpp b/srcs/includes/TwoValueSet.hpp index 1f170916..5716e8a4 100644 --- a/srcs/includes/TwoValueSet.hpp +++ b/srcs/includes/TwoValueSet.hpp @@ -1,24 +1,28 @@ #ifndef TWOVALUESET_HPP #define TWOVALUESET_HPP -class TwoValueSet +#include +#include +#include "BaseKeyValueMap.hpp" + +class TwoValueSet: public KeyValueMap { private: std::string _firstvalue; std::string _secondValue; - TwoValueSet(const TwoValueSet &other); + TwoValueSet(); TwoValueSet& operator=(const TwoValueSet &other); public: - TwoValueSet(); + TwoValueSet(std::string const &first_value); + TwoValueSet(const std::string &first_value, const std::string &second_value); ~TwoValueSet(); - void set_values(const std::string &first_value, const std::string &second_value); - void set_values(const std::string &first_value); - std::string get_firstvalue(void) const; std::string get_secondvalue(void) const; + + void show_allvalue(void) const; }; #endif \ No newline at end of file diff --git a/srcs/includes/ValueArraySet.hpp b/srcs/includes/ValueArraySet.hpp index f6bf873c..e9242108 100644 --- a/srcs/includes/ValueArraySet.hpp +++ b/srcs/includes/ValueArraySet.hpp @@ -3,22 +3,24 @@ #include #include +#include -class ValueArraySet +class ValueArraySet: public KeyValueMap { private: std::vector _value_array; + ValueArraySet(); ValueArraySet(const ValueArraySet &other); ValueArraySet &operator=(const ValueArraySet &other); public: - ValueArraySet(); + ValueArraySet(const std::vector value_array); ~ValueArraySet(); std::vector get_value_array(void) const; - void set_value_array(const std::vector &value); + void show_value_array_set(void); }; #endif \ No newline at end of file diff --git a/srcs/includes/ValueDateSet.hpp b/srcs/includes/ValueDateSet.hpp index 59302eca..9ff57333 100644 --- a/srcs/includes/ValueDateSet.hpp +++ b/srcs/includes/ValueDateSet.hpp @@ -3,7 +3,7 @@ #include -class ValueDateSet +class ValueDateSet: public KeyValueMap { private: std::string _day_name; @@ -11,16 +11,24 @@ class ValueDateSet std::string _month; std::string _year; std::string _hour; - std::string _hour; std::string _minute; std::string _second; + ValueDateSet(); ValueDateSet(const ValueDateSet &other); ValueDateSet& operator=(const ValueDateSet &other); public: - ValueDateSet(); - ValueDateSet(const std::string &value); + ValueDateSet(const std::string &date_format); + ~ValueDateSet(); + + std::string get_valuedateset_day_name(); + std::string get_valuedateset_day(); + std::string get_valuedateset_month(); + std::string get_valuedateset_year(); + std::string get_valuedateset_hour(); + std::string get_valuedateset_minute(); + std::string get_valuedateset_second(); }; #endif \ No newline at end of file diff --git a/srcs/includes/ValueInsertMethod.hpp b/srcs/includes/ValueInsertMethod.hpp new file mode 100644 index 00000000..50f2a39a --- /dev/null +++ b/srcs/includes/ValueInsertMethod.hpp @@ -0,0 +1,121 @@ +//テンプレートを使用するため、セッターを中に入れたままだとめっちゃめんどくさくなってしまう +//セッター部分を完全に切り分けて、staticクラスとして実装したい +//要相談 + +#ifndef VALUEINSERTMETHOD_HPP +#define VALUEINSERTMETHOD_HPP + +#include +#include + +#include "ValueArraySet.hpp" +#include "ValueDateSet.hpp" +#include "ValueWeightArraySet.hpp" +#include "ValueMap.hpp" +#include "ValueInsertMethod.hpp" + +class RequestLine; +class ValueWeightArraySet; +class ValueArraySet; +class ValueSet; +class TwoValueSet; +class ValueMap; +class ValueDateSet; + +class ValueInsertMethod +{ + private: + + public: + ValueWeightArraySet ready_accept(const std::string &value); + // void set_accept_ch(const std::string &value);//ハイフンは_にしちゃいたいかも + // //初期化に引数を必ず取りたいため、引数なしのコンストラクタは許可したくなく、privateに避難しているがこれだとダメっぽい?ちゃうんかい + // void set_accept_charset(const std::string &value); + // void set_accept_encoding(const std::string &value); + // void set_accept_language(const std::string &value); + // //Accept-Patchどういう持ち方かわからん + // void set_accept_post(const std::string &value); + // void set_accept_ranges(const std::string &value); + // void set_access_control_allow_credentials(const std::string &value); + // void set_access_control_allow_headers(const std::string &value); + // void set_access_control_allow_methods(const std::string &value); + // void set_access_control_allow_origin(const std::string &value); + // void set_access_control_expose_headers(const std::string &value); + // void set_access_control_max_age(const std::string &value); + // void set_access_control_request_headers(const std::string &value); + // void set_access_control_request_method(const std::string &value); + // void set_age(const std::string &value); + // void set_allow(const std::string &value); + // void set_alt_svc(const std::string &value); + // void set_alt_used(const std::string &value); + // void set_authorization(const std::string &value); + // //Cache-Controlどう使うのか全くわからない + // void set_clear_site_data(const std::string &value); + // void set_connection(const std::string &value); + // void set_content_disponesition(const std::string &value); + // void set_content_encoding(const std::string &value); + // void set_content_language(const std::string &value); + // void set_content_length(const std::string &value); + // void set_content_location(const std::string &value); + // void set_content_range(const std::string &value); + // void set_content_security_policy(const std::string &value); + // void set_content_security_policy_report_only(const std::string &value); + // void set_content_type(const std::string &value); + // void set_cookie(const std::string &value); + // void set_cross_origin_embedder_policy(const std::string &value); + // void set_cross_origin_opener_policy(const std::string &value); + // void set_cross_origin_resource_policy(const std::string &value); + // void set_date(const std::string &value); + // void set_etag(const std::string &value); + // void set_expect(const std::string &value); + // //expect-ctは現状廃止されているっぽくて対応したくない + // void set_expires(const std::string &value); + // void set_forwarded(const std::string &value); + // void set_email(const std::string &value); + // void set_from(const std::string &value); + // void set_host(const std::string &value); + // void set_if_match(const std::string &value); + // void set_if_modified_since(const std::string &value); + // void set_if_none_match(const std::string &value); + // void set_if_range(const std::string &value); + // void set_if_unmodified_since(const std::string &value); + // void set_keepalive(const std::string &value); + // void set_last_modified(const std::string &value); + // void set_link(const std::string &value); + // void set_location(const std::string &value); + // void set_max_forwards(const std::string &value); + // void set_origin(const std::string &value); + // void set_permission_policy(const std::string &value); + // void set_proxy_authenticate(const std::string &value); + // void set_proxy_authorization(const std::string &value); + // //range何かよくわからん + // void set_referer(const std::string &value); + // void set_referrer_policy(const std::string &value); + // void set_retry_after(const std::string &value); + // void set_sec_fetch_dest(const std::string &value); + // void set_sec_fetch_mode(const std::string &value); + // void set_sec_fetch_site(const std::string &value); + // void set_sec_fetch_user(const std::string &value); + // void set_sec_purpose(const std::string &value); + // void set_sec_websocket_accept(const std::string &value); + // void set_server(const std::string &value); + // void set_servertiming(const std::string &value); + // void set_service_worker_navigation_preload(const std::string &value); + // void set_set_cookie(const std::string &value); + // void set_sourcemap(const std::string &value); + // void set_strict_transport_security(const std::string &value); + // void set_te(const std::string &value); + + // void set_timing_allow_origin(const std::string &value); + // void set_trailer(const std::string &value); + // void set_transfer_encoding(const std::string &value); + // void set_upgrade(const std::string &value); + // void set_upgrade_insecure_requests(const std::string &value); + // void set_user_agent(const std::string &value); + // void set_vary(const std::string &value); + // void set_via(const std::string &value); + // void set_www_authenticate(const std::string &value); + // void set_x_xss_protection(const std::string &value); +}; + +#endif \ No newline at end of file diff --git a/srcs/includes/ValueMap.hpp b/srcs/includes/ValueMap.hpp index 0b73db32..a52f92b0 100644 --- a/srcs/includes/ValueMap.hpp +++ b/srcs/includes/ValueMap.hpp @@ -4,16 +4,17 @@ #include #include -class ValueMap +class ValueMap: public KeyValueMap { private: std::string _only_value; std::map _value_map; + ValueMap(); ValueMap(const ValueMap &other); ValueMap& operator=(const ValueMap &other); public: - ValueMap(); + ValueMap(std::map value_map); ~ValueMap(); void set_value(const std::string &only_value, const std::map &value_map); diff --git a/srcs/includes/ValueSet.hpp b/srcs/includes/ValueSet.hpp index b5715d62..bd5ac7bc 100644 --- a/srcs/includes/ValueSet.hpp +++ b/srcs/includes/ValueSet.hpp @@ -4,20 +4,18 @@ #include #include -class ValueSet +class ValueSet: public KeyValueMap { private: std::string _value; - ValueSet(const ValueSet &other); - ValueSet &operator=(const ValueSet &other); + ValueSet(); + //ValueSet &operator=(const ValueSet &other); public: - ValueSet(); + ValueSet(const std::string &value); ~ValueSet(); - void set_value(const std::string &value); - std::string get_value_set(void) const; }; diff --git a/srcs/includes/ValueWeightArraySet.hpp b/srcs/includes/ValueWeightArraySet.hpp index 14f057b0..21439838 100644 --- a/srcs/includes/ValueWeightArraySet.hpp +++ b/srcs/includes/ValueWeightArraySet.hpp @@ -5,22 +5,19 @@ #include #include "HandlingString.hpp" -class ValueWeightArraySet +class ValueWeightArraySet: public KeyValueMap { private: std::map _valueweight_set;//map型で入れるが、どうせなら重みを加味したようなインプットの流れにしておけば取り出す時に非常に楽になるのでは? - ValueWeightArraySet(const ValueWeightArraySet &other); + ValueWeightArraySet(); ValueWeightArraySet &operator=(const ValueWeightArraySet &other); public: - ValueWeightArraySet(); + ValueWeightArraySet(std::map &valueweight_set); ~ValueWeightArraySet(); std::map get_valueweight_set(void) const; - - void append_valueweight_set(const std::string &value, double weight); - void append_valueweight_set(const std::string &value); }; #endif \ No newline at end of file