commit f23e747f86b4faebdaf22adde949c64858ab8837
parent 46eb3e390e247e4023d8e342fd2e1e0ca00d5b5a
Author: Remy Noulin <loader2x@gmail.com>
Date: Mon, 6 Jan 2020 16:35:11 +0100
add cleanP, clean and cleanFinish in class template
cleanP declares an object, it must be assign before the end of the
block:
cleanP(obj) = NULL;
src/sheepy.h | 36 ++++++++++++++++++++++++++++++++++++
1 file changed, 36 insertions(+)
Diffstat:
1 file changed, 36 insertions(+), 0 deletions(-)
diff --git a/src/sheepy.h b/src/sheepy.h
@@ -134,6 +134,30 @@ void registerMethodsClassTemplate(classTemplateFunctionst *f);\n\
\n\
classTemplatet* allocClassTemplate(void/*TODO INIT DATA */);\n\
\n\
+/* terminate classTemplatet val when it is out of scope */\n\
+void cleanUpClassTemplateTerminateG(classTemplatet **val);\n\
+\n\
+/* free classTemplatet val when it is out of scope */\n\
+void cleanUpClassTemplateFreeG(classTemplatet *val);\n\
+\n\
+/* finish classTemplatet val when it is out of scope */\n\
+void cleanUpClassTemplateFinishG(classTemplatet *val);\n\
+\n\
+/**\n\
+ * declare pointer name with Type classTemplatet and terminate name when it is out of scope\n\
+ */\n\
+#define cleanClassTemplateP(name) classTemplatet *name CLEANUP(cleanUpClassTemplateTerminateG)\n\
+\n\
+/**\n\
+ * declare local object name with Type classTemplatet and free name when it is out of scope\n\
+ */\n\
+#define cleanClassTemplate(name) classTemplatet name CLEANUP(cleanUpClassTemplateFreeG); initiateClassTemplate(&name)\n\
+\n\
+/**\n\
+ * declare pointer name with Type classTemplatet and finish name when it is out of scope\n\
+ */\n\
+#define cleanFinishClassTemplateP(name) classTemplatet *name CLEANUP(cleanUpClassTemplateFinishG)\n\
+\n\
/* end class classTemplate*/\n\
// vim: set expandtab ts=2 sw=2:"
@@ -224,6 +248,18 @@ classTemplatet* allocClassTemplate(void/* TODO change parameter to get the initi
}\n\
\n\
\n\
+void cleanUpClassTemplateTerminateG(classTemplatet **val) {\n\
+ terminateO(*val);\n\
+}\n\
+\n\
+void cleanUpClassTemplateFreeG(classTemplatet *val) {\n\
+ freeO(val);\n\
+}\n\
+\n\
+void cleanUpClassTemplateFinishG(classTemplatet *val) {\n\
+ finishO(val);\n\
+}\n\
+\n\
local void freeClassTemplate(classTemplatet *self) {\n\
\n\
/* TODO free internal data (not the structure holding the function pointers) */\n\