{{- /*
--------------------------------------------------------------------------------
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 {
namespace 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 sem
}  // namespace tint
