1 #include <stdlib.h> 2 3 #include "plugin.h" 4 5 extern cmark_mem CMARK_DEFAULT_MEM_ALLOCATOR; 6 cmark_plugin_register_syntax_extension(cmark_plugin * plugin,cmark_syntax_extension * extension)7int cmark_plugin_register_syntax_extension(cmark_plugin * plugin, 8 cmark_syntax_extension * extension) { 9 plugin->syntax_extensions = cmark_llist_append(&CMARK_DEFAULT_MEM_ALLOCATOR, plugin->syntax_extensions, extension); 10 return 1; 11 } 12 13 cmark_plugin * cmark_plugin_new(void)14cmark_plugin_new(void) { 15 cmark_plugin *res = (cmark_plugin *) CMARK_DEFAULT_MEM_ALLOCATOR.calloc(1, sizeof(cmark_plugin)); 16 17 res->syntax_extensions = NULL; 18 19 return res; 20 } 21 22 void cmark_plugin_free(cmark_plugin * plugin)23cmark_plugin_free(cmark_plugin *plugin) { 24 cmark_llist_free_full(&CMARK_DEFAULT_MEM_ALLOCATOR, 25 plugin->syntax_extensions, 26 (cmark_free_func) cmark_syntax_extension_free); 27 CMARK_DEFAULT_MEM_ALLOCATOR.free(plugin); 28 } 29 30 cmark_llist * cmark_plugin_steal_syntax_extensions(cmark_plugin * plugin)31cmark_plugin_steal_syntax_extensions(cmark_plugin *plugin) { 32 cmark_llist *res = plugin->syntax_extensions; 33 34 plugin->syntax_extensions = NULL; 35 return res; 36 } 37