
////////////////////////////////////////////////////////////////////////////////
// File autogenerated by clastgen
//  Clang - clang version 3.9.0-svn274595-1~exp1 (trunk)
//
// Warning. Changes made here will be overwritten.
////////////////////////////////////////////////////////////////////////////////
#include <pybind11/pybind11.h>
#include <pybind11/stl.h>
#include "internal.h"

#include <clang/AST/AST.h>
#include <clang/ASTMatchers/ASTMatchers.h>
#include <clang/ASTMatchers/ASTMatchFinder.h>


namespace py = pybind11;

void autogenerated_classes_4(pybind11::module& m)
{

    py::class_<clang::MSDependentExistsStmt, stmt_deleter<clang::MSDependentExistsStmt>::type>(m, "MSDependentExistsStmt" , py::base<clang::Stmt>())
        .def("getKeywordLoc", [](const clang::MSDependentExistsStmt& self) -> clang::SourceLocation {
           return  self.getKeywordLoc();
        })
        .def("isIfExists", [](const clang::MSDependentExistsStmt& self) -> bool {
           return  self.isIfExists();
        })
        .def("isIfNotExists", [](const clang::MSDependentExistsStmt& self) -> bool {
           return  self.isIfNotExists();
        })
        //.def("getQualifierLoc", [](const clang::MSDependentExistsStmt& self) -> clang::NestedNameSpecifierLoc {
        //   return  self.getQualifierLoc();
        //})
        .def("getNameInfo", [](const clang::MSDependentExistsStmt& self) -> clang::DeclarationNameInfo {
           return  self.getNameInfo();
        })
        .def("getSubStmt", [](const clang::MSDependentExistsStmt& self) -> clang::CompoundStmt * {
           return  self.getSubStmt();
        })
        .def("getLocStart", [](const clang::MSDependentExistsStmt& self) -> clang::SourceLocation {
           return  self.getLocStart();
        })
        .def("getLocEnd", [](const clang::MSDependentExistsStmt& self) -> clang::SourceLocation {
           return  self.getLocEnd();
        })
        //.def("children", []( clang::MSDependentExistsStmt& self) -> llvm::iterator_range<clang::StmtIterator> {
        //   return  self.children();
        //})
    ;

    py::class_<clang::CoroutineBodyStmt, stmt_deleter<clang::CoroutineBodyStmt>::type>(m, "CoroutineBodyStmt" , py::base<clang::Stmt>())
        .def("getBody", [](const clang::CoroutineBodyStmt& self) -> clang::Stmt * {
           return  self.getBody();
        })
        .def("getPromiseDeclStmt", [](const clang::CoroutineBodyStmt& self) -> clang::Stmt * {
           return  self.getPromiseDeclStmt();
        })
        .def("getPromiseDecl", [](const clang::CoroutineBodyStmt& self) -> clang::VarDecl * {
           return  self.getPromiseDecl();
        })
        .def("getInitSuspendStmt", [](const clang::CoroutineBodyStmt& self) -> clang::Stmt * {
           return  self.getInitSuspendStmt();
        })
        .def("getFinalSuspendStmt", [](const clang::CoroutineBodyStmt& self) -> clang::Stmt * {
           return  self.getFinalSuspendStmt();
        })
        .def("getExceptionHandler", [](const clang::CoroutineBodyStmt& self) -> clang::Stmt * {
           return  self.getExceptionHandler();
        })
        .def("getFallthroughHandler", [](const clang::CoroutineBodyStmt& self) -> clang::Stmt * {
           return  self.getFallthroughHandler();
        })
        .def("getReturnValueInit", [](const clang::CoroutineBodyStmt& self) -> clang::Expr * {
           return  self.getReturnValueInit();
        })
        .def("getLocStart", [](const clang::CoroutineBodyStmt& self) -> clang::SourceLocation {
           return  self.getLocStart();
        })
        .def("getLocEnd", [](const clang::CoroutineBodyStmt& self) -> clang::SourceLocation {
           return  self.getLocEnd();
        })
        //.def("children", []( clang::CoroutineBodyStmt& self) -> llvm::iterator_range<clang::StmtIterator> {
        //   return  self.children();
        //})
    ;

    py::class_<clang::CoreturnStmt, stmt_deleter<clang::CoreturnStmt>::type>(m, "CoreturnStmt" , py::base<clang::Stmt>())
        .def("getKeywordLoc", [](const clang::CoreturnStmt& self) -> clang::SourceLocation {
           return  self.getKeywordLoc();
        })
        .def("getOperand", [](const clang::CoreturnStmt& self) -> clang::Expr * {
           return  self.getOperand();
        })
        .def("getPromiseCall", [](const clang::CoreturnStmt& self) -> clang::Expr * {
           return  self.getPromiseCall();
        })
        .def("getLocStart", [](const clang::CoreturnStmt& self) -> clang::SourceLocation {
           return  self.getLocStart();
        })
        .def("getLocEnd", [](const clang::CoreturnStmt& self) -> clang::SourceLocation {
           return  self.getLocEnd();
        })
        //.def("children", []( clang::CoreturnStmt& self) -> llvm::iterator_range<clang::StmtIterator> {
        //   return  self.children();
        //})
    ;

    py::class_<clang::FriendDecl, decl_deleter<clang::FriendDecl>::type>(m, "FriendDecl" , py::base<clang::Decl>())
        .def("getFriendType", [](const clang::FriendDecl& self) -> clang::TypeSourceInfo * {
           return  self.getFriendType();
        })
        .def("getFriendTypeNumTemplateParameterLists", [](const clang::FriendDecl& self) -> unsigned int {
           return  self.getFriendTypeNumTemplateParameterLists();
        })
        //.def("getFriendTypeTemplateParameterList", [](const clang::FriendDecl& self, unsigned int N) -> clang::TemplateParameterList * {
        //   return  self.getFriendTypeTemplateParameterList(N);
        //})
        .def("getFriendDecl", [](const clang::FriendDecl& self) -> clang::NamedDecl * {
           return  self.getFriendDecl();
        })
        .def("getFriendLoc", [](const clang::FriendDecl& self) -> clang::SourceLocation {
           return  self.getFriendLoc();
        })
        .def("getSourceRange", [](const clang::FriendDecl& self) -> clang::SourceRange {
           return  self.getSourceRange();
        })
    ;
}
