blob: f1c1e9f6788eb98a8af11e1fd217232edf9d1447 [file] [log] [blame]
Chris Lattner4b009652007-07-25 00:24:17 +00001//===--- TokenKinds.cpp - Token Kinds Support -----------------------------===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file was developed by Chris Lattner and is distributed under
6// the University of Illinois Open Source License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This file implements the TokenKind enum and support functions.
11//
12//===----------------------------------------------------------------------===//
13
14#include "clang/Basic/TokenKinds.h"
Ted Kremenek634cadf2007-10-23 22:18:37 +000015#include "llvm/Bitcode/Serialization.h"
Chris Lattner4b009652007-07-25 00:24:17 +000016#include <cassert>
17using namespace clang;
18
19static const char * const TokNames[] = {
20#define TOK(X) #X,
21#define KEYWORD(X,Y) #X,
22#include "clang/Basic/TokenKinds.def"
23 0
24};
25
26const char *tok::getTokenName(enum TokenKind Kind) {
27 assert(Kind < tok::NUM_TOKENS);
28 return TokNames[Kind];
29}
Ted Kremenek634cadf2007-10-23 22:18:37 +000030
31// Serialization traits for TokenKind, PPKeywordKind, and ObjCKeywordKind
32
33void llvm::SerializeTrait<tok::TokenKind>::Serialize(llvm::Serializer& S,
34 tok::TokenKind X) {
35 S.EmitEnum(X,0,tok::NUM_TOKENS-1);
36}
37
38void llvm::SerializeTrait<tok::TokenKind>::Deserialize(llvm::Deserializer& D,
39 tok::TokenKind& X) {
40 X = D.ReadEnum<tok::TokenKind>(0,tok::NUM_TOKENS-1);
41}
42
43void llvm::SerializeTrait<tok::PPKeywordKind>::Serialize(llvm::Serializer& S,
44 tok::PPKeywordKind X) {
45 S.EmitEnum(X,0,tok::NUM_PP_KEYWORDS-1);
46}
47
48void llvm::SerializeTrait<tok::PPKeywordKind>::Deserialize(llvm::Deserializer& D,
49 tok::PPKeywordKind& X) {
50 X = D.ReadEnum<tok::PPKeywordKind>(0,tok::NUM_PP_KEYWORDS-1);
51}
52
53void
54llvm::SerializeTrait<tok::ObjCKeywordKind>::Serialize(llvm::Serializer& S,
55 tok::ObjCKeywordKind X) {
56 S.EmitEnum(X,0,tok::NUM_OBJC_KEYWORDS-1);
57}
58
59void
60llvm::SerializeTrait<tok::ObjCKeywordKind>::Deserialize(llvm::Deserializer& D,
61 tok::ObjCKeywordKind& X) {
62 X = D.ReadEnum<tok::ObjCKeywordKind>(0,tok::NUM_OBJC_KEYWORDS-1);
63}