libsheepy
libsheepyCClassTemplate.h
Go to the documentation of this file.
1 #pragma once
2 // Class classTemplate
4 
5 // for object inheriting classTemplate, cast to classTemplate to be able to use this class functions and generics
6 #define cClassTemplate(self) ( (classTemplatet*) self )
7 
8 typedef void (*freeClassTemplateFt) (classTemplatet *self);
9 typedef void (*terminateClassTemplateFt) (classTemplatet **self);
10 typedef char* (*toStringClassTemplateFt) (classTemplatet *self);
11 typedef classTemplatet* (*duplicateClassTemplateFt) (classTemplatet *self);
12 typedef void (*smashClassTemplateFt) (classTemplatet **self);
13 
17 typedef void (*finishClassTemplateFt) (classTemplatet **self);
18 
36 #define CLASSTEMPLATEFUNCTIONST \
37  /* TODO ADD METHODS AFTER <finishClassTemplateFt finish;> HERE */
38 
39 typedef struct {
48 
52 struct classTemplate {
53  const char *type;
55 };
56 
57 // classTemplate
58 
59 #define createClassTemplate(obj) ;classTemplatet obj; initiateClassTemplate(&obj)
60 #define createAllocateClassTemplate(obj) ;classTemplatet *obj; initiateAllocateClassTemplate(&obj)
61 
64 void finalizeClassTemplate(void);
65 
66 // initialize class methods, call registerMethodsClassTemplate from classes inheriting this class
68 
69 classTemplatet* allocClassTemplate(/*TODO INIT DATA */);
70 
71 // end class classTemplate
classTemplatet * allocClassTemplate()
void finalizeClassTemplate(void)
terminateClassTemplateFt terminate
void(* smashClassTemplateFt)(classTemplatet **self)
duplicateClassTemplateFt duplicate
void initiateClassTemplate(classTemplatet *self)
void(* terminateClassTemplateFt)(classTemplatet **self)
void(* finishClassTemplateFt)(classTemplatet **self)
free classTemplate
void initiateAllocateClassTemplate(classTemplatet **self)
char *(* toStringClassTemplateFt)(classTemplatet *self)
finishClassTemplateFt finish
void(* freeClassTemplateFt)(classTemplatet *self)
toStringClassTemplateFt toString
classTemplateFunctionst * f
void registerMethodsClassTemplate(classTemplateFunctionst *f)
classTemplatet *(* duplicateClassTemplateFt)(classTemplatet *self)