Files
filament/tools/codegen-options/javascript.template
2022-05-12 13:52:54 -07:00

108 lines
2.9 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<{{ cprefix }}{{ $struct_name }}>("{{ jsprefix }}{{ 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 }}", &{{ cprefix }}{{ $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_<{{ cprefix }}{{ $enum_name }}>("{{ jsprefix }}{{ qualifiedtype .QualifiedName }}")
{{- range .Values}}
.value("{{ . }}", {{ cprefix }}{{ $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.{{ classprefix}}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}}
////////////////////////////////////////////////////////////////////////////////////////////////////
{{define "TsStruct"}}
{{- $struct_name := .QualifiedName }}
export interface {{ jsprefix }}{{ qualifiedtype .QualifiedName }} {
{{- range $index, $field := .Fields}}
{{- if $field.SkipJavaScript}}
// JavaScript binding for {{$field.Name}} is not yet supported, must use default value.
{{- else }}
{{ $field.Name }}?: {{ tstype $field.Type }};
{{- if $field.Description}} // {{ $field.Description }}{{end}}
{{- end }}
{{- end }}
}
{{end}}
{{define "TsEnum"}}
export enum {{ jsprefix }}{{ qualifiedtype .QualifiedName }} {
{{- range .Values}}
{{ . }},
{{- end }}
}
{{end}}