{{- /*
--------------------------------------------------------------------------------
Template file for use with tools/builtin-gen to generate builtin_type.cc

See:
* tools/cmd/intrinsic-gen/gen for structures used by this template
* https://golang.org/pkg/text/template/ for documentation on the template syntax
--------------------------------------------------------------------------------
*/ -}}

#include "src/tint/sem/builtin_type.h"

#include <sstream>

namespace tint::sem {

BuiltinType ParseBuiltinType(const std::string& name) {
{{- range .Sem.Functions  }}
    if (name == "{{.Name}}") {
        return BuiltinType::k{{Title .Name}};
    }
{{- end  }}
    return BuiltinType::kNone;
}

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

std::ostream& operator<<(std::ostream& out, BuiltinType i) {
    out << str(i);
    return out;
}

}  // namespace tint::sem
