/** * src/class_diagram/model/class_method.h * * Copyright (c) 2021-2023 Bartek Kryza * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #pragma once #include "class_element.h" #include "common/model/template_parameter.h" #include "common/model/template_trait.h" #include "method_parameter.h" #include #include namespace clanguml::class_diagram::model { using clanguml::common::model::template_trait; class class_method : public class_element, public template_trait { public: class_method(common::model::access_t access, const std::string &name, const std::string &type); virtual ~class_method() = default; bool is_pure_virtual() const; void is_pure_virtual(bool is_pure_virtual); bool is_virtual() const; void is_virtual(bool is_virtual); bool is_const() const; void is_const(bool is_const); bool is_defaulted() const; void is_defaulted(bool is_defaulted); bool is_static() const; void is_static(bool is_static); const std::vector ¶meters() const; void add_parameter(method_parameter &¶meter); private: std::vector parameters_; bool is_pure_virtual_{false}; bool is_virtual_{false}; bool is_const_{false}; bool is_defaulted_{false}; bool is_static_{false}; }; } // namespace clanguml::class_diagram::model