Home | History | Annotate | Download | only in Basic
      1 //===--- TemplateKinds.h - Enum values for C++ Template Kinds ---*- C++ -*-===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is distributed under the University of Illinois Open Source
      6 // License. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 ///
     10 /// \file
     11 /// \brief Defines the clang::TemplateNameKind enum.
     12 ///
     13 //===----------------------------------------------------------------------===//
     14 #ifndef LLVM_CLANG_BASIC_TEMPLATEKINDS_H
     15 #define LLVM_CLANG_BASIC_TEMPLATEKINDS_H
     16 
     17 namespace clang {
     18 
     19 /// \brief Specifies the kind of template name that an identifier refers to.
     20 /// Be careful when changing this: this enumeration is used in diagnostics.
     21 enum TemplateNameKind {
     22   /// The name does not refer to a template.
     23   TNK_Non_template = 0,
     24   /// The name refers to a function template or a set of overloaded
     25   /// functions that includes at least one function template.
     26   TNK_Function_template,
     27   /// The name refers to a template whose specialization produces a
     28   /// type. The template itself could be a class template, template
     29   /// template parameter, or C++0x template alias.
     30   TNK_Type_template,
     31   /// The name refers to a variable template whose specialization produces a
     32   /// variable.
     33   TNK_Var_template,
     34   /// The name refers to a dependent template name. Whether the
     35   /// template name is assumed to refer to a type template or a
     36   /// function template depends on the context in which the template
     37   /// name occurs.
     38   TNK_Dependent_template_name
     39 };
     40 
     41 }
     42 #endif
     43 
     44 
     45