Bash++
Bash++ compiler internal documentation
bpp_method.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2025 Andrew S. Rightenburg
3 * Bash++: Bash with classes
4 * SPDX-License-Identifier: GPL-3.0-or-later
5 */
6
7#pragma once
8
9#include <vector>
10#include <memory>
11#include <string>
12
13#include "bpp.h"
14#include "bpp_code_entity.h"
15
16namespace bpp {
17
24 private:
25 std::vector<std::shared_ptr<bpp_method_parameter>> parameters;
27 bool m_is_virtual = false;
28 bool m_is_overridable = false;
29 bool inherited = false;
30 bool add_object_as_parameter(std::shared_ptr<bpp_object> object);
31 std::string last_override; // Name of the latest class to override this virtual method
32 public:
33 virtual bool add_parameter(std::shared_ptr<bpp_method_parameter> parameter);
35 void set_virtual(bool is_virtual);
37 void set_inherited(bool is_inherited);
38 void set_last_override(const std::string& class_name);
39 void set_overridden_method(std::weak_ptr<bpp_method> method);
40 bool add_object(std::shared_ptr<bpp_object> object, bool make_local) override;
41
42 std::vector<std::shared_ptr<bpp_method_parameter>> get_parameters() const;
43 bpp_scope get_scope() const;
44 bool is_virtual() const;
45 bool is_overridable() const;
46 bool is_inherited() const;
47 std::string get_last_override() const;
48};
49
56 public:
57 explicit bpp_method_parameter(const std::string& name);
58
59 void set_class(std::shared_ptr<bpp_class>);
60};
61
66inline const std::shared_ptr<bpp_method> inaccessible_method = std::make_shared<bpp_method>();
67
68} // namespace bpp
An entity which can contain code.
Definition bpp_code_entity.h:35
The base class for all entities in the Bash++ compiler.
Definition bpp_entity.h:25
std::string name
Definition bpp_entity.h:27
A parameter in a method.
Definition bpp_method.h:55
void set_class(std::shared_ptr< bpp_class >)
Definition bpp_method_parameter.cpp:15
A method in a class.
Definition bpp_method.h:23
bool inherited
Definition bpp_method.h:29
void set_last_override(const std::string &class_name)
Definition bpp_method.cpp:93
bool add_object(std::shared_ptr< bpp_object > object, bool make_local) override
Add an object to the code entity.
Definition bpp_method.cpp:125
bool add_object_as_parameter(std::shared_ptr< bpp_object > object)
Add a pointer to a non-primitive object as a parameter to the method.
Definition bpp_method.cpp:20
virtual bool add_parameter(std::shared_ptr< bpp_method_parameter > parameter)
Add a parameter to the method.
Definition bpp_method.cpp:47
bool is_virtual() const
Definition bpp_method.cpp:109
void set_scope(bpp_scope scope)
Definition bpp_method.cpp:76
bpp_scope scope
Definition bpp_method.h:26
void set_overridden_method(std::weak_ptr< bpp_method > method)
Definition bpp_method.cpp:97
bool m_is_overridable
Definition bpp_method.h:28
std::vector< std::shared_ptr< bpp_method_parameter > > get_parameters() const
Definition bpp_method.cpp:101
std::string last_override
Definition bpp_method.h:31
std::string get_last_override() const
Definition bpp_method.cpp:121
void set_virtual(bool is_virtual)
Definition bpp_method.cpp:80
bpp_scope get_scope() const
Definition bpp_method.cpp:105
void set_inherited(bool is_inherited)
Definition bpp_method.cpp:89
std::vector< std::shared_ptr< bpp_method_parameter > > parameters
Definition bpp_method.h:25
void set_overridable(bool is_overridable)
Definition bpp_method.cpp:85
bool is_inherited() const
Definition bpp_method.cpp:117
bool m_is_virtual
Definition bpp_method.h:27
bool is_overridable() const
Definition bpp_method.cpp:113
Definition bash_case.cpp:9
bpp_scope
Definition bpp.h:20
const std::shared_ptr< bpp_method > inaccessible_method
A placeholder for an inaccessible method of a class (scope handling)
Definition bpp_method.h:66