summaryrefslogtreecommitdiffstats
path: root/clang/Basic/TokenKinds.cpp
blob: f1c1e9f6788eb98a8af11e1fd217232edf9d1447 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
//===--- TokenKinds.cpp - Token Kinds Support -----------------------------===//
//
//                     The LLVM Compiler Infrastructure
//
// This file was developed by Chris Lattner and is distributed under
// the University of Illinois Open Source License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
//  This file implements the TokenKind enum and support functions.
//
//===----------------------------------------------------------------------===//

#include "clang/Basic/TokenKinds.h"
#include "llvm/Bitcode/Serialization.h"
#include <cassert>
using namespace clang;

static const char * const TokNames[] = {
#define TOK(X) #X,
#define KEYWORD(X,Y) #X,
#include "clang/Basic/TokenKinds.def"
  0
};

const char *tok::getTokenName(enum TokenKind Kind) {
  assert(Kind < tok::NUM_TOKENS);
  return TokNames[Kind];
}

// Serialization traits for TokenKind, PPKeywordKind, and ObjCKeywordKind

void llvm::SerializeTrait<tok::TokenKind>::Serialize(llvm::Serializer& S,
                                                     tok::TokenKind X) {
  S.EmitEnum(X,0,tok::NUM_TOKENS-1);
}

void llvm::SerializeTrait<tok::TokenKind>::Deserialize(llvm::Deserializer& D,
                                                       tok::TokenKind& X) {
  X = D.ReadEnum<tok::TokenKind>(0,tok::NUM_TOKENS-1);
}

void llvm::SerializeTrait<tok::PPKeywordKind>::Serialize(llvm::Serializer& S,
                                                       tok::PPKeywordKind X) {
  S.EmitEnum(X,0,tok::NUM_PP_KEYWORDS-1);
}

void llvm::SerializeTrait<tok::PPKeywordKind>::Deserialize(llvm::Deserializer& D,
                                                      tok::PPKeywordKind& X) {
  X = D.ReadEnum<tok::PPKeywordKind>(0,tok::NUM_PP_KEYWORDS-1);
}

void
llvm::SerializeTrait<tok::ObjCKeywordKind>::Serialize(llvm::Serializer& S,
                                                      tok::ObjCKeywordKind X) {
  S.EmitEnum(X,0,tok::NUM_OBJC_KEYWORDS-1);
}

void
llvm::SerializeTrait<tok::ObjCKeywordKind>::Deserialize(llvm::Deserializer& D,
                                                     tok::ObjCKeywordKind& X) {
  X = D.ReadEnum<tok::ObjCKeywordKind>(0,tok::NUM_OBJC_KEYWORDS-1);
}
OpenPOWER on IntegriCloud