summaryrefslogtreecommitdiff
path: root/libbindgen/src/ir/function.rs
diff options
context:
space:
mode:
Diffstat (limited to 'libbindgen/src/ir/function.rs')
-rw-r--r--libbindgen/src/ir/function.rs13
1 files changed, 9 insertions, 4 deletions
diff --git a/libbindgen/src/ir/function.rs b/libbindgen/src/ir/function.rs
index 5a864cfc..c4c26c62 100644
--- a/libbindgen/src/ir/function.rs
+++ b/libbindgen/src/ir/function.rs
@@ -147,6 +147,7 @@ impl FunctionSig {
};
let mut args: Vec<_> = match cursor.kind() {
CXCursor_FunctionDecl |
+ CXCursor_Constructor |
CXCursor_CXXMethod => {
// For CXCursor_FunctionDecl, cursor.args() is the reliable way
// to get parameter names and types.
@@ -184,10 +185,12 @@ impl FunctionSig {
}
};
- if cursor.kind() == CXCursor_CXXMethod {
- let is_const = cursor.method_is_const();
- let is_virtual = cursor.method_is_virtual();
- let is_static = cursor.method_is_static();
+ let is_method = cursor.kind() == CXCursor_CXXMethod;
+
+ if is_method || cursor.kind() == CXCursor_Constructor {
+ let is_const = is_method && cursor.method_is_const();
+ let is_virtual = is_method && cursor.method_is_virtual();
+ let is_static = is_method && cursor.method_is_static();
if !is_static && !is_virtual {
let class = Item::parse(cursor.semantic_parent(), None, ctx)
.expect("Expected to parse the class");
@@ -240,6 +243,8 @@ impl ClangSubItemParser for Function {
use clangll::*;
match cursor.kind() {
CXCursor_FunctionDecl |
+ CXCursor_Constructor |
+ CXCursor_Destructor |
CXCursor_CXXMethod => {}
_ => return Err(ParseError::Continue),
};