Browse Source

Added better parsing of C++ conversion operators.

pull/123/head
triton 12 years ago
parent
commit
42cca516b3
  1. 2
      src/AST/Method.cs
  2. 2
      src/CppParser/AST.h
  3. 4
      src/CppParser/Parser.cpp
  4. 4
      src/Parser/Parser.cpp

2
src/AST/Method.cs

@ -140,6 +140,8 @@ namespace CppSharp.AST @@ -140,6 +140,8 @@ namespace CppSharp.AST
public MethodConversionKind Conversion { get; set; }
public QualifiedType ConversionType { get; set; }
public Class ExplicitInterfaceImpl { get; set; }
public override QualifiedType GetFunctionType()

2
src/CppParser/AST.h

@ -459,6 +459,8 @@ struct CS_API Method : public Function @@ -459,6 +459,8 @@ struct CS_API Method : public Function
bool IsDefaultConstructor;
bool IsCopyConstructor;
bool IsMoveConstructor;
QualifiedType ConversionType;
};
struct CS_API Enumeration : public Declaration

4
src/CppParser/Parser.cpp

@ -809,6 +809,10 @@ Method* Parser::WalkMethodCXX(clang::CXXMethodDecl* MD) @@ -809,6 +809,10 @@ Method* Parser::WalkMethodCXX(clang::CXXMethodDecl* MD)
}
else if (const CXXConversionDecl* CD = dyn_cast<CXXConversionDecl>(MD))
{
auto TL = MD->getTypeSourceInfo()->getTypeLoc().castAs<FunctionTypeLoc>();
auto RTL = TL.getResultLoc();
auto ConvTy = WalkType(CD->getConversionType(), &RTL);
Method->ConversionType = GetQualifiedType(CD->getConversionType(), ConvTy);
}
Class->Methods.push_back(Method);

4
src/Parser/Parser.cpp

@ -814,6 +814,10 @@ CppSharp::AST::Method^ Parser::WalkMethodCXX(clang::CXXMethodDecl* MD) @@ -814,6 +814,10 @@ CppSharp::AST::Method^ Parser::WalkMethodCXX(clang::CXXMethodDecl* MD)
}
else if (const CXXConversionDecl* CD = dyn_cast<CXXConversionDecl>(MD))
{
auto TL = MD->getTypeSourceInfo()->getTypeLoc().castAs<FunctionTypeLoc>();
auto RTL = TL.getResultLoc();
auto ConvTy = WalkType(CD->getConversionType(), &RTL);
Method->ConversionType = GetQualifiedType(CD->getConversionType(), ConvTy);
}
Class->Methods->Add(Method);

Loading…
Cancel
Save