-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmethod.h
30 lines (25 loc) · 1.42 KB
/
method.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#ifndef METHOD_H
#define METHOD_H
#include "unit.h"
#include <vector>
class Method : public Unit {
public:
enum Modifier {
STATIC = 1, // первый бит = 1 => функция получит STATIC // C++, Java, C#
CONST = 1 << 1, // второй бит = 1 => функция получит CONST // C++
VIRTUAL = 1 << 2, // третий бит = 1 => функция получит VIRTUAL // C++, C#
FINAL = 1 << 3, // четвернтый бит = 1 => функция получит FINAL // Java
ABSTRACT = 1 << 4 // пятый бит = 1 => функция получит // Java
};
void add( const std::shared_ptr< Unit >& unit, Flags /* flags */ = 0 ) override { // добавление инструкций в список методов подлежащих созданию
m_body.push_back( unit );
}
protected:
Method(const std::string& name, const std::string& returnType, Flags flags ) : // конструктор метода
m_name( name ), m_returnType( returnType ), m_flags( flags ) {};
std::string m_name; // имя метода
std::string m_returnType; // тип возвращаемого значения метода
Flags m_flags; // модификаторы метода
std::vector<std::shared_ptr<Unit>> m_body; // вектор в который мы добавляем методы
};
#endif // METHOD_H