{{- /*
--------------------------------------------------------------------------------
Template file for use with tools/src/cmd/gen to generate function.cc

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
--------------------------------------------------------------------------------
*/ -}}

#include "src/tint/builtin/function.h"

namespace tint::builtin {

Function ParseFunction(std::string_view name) {
{{- range Sem.Builtins  }}
    if (name == "{{.Name}}") {
        return Function::k{{PascalCase .Name}};
    }
{{- end  }}
    return Function::kNone;
}

const char* str(Function i) {
    switch (i) {
        case Function::kNone:
            return "<none>";
{{- range Sem.Builtins  }}
        case Function::k{{PascalCase .Name}}:
            return "{{.Name}}";
{{- end  }}
    }
    return "<unknown>";
}

utils::StringStream& operator<<(utils::StringStream& out, Function i) {
    out << str(i);
    return out;
}

}  // namespace tint::builtin
