-
Notifications
You must be signed in to change notification settings - Fork 0
/
CwithClasses.h
128 lines (103 loc) · 3.19 KB
/
CwithClasses.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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
//
// Created by ki11errabbit on 9/9/22.
//
#ifndef CWITHCLASSES_CWITHCLASSES_H
#define CWITHCLASSES_CWITHCLASSES_H
#include <string>
#include <vector>
#include <iostream>
#include "Enum.h"
#include "Struct.h"
#include "Function.h"
#include "Class.h"
using namespace std;
class CwithClasses {
private:
vector<string> includes;
vector<string> macros;
vector<string> typeDefs;
vector<Enum> enums;
vector<Struct> structs;
vector<Function> functions;
vector<Class> classes;
string name;
public:
CwithClasses(const vector<string> &includes, const vector<string> ¯os, const vector<string> &typeDefs,
const vector<Enum> &enums, const vector<Struct> &structs, const vector<Function> &functions,
const vector<Class> &classes) : includes(includes), macros(macros), typeDefs(typeDefs), enums(enums),
structs(structs), functions(functions), classes(classes) {}
void tempFunction() {
}
const string &getName() const {
return name;
}
void setName(const string &name) {
CwithClasses::name = name;
}
vector<Class> &getClasses() {
return classes;
}
void setupInheritance(vector<CwithClasses> files) {
vector<Class> classesFromFiles;
for (auto file : files) {
for (auto clasS : file.getClasses()) {
classesFromFiles.push_back(clasS);
}
}
for (auto& clasS : classes) {
clasS.findInheritance(classesFromFiles);
}
}
string makeHeaderFile(){
stringstream out;
string headerName;
/*for (auto clasS : classes) {
for (size_t i = 0; i < clasS.getClassName().length(); i++) {
headerName.push_back(toupper(clasS.getClassName()[i]));
}
}*/
for (size_t i = 0; i < name.length(); i++) {
headerName.push_back(toupper(name[i]));
}
out << "#ifndef " << headerName << endl;
out << "#define " << headerName << endl << endl;
for (auto include : includes) {
out << include << endl;
}
for (auto macro : macros) {
out << macro << endl;
}
for (auto typeDef : typeDefs) {
out << typeDef << endl;
}
for (auto enuM : enums) {
out << enuM << endl;
}
for (auto strucT : structs) {
out << strucT << endl;
}
for (auto clasS : classes) {
out << clasS.makeHeader();
}
for (auto function : functions) {
out << function.definitionForm(name) << endl;
}
out << endl << "#endif" << endl;
return out.str();
}
string makeSourceFile() {
stringstream out;
out << "#include \"" << name << ".h\"" << endl << endl;
for (auto macro : macros) {
out << macro << endl;
}
for (auto clasS : classes) {
out << clasS.makeSource() << endl;
}
for (auto function : functions) {
out << function.functionForm(name) << endl;
}
return out.str();
}
};
#endif //CWITHCLASSES_CWITHCLASSES_H