1ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom/*
2ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom * Copyright (C) 2011 The Android Open Source Project
3ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom *
4ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom * Licensed under the Apache License, Version 2.0 (the "License");
5ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom * you may not use this file except in compliance with the License.
6ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom * You may obtain a copy of the License at
7ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom *
8ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom *      http://www.apache.org/licenses/LICENSE-2.0
9ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom *
10ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom * Unless required by applicable law or agreed to in writing, software
11ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom * distributed under the License is distributed on an "AS IS" BASIS,
12ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom * See the License for the specific language governing permissions and
14ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom * limitations under the License.
15ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom */
16ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom
17ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom#include "primitive.h"
18ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom
19ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstromnamespace art {
20ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom
21ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstromstatic const char* kTypeNames[] = {
22ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom  "PrimNot",
23ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom  "PrimBoolean",
24ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom  "PrimByte",
25ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom  "PrimChar",
26ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom  "PrimShort",
27ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom  "PrimInt",
28ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom  "PrimLong",
29ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom  "PrimFloat",
30ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom  "PrimDouble",
31ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom  "PrimVoid",
32ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom};
3368d8b42ddec39ec0174162d90d4abaa004d1983eIan Rogers
345c4405e8ca4a0c1ee2d7759e650530c9aff77fd0Roland Levillainconst char* Primitive::PrettyDescriptor(Primitive::Type type) {
355c4405e8ca4a0c1ee2d7759e650530c9aff77fd0Roland Levillain  CHECK(Primitive::kPrimNot <= type && type <= Primitive::kPrimVoid) << static_cast<int>(type);
365c4405e8ca4a0c1ee2d7759e650530c9aff77fd0Roland Levillain  return kTypeNames[type];
375c4405e8ca4a0c1ee2d7759e650530c9aff77fd0Roland Levillain}
385c4405e8ca4a0c1ee2d7759e650530c9aff77fd0Roland Levillain
39ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstromstd::ostream& operator<<(std::ostream& os, const Primitive::Type& type) {
40ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom  int32_t int_type = static_cast<int32_t>(type);
41ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom  if (type >= Primitive::kPrimNot && type <= Primitive::kPrimVoid) {
42ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom    os << kTypeNames[int_type];
43ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom  } else {
44ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom    os << "Type[" << int_type << "]";
45ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom  }
46ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom  return os;
47ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom}
48ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom
49ae826983f7903bc0a6bbbe8426bf393fb2f6d747Brian Carlstrom}  // namespace art
50