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

See:
* tools/cmd/builtin-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
