+
+ /**
+ * <p>
+ * This function will automatically generate the clear statements for
+ * supported types if the user has not defined the "@Clear" primitive
+ * </p>
+ *
+ * @return The auto-generated state copy statements
+ * @throws WrongAnnotationException
+ */
+ private Code generateAutoClearFunction() throws WrongAnnotationException {
+ Code code = new Code();
+ if (emptyState) // Empty state should have empty copy function
+ return code;
+
+ // FIXME: Just try our best to generate recycling statements
+ for (VariableDeclaration decl : declState) {
+ String type = decl.type;
+ String name = decl.name;
+ if (type.equals("IntList *") || type.equals("IntSet *")
+ || type.equals("IntMap *")) {
+ // Supported pointer types
+ // if (stack) delete stack;
+ code.addLine("if (" + name + ") delete " + name + ";");
+ }
+ }
+
+ return code;
+ }