-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtemplate.c
67 lines (61 loc) · 2.34 KB
/
template.c
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
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* template.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: fsandel <[email protected]> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2023/01/30 10:33:22 by fsandel #+# #+# */
/* Updated: 2023/06/13 09:12:42 by fsandel ### ########.fr */
/* */
/* ************************************************************************** */
#include "template.h"
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
static char *include_guard(char *name);
void create_hpp(int fd, char *name) {
char *guard = include_guard(name);
if (!guard) return;
dprintf(fd, "#ifndef %s\n", guard);
dprintf(fd, "#define %s\n", guard);
dprintf(fd, "\n");
dprintf(fd, "class %s {\n", name);
dprintf(fd, " public:\n");
dprintf(fd, " %s();\n", name);
dprintf(fd, " ~%s();\n", name);
dprintf(fd, " %s(const %s & obj);\n", name, name);
dprintf(fd, " %s& operator=(const %s& obj);\n", name, name);
dprintf(fd, "\n");
dprintf(fd, " private:\n");
dprintf(fd, "};\n");
dprintf(fd, "\n");
dprintf(fd, "#endif // %s\n", guard);
free(guard);
}
void create_cpp(int fd, char *name) {
dprintf(fd, "#include \"%s.hpp\"\n", name);
dprintf(fd, "\n");
dprintf(fd, "%s::%s() {}\n", name, name);
dprintf(fd, "\n");
dprintf(fd, "%s::~%s() {}\n", name, name);
dprintf(fd, "\n");
dprintf(fd, "%s::%s(const %s & obj) { *this = obj; }\n", name, name, name);
dprintf(fd, "\n");
dprintf(fd, "%s& %s::operator=(const %s& obj) {\n", name, name, name);
dprintf(fd, " (void)obj;\n");
dprintf(fd, " return *this;\n");
dprintf(fd, "}\n");
}
static char *include_guard(char *name) {
char *guard = calloc(strlen(name) + 5 + 1, sizeof(char));
if (!guard) return (NULL);
int i = 0;
while (name && name[i]) {
guard[i] = toupper(name[i]);
i++;
}
strcat(guard, "_HPP_");
return (guard);
}