+ // buffer allocation
+ fprintf(h_fp, "Blob dragonnet_create_Blob();\n");
+ fprintf(h_fp, "void dragonnet_free_Blob(Blob blob);\n\n");
+ fprintf(h_fp, "CompressedBlob dragonnet_create_CompressedBlob();\n");
+ fprintf(h_fp, "void dragonnet_free_CompressedBlob(CompressedBlob comp);\n\n");
+
+ fprintf(c_fp, "Blob dragonnet_create_Blob()\n");
+ fprintf(c_fp, "{\n");
+ fprintf(c_fp, "\tBlob blob = malloc(sizeof *blob);\n");
+ fprintf(c_fp, "\tblob->data = NULL;\n");
+ fprintf(c_fp, "\tblob->siz = 0;\n");
+ fprintf(c_fp, "\treturn blob;\n");
+ fprintf(c_fp, "}\n\n");
+
+ fprintf(c_fp, "void dragonnet_free_Blob(Blob blob)\n");
+ fprintf(c_fp, "{\n");
+ fprintf(c_fp, "\tif (blob->data)\n");
+ fprintf(c_fp, "\t\tfree(blob->data);\n");
+ fprintf(c_fp, "\tfree(blob);\n");
+ fprintf(c_fp, "}\n\n");
+
+ fprintf(c_fp, "CompressedBlob dragonnet_create_CompressedBlob()\n");
+ fprintf(c_fp, "{\n");
+ fprintf(c_fp, "\tCompressedBlob comp = malloc(sizeof *comp);\n");
+ fprintf(c_fp, "\tcomp->blob = dragonnet_create_Blob();\n");
+ fprintf(c_fp, "\tcomp->siz = 0;\n");
+ fprintf(c_fp, "\treturn comp;\n");
+ fprintf(c_fp, "}\n\n");
+
+ fprintf(c_fp, "void dragonnet_free_CompressedBlob(CompressedBlob comp)\n");
+ fprintf(c_fp, "{\n");
+ fprintf(c_fp, "\tdragonnet_free_Blob(comp->blob);\n");
+ fprintf(c_fp, "\tfree(comp);\n");
+ fprintf(c_fp, "}\n\n");
+