Files
filament/tools/codegen-options/javascript.template
Philip Rideout 63cfb817d7 Use generated code for all "Options" JS bindings. (#5536)
TypeScript bindings and Java are still TBD.
2022-05-11 08:02:35 -07:00

84 lines
2.1 KiB
Plaintext

{{ define "JsBindingsHeader" }}// This file has been generated by codegen-options
#include <emscripten.h>
#include <emscripten/bind.h>
#include <filament/View.h>
using namespace emscripten;
using namespace filament;
EMSCRIPTEN_BINDINGS(jsbindings_generated) {
{{end}}
{{define "JsBindingsStruct"}}
{{- $struct_name := .QualifiedName }}
value_object<View::{{ $struct_name }}>("View${{ qualifiedtype .QualifiedName }}")
{{- range $index, $field := .Fields}}
{{- if $field.SkipJavaScript}}
// JavaScript binding for {{$field.Name}} is not yet supported, must use default value.
{{- else }}
.field("{{ $field.Name }}", &View::{{ $struct_name }}::{{ $field.Name }})
{{- end }}
{{- end }}
;
{{end}}
{{define "JsBindingsFooter"}}
} // EMSCRIPTEN_BINDINGS
{{end}}
////////////////////////////////////////////////////////////////////////////////////////////////////
{{define "JsEnumsHeader"}}// This file has been generated by codegen-options
#include <emscripten.h>
#include <emscripten/bind.h>
#include <filament/View.h>
using namespace emscripten;
using namespace filament;
EMSCRIPTEN_BINDINGS(jsenums_generated) {
{{end}}
{{define "JsEnum"}}
{{- $enum_name := .QualifiedName }}
enum_<View::{{ $enum_name }}>("View${{ qualifiedtype .QualifiedName }}")
{{- range .Values}}
.value("{{ . }}", View::{{ $enum_name }}::{{ . }})
{{- end }}
;
{{end}}
{{define "JsEnumsFooter"}}
} // EMSCRIPTEN_BINDINGS
{{end}}
////////////////////////////////////////////////////////////////////////////////////////////////////
{{define "JsExtensionsHeader"}}// This file has been generated by codegen-options
Filament.loadGeneratedExtensions = function() {
{{end}}
{{define "JsExtension"}}
Filament.View.prototype.set{{ .BaseName }}Defaults = function(overrides) {
const options = {
{{- range $index, $field := .Fields}}
{{- if $field.SkipJavaScript}}
// JavaScript binding for {{$field.Name}} is not yet supported, must use default value.
{{- else }}
{{$field.Name}}: {{qualifiedvalue $field.DefaultValue}},
{{- end }}
{{- end }}
};
return Object.assign(options, overrides);
};
{{end}}
{{define "JsExtensionsFooter"}}
};
{{end}}