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_TEMPLATEKINDS_H
     15 #define LLVM_CLANG_TEMPLATEKINDS_H
     16 
     17 namespace clang {
     18 
     19 /// \brief Specifies the kind of template name that an identifier refers to.
     20 enum TemplateNameKind {
     21   /// The name does not refer to a template.
     22   TNK_Non_template = 0,
     23   /// The name refers to a function template or a set of overloaded
     24   /// functions that includes at least one function template.
     25   TNK_Function_template,
     26   /// The name refers to a template whose specialization produces a
     27   /// type. The template itself could be a class template, template
     28   /// template parameter, or C++0x template alias.
     29   TNK_Type_template,
     30   /// The name refers to a variable template whose specialization produces a
     31   /// variable.
     32   TNK_Var_template,
     33   /// The name refers to a dependent template name. Whether the
     34   /// template name is assumed to refer to a type template or a
     35   /// function template depends on the context in which the template
     36   /// name occurs.
     37   TNK_Dependent_template_name
     38 };
     39 
     40 }
     41 #endif
     42 
     43 
     44