@@ -52,7 +52,7 @@ class Converter : public clang::RecursiveASTVisitor<Converter> {
5252
5353 virtual void EmitFilePreamble ();
5454
55- static void EmitOpaqueRecords (std::string &out);
55+ static void EmitOpaqueRecords (Model model, std::string &out);
5656 static void EmitGlobalInits (Model model, std::string &out);
5757
5858 static void EmitVirtualMethods (std::string &out);
@@ -173,6 +173,8 @@ class Converter : public clang::RecursiveASTVisitor<Converter> {
173173
174174 virtual bool VisitNamespaceDecl (clang::NamespaceDecl *decl);
175175
176+ bool VisitLinkageSpecDecl (clang::LinkageSpecDecl *decl);
177+
176178 virtual bool VisitTypedefDecl (clang::TypedefDecl *decl);
177179 virtual bool VisitTypeAliasDecl (clang::TypeAliasDecl *decl);
178180 virtual bool VisitTypeAliasTemplateDecl (clang::TypeAliasTemplateDecl *decl);
@@ -327,9 +329,14 @@ class Converter : public clang::RecursiveASTVisitor<Converter> {
327329
328330 void ConvertGenericCallExpr (clang::CallExpr *expr);
329331
330- virtual void EmitFnPtrCall (clang::Expr *callee);
332+ virtual void EmitFnPtrCall (clang::CallExpr *expr);
333+
334+ void ConvertLambdaCall (clang::CallExpr *expr,
335+ const clang::CXXRecordDecl *lambda);
331336
332- virtual void ConvertLambdaToFunctionPointer (clang::Expr *lambda);
337+ virtual void
338+ ConvertLambdaToFunctionPointer (clang::Expr *lambda,
339+ const clang::CXXConversionDecl *conversion);
333340
334341 virtual void
335342 ConvertFunctionToFunctionPointer (const clang::FunctionDecl *fn_decl);
@@ -380,8 +387,14 @@ class Converter : public clang::RecursiveASTVisitor<Converter> {
380387 uint64_t pad_nulls = 0 ) const ;
381388 virtual bool VisitStringLiteral (clang::StringLiteral *expr);
382389
390+ bool VisitSourceLocExpr (clang::SourceLocExpr *expr);
391+
392+ virtual std::string GetSourceFileAsString (clang::QualType type);
393+
383394 virtual bool VisitCXXBoolLiteralExpr (clang::CXXBoolLiteralExpr *expr);
384395
396+ bool VisitCXXNoexceptExpr (clang::CXXNoexceptExpr *expr);
397+
385398 void ConvertIntegerToEnumeralCast (clang::Expr *to, clang::Expr *from);
386399
387400 void ConvertIntegralToBooleanCast (clang::ImplicitCastExpr *expr);
@@ -401,6 +414,8 @@ class Converter : public clang::RecursiveASTVisitor<Converter> {
401414
402415 virtual bool VisitStmtExpr (clang::StmtExpr *expr);
403416
417+ bool ConvertLValueConditional (clang::ConditionalOperator *expr);
418+
404419 virtual bool VisitConditionalOperator (clang::ConditionalOperator *expr);
405420
406421 virtual bool VisitDeclRefExpr (clang::DeclRefExpr *expr);
@@ -469,7 +484,8 @@ class Converter : public clang::RecursiveASTVisitor<Converter> {
469484 virtual void ConvertLambdaCapture (const clang::FieldDecl *field,
470485 clang::Expr *init);
471486
472- void ConvertLambdaClosure (const clang::CXXRecordDecl *decl);
487+ void ConvertLambdaClosure (const clang::CXXRecordDecl *decl,
488+ clang::CXXMethodDecl *call_operator);
473489
474490 virtual bool VisitImplicitValueInitExpr (clang::ImplicitValueInitExpr *expr);
475491 virtual bool VisitCXXScalarValueInitExpr (clang::CXXScalarValueInitExpr *expr);
@@ -488,6 +504,15 @@ class Converter : public clang::RecursiveASTVisitor<Converter> {
488504
489505 virtual bool VisitClassTemplateDecl (clang::ClassTemplateDecl *decl);
490506
507+ bool TraverseClassTemplateSpecializationDecl (
508+ clang::ClassTemplateSpecializationDecl *) {
509+ return true ;
510+ }
511+
512+ bool TraverseExplicitInstantiationDecl (clang::ExplicitInstantiationDecl *) {
513+ return true ;
514+ }
515+
491516 virtual bool
492517 VisitCXXStdInitializerListExpr (clang::CXXStdInitializerListExpr *expr);
493518
@@ -661,6 +686,10 @@ class Converter : public clang::RecursiveASTVisitor<Converter> {
661686 const clang::CXXRecordDecl *decl,
662687 std::string_view lhs, std::string_view rhs);
663688
689+ std::string GetComparisonBool (const clang::FunctionDecl *op,
690+ const clang::CXXRecordDecl *decl,
691+ std::string_view lhs, std::string_view rhs);
692+
664693 virtual std::string
665694 GetComparisonReferenceArg (const clang::CXXRecordDecl *decl,
666695 std::string_view value);
0 commit comments