rayjs/generate-bindings.js

1 line
36 KiB
JavaScript
Raw Normal View History

(()=>{"use strict";var t={208:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.CodeGenerator=e.GenericCodeGenerator=e.CodeWriter=e.StringWriter=void 0;class n{constructor(){this.buffer=""}write(t){this.buffer+=t}writeLine(t=""){this.buffer+=t+"\n"}toString(){return this.buffer}}var s;e.StringWriter=n,e.CodeWriter=class extends n{constructor(){super(...arguments),this.indent=0,this.needsIndent=!0}writeGenerator(t){const e=t.iterateTokens(),n=t.iterateText(),r=t.iterateChildren();let i=e.next();for(;!i.done;){switch(i.value){case s.STRING:const t=n.next().value;this.needsIndent&&(this.write(" ".repeat(this.indent)),this.needsIndent=!1),this.write(t);break;case s.GOSUB:const e=r.next().value;this.writeGenerator(e);break;case s.INDENT:this.indent++;break;case s.UNINDENT:this.indent=this.indent>0?this.indent-1:0;break;case s.NEWLINE:this.write("\n"),this.needsIndent=!0}i=e.next()}}},function(t){t[t.STRING=0]="STRING",t[t.NEWLINE=1]="NEWLINE",t[t.INDENT=2]="INDENT",t[t.UNINDENT=3]="UNINDENT",t[t.GOSUB=4]="GOSUB"}(s||(s={}));class r{constructor(){this.children=[],this.text=[],this.tokens=[],this.tags={}}getTag(t){return this.tags[t]}setTag(t,e){this.tags[t]=e}iterateTokens(){return this.tokens[Symbol.iterator]()}iterateText(){return this.text[Symbol.iterator]()}iterateChildren(){return this.children[Symbol.iterator]()}line(t){this.tokens.push(s.STRING,s.NEWLINE),this.text.push(t)}comment(t){this.line("// "+t)}call(t,e,n=null){n&&this.inline(`${n.type} ${n.name} = `),this.inline(t+"("),this.inline(e.join(", ")),this.statement(")")}declare(t,e,n=!1,s=null){n&&this.inline("static "),this.inline(e+" "+t),s&&this.inline(" = "+s),this.statement("")}child(t){return t||(t=this.createGenerator()),this.tokens.push(s.GOSUB),this.children.push(t),t}inline(t){this.tokens.push(s.STRING),this.text.push(t)}statement(t){this.line(t+";")}breakLine(){this.tokens.push(s.NEWLINE)}indent(){this.tokens.push(s.INDENT)}unindent(){this.tokens.push(s.UNINDENT)}function(t,e,n,s,r){const i=this.createGenerator();return i.setTag("_type","function-body"),i.setTag("_name",t),i.setTag("_isStatic",s),i.setTag("_returnType",e),s&&this.inline("static "),this.inline(e+" "+t+"("),this.inline(n.map((t=>t.type+" "+t.name)).join(", ")),this.inline(") {"),this.breakLine(),this.indent(),this.child(i),this.unindent(),this.line("}"),this.breakLine(),r&&r(i),i}if(t,e){this.line("if("+t+") {"),this.indent();const n=this.createGenerator();return n.setTag("_type","if-body"),n.setTag("_condition",t),this.child(n),this.unindent(),this.line("}"),e&&e(n),n}else(t){this.line("else {"),this.indent();const e=this.createGenerator();return e.setTag("_type","else-body"),this.child(e),this.unindent(),this.line("}"),t&&t(e),e}returnExp(t){this.statement("return "+t)}include(t){this.line("#include <"+t+">")}for(t,e){this.line(`for(int ${t}; i < ${e}; i++){`),this.indent();const n=this.child();return this.unindent(),this.line("}"),n}header(t,e){this.line("#ifndef "+t),this.line("#define "+t),this.breakLine();const n=this.child();return n.setTag("_type","header-body"),n.setTag("_guardName",t),this.line("#endif // "+t),e&&e(n),n}declareStruct(t,e,n,s=!1){s&&this.inline("static "),this.statement(`${t} ${e} = { ${n.join(", ")} }`)}switch(t){this.line(`switch(${t}) {`),this.indent();const e=this.child();return this.unindent(),this.line("}"),e}case(t){this.line(`case ${t}:`)}defaultBreak(){this.line("default:"),this.line("{"),this.indent();const t=this.child();return this.statement("break"),this.unindent(),this.line("}"),t}caseBreak(t){this.case(t),this.line("{"),this.indent();const e=this.child();return this.statement("break"),this.unindent(),this.line("}"),e}}e.GenericCodeGenerator=r;class i extends r{createGenerator(){return new i}}e.CodeGenerator=i},763:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.HeaderParser=void 0,e.HeaderParser=class{parseEnums(t){return[...t.matchAll(/((?:\/\/.+\n)*)typedef enum {\n([^}]+)} ([^;]+)/gm)].map((t=>({description:this.parseComments(t[1]),values:this.parseEnumValues(t[2]),name:t[3]})))}parseEnumValues(t){let e=0;return t.split("\n"