blob: d9109bfb060c80d9bd5fd0f3a0fbceff3deb0df8 [file] [log] [blame]
{{- /*
--------------------------------------------------------------------------------
Template file for use with tools/src/cmd/gen to generate function.h
To update the generated file, run:
./tools/run gen
See:
* tools/src/cmd/gen for structures used by this template
* https://golang.org/pkg/text/template/ for documentation on the template syntax
--------------------------------------------------------------------------------
*/ -}}
#ifndef SRC_TINT_BUILTIN_FUNCTION_H_
#define SRC_TINT_BUILTIN_FUNCTION_H_
#include <string>
#include "src/tint/utils/string_stream.h"
// \cond DO_NOT_DOCUMENT
namespace tint::builtin {
/// Enumerator of all builtin functions
enum class Function {
kNone = -1,
{{- range Sem.Builtins }}
k{{PascalCase .Name}},
{{- end }}
};
/// Matches the Function by name
/// @param name the builtin name to parse
/// @returns the parsed Function, or Function::kNone if `name` did not
/// match any builtin function.
Function ParseFunction(const std::string& name);
/// @returns the name of the builtin function type. The spelling, including
/// case, matches the name in the WGSL spec.
const char* str(Function i);
/// Emits the name of the builtin function type. The spelling, including case,
/// matches the name in the WGSL spec.
utils::StringStream& operator<<(utils::StringStream& out, Function i);
/// All builtin functions
constexpr Function kFunctions[] = {
{{- range Sem.Builtins }}
Function::k{{PascalCase .Name}},
{{- end }}
};
/// All builtin function names
constexpr const char* kFunctionStrings[] = {
{{- range Sem.Builtins }}
"{{.Name}}",
{{- end }}
};
} // namespace tint::builtin
// \endcond
#endif // SRC_TINT_BUILTIN_FUNCTION_H_