/* duktape binding generation implementation * * This file is part of nsgenbind. * Licensed under the MIT License, * http://www.opensource.org/licenses/mit-license.php * Copyright 2015 Vincent Sanders */ #include #include #include #include #include #include #include #include #include "options.h" #include "utils.h" #include "nsgenbind-ast.h" #include "webidl-ast.h" #include "ir.h" #include "duk-libdom.h" #define NSGENBIND_PREFACE \ "/* Generated by nsgenbind\n" \ " *\n" \ " * nsgenbind is published under the MIT Licence.\n" \ " * nsgenbind is similar to a compiler is a purely transformative tool which\n" \ " * explicitly makes no copyright claim on this generated output\n" \ " */" /* exported interface documented in duk-libdom.h */ int output_tool_preface(FILE* outf) { fprintf(outf, "%s\n", NSGENBIND_PREFACE); return 0; } /* exported interface documented in duk-libdom.h */ int output_cdata(FILE* outf, struct genbind_node *node, enum genbind_node_type nodetype) { char *cdata; int res = 0; cdata = genbind_node_gettext( genbind_node_find_type( genbind_node_getnode(node), NULL, nodetype)); if (cdata != NULL) { fprintf(outf, "%s", cdata); res = 1; } return res; } /* exported interface documented in duk-libdom.h */ int output_tool_prologue(FILE* outf) { char *fpath; fpath = genb_fpath("binding.h"); fprintf(outf, "\n#include \"%s\"\n", fpath); free(fpath); fpath = genb_fpath("private.h"); fprintf(outf, "#include \"%s\"\n", fpath); free(fpath); fpath = genb_fpath("prototype.h"); fprintf(outf, "#include \"%s\"\n", fpath); free(fpath); return 0; }