clang API Documentation

TemplateKinds.h
Go to the documentation of this file.
00001 //===--- TemplateKinds.h - Enum values for C++ Template Kinds ---*- C++ -*-===//
00002 //
00003 //                     The LLVM Compiler Infrastructure
00004 //
00005 // This file is distributed under the University of Illinois Open Source
00006 // License. See LICENSE.TXT for details.
00007 //
00008 //===----------------------------------------------------------------------===//
00009 ///
00010 /// \file
00011 /// \brief Defines the clang::TemplateNameKind enum.
00012 ///
00013 //===----------------------------------------------------------------------===//
00014 #ifndef LLVM_CLANG_BASIC_TEMPLATEKINDS_H
00015 #define LLVM_CLANG_BASIC_TEMPLATEKINDS_H
00016 
00017 namespace clang {
00018 
00019 /// \brief Specifies the kind of template name that an identifier refers to.
00020 /// Be careful when changing this: this enumeration is used in diagnostics.
00021 enum TemplateNameKind {
00022   /// The name does not refer to a template.
00023   TNK_Non_template = 0,
00024   /// The name refers to a function template or a set of overloaded
00025   /// functions that includes at least one function template.
00026   TNK_Function_template,
00027   /// The name refers to a template whose specialization produces a
00028   /// type. The template itself could be a class template, template
00029   /// template parameter, or C++0x template alias.
00030   TNK_Type_template,
00031   /// The name refers to a variable template whose specialization produces a
00032   /// variable.
00033   TNK_Var_template,
00034   /// The name refers to a dependent template name. Whether the
00035   /// template name is assumed to refer to a type template or a
00036   /// function template depends on the context in which the template
00037   /// name occurs.
00038   TNK_Dependent_template_name
00039 };
00040 
00041 }
00042 #endif
00043 
00044