Browse Source

Added very primitive support for variables in the AST.

pull/1/head
triton 13 years ago
parent
commit
724a5d4fcc
  1. 11
      src/Bridge/Variable.cs
  2. 24
      src/Parser/Parser.cpp
  3. 1
      src/Parser/Parser.h

11
src/Bridge/Variable.cs

@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@

namespace Cxxi
{
public class Variable : Declaration
{
public override T Visit<T>(IDeclVisitor<T> visitor)
{
throw new System.NotImplementedException();
}
}
}

24
src/Parser/Parser.cpp

@ -1134,6 +1134,19 @@ void Parser::WalkMacros(clang::PreprocessingRecord* PR) @@ -1134,6 +1134,19 @@ void Parser::WalkMacros(clang::PreprocessingRecord* PR)
//-----------------------------------//
Cxxi::Variable^ Parser::WalkVariable(clang::VarDecl *VD)
{
using namespace clang;
using namespace clix;
auto Var = gcnew Cxxi::Variable();
Var->Name = marshalString<E_UTF8>(VD->getName());
return Var;
}
//-----------------------------------//
void Parser::HandleComments(clang::Decl* D, Cxxi::Declaration^ Decl)
{
using namespace clang;
@ -1293,6 +1306,17 @@ Cxxi::Declaration^ Parser::WalkDeclaration(clang::Decl* D, @@ -1293,6 +1306,17 @@ Cxxi::Declaration^ Parser::WalkDeclaration(clang::Decl* D,
break;
}
case Decl::Var:
{
auto VD = cast<VarDecl>(D);
auto V = WalkVariable(VD);
HandleComments(VD, V);
Decl = V;
break;
}
default:
{
Debug("Unhandled declaration kind: %s\n", D->getDeclKindName());

1
src/Parser/Parser.h

@ -72,6 +72,7 @@ protected: @@ -72,6 +72,7 @@ protected:
Cxxi::ClassTemplate^ Parser::WalkClassTemplate(clang::ClassTemplateDecl*);
Cxxi::FunctionTemplate^ Parser::WalkFunctionTemplate(
clang::FunctionTemplateDecl*);
Cxxi::Variable^ WalkVariable(clang::VarDecl*);
Cxxi::Type^ WalkType(clang::QualType, clang::TypeLoc* = 0,
bool DesugarType = false);

Loading…
Cancel
Save