From 6e712b0b336b5c62f2d0d3dd49853b0b9e8295fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Tue, 13 Dec 2016 16:35:28 +0100 Subject: [PATCH 1/2] Use clang-sys bindings instead of ours. I plan to use a dynamically loaded clang-sys library to remove the llvm-stable feature. This is part of the work. --- libbindgen/Cargo.toml | 2 +- libbindgen/src/clang.rs | 147 ++- libbindgen/src/clangll.rs | 1466 ------------------------------ libbindgen/src/ir/annotations.rs | 2 +- libbindgen/src/ir/comp.rs | 6 +- libbindgen/src/ir/context.rs | 14 +- libbindgen/src/ir/enum_ty.rs | 2 +- libbindgen/src/ir/function.rs | 12 +- libbindgen/src/ir/item.rs | 10 +- libbindgen/src/ir/module.rs | 2 +- libbindgen/src/ir/ty.rs | 2 +- libbindgen/src/ir/var.rs | 4 +- libbindgen/src/lib.rs | 10 +- 13 files changed, 104 insertions(+), 1575 deletions(-) delete mode 100644 libbindgen/src/clangll.rs diff --git a/libbindgen/Cargo.toml b/libbindgen/Cargo.toml index 47e8b2827e..1c1b15c381 100644 --- a/libbindgen/Cargo.toml +++ b/libbindgen/Cargo.toml @@ -25,13 +25,13 @@ quasi_codegen = "0.26" [dependencies] cfg-if = "0.1.0" -clang-sys = "0.11.1" lazy_static = "0.1.*" libc = "0.2" rustc-serialize = "0.3.19" syntex_syntax = "0.50" regex = "0.1" cexpr = "0.2" +clang-sys = { version = "0.11.1", features = ["gte_clang_3_6", "gte_clang_3_7", "gte_clang_3_8", "gte_clang_3_9"] } [dependencies.aster] features = ["with-syntex"] diff --git a/libbindgen/src/clang.rs b/libbindgen/src/clang.rs index a81a8cfbda..ad311835f0 100644 --- a/libbindgen/src/clang.rs +++ b/libbindgen/src/clang.rs @@ -1,11 +1,11 @@ //! A higher level Clang API built on top of the generated bindings in the -//! `clangll` module. +//! `clang_sys` module. #![allow(non_upper_case_globals, dead_code)] use cexpr; -use clangll::*; +use clang_sys::*; use std::{mem, ptr, slice}; use std::ffi::{CStr, CString}; use std::fmt; @@ -38,7 +38,7 @@ impl Cursor { /// /// The USR can be used to compare entities across translation units. pub fn usr(&self) -> Option { - let s: String = unsafe { clang_getCursorUSR(self.x) }.into(); + let s = unsafe { cxstring_into_string(clang_getCursorUSR(self.x)) }; if s.is_empty() { None } else { Some(s) } } @@ -56,7 +56,7 @@ impl Cursor { /// Get this cursor's referent's spelling. pub fn spelling(&self) -> String { - unsafe { clang_getCursorSpelling(self.x).into() } + unsafe { cxstring_into_string(clang_getCursorSpelling(self.x)) } } /// Get this cursor's referent's display name. @@ -64,12 +64,12 @@ impl Cursor { /// This is not necessarily a valid identifier. It includes extra /// information, such as parameters for a function, etc. pub fn display_name(&self) -> String { - unsafe { clang_getCursorDisplayName(self.x).into() } + unsafe { cxstring_into_string(clang_getCursorDisplayName(self.x)) } } /// Get the mangled name of this cursor's referent. pub fn mangling(&self) -> String { - unsafe { clang_Cursor_getMangling(self.x).into() } + unsafe { cxstring_into_string(clang_Cursor_getMangling(self.x)) } } /// Get the `Cursor` for this cursor's referent's lexical parent. @@ -186,7 +186,7 @@ impl Cursor { } /// Get the kind of referent this cursor is pointing to. - pub fn kind(&self) -> Enum_CXCursorKind { + pub fn kind(&self) -> CXCursorKind { unsafe { clang_getCursorKind(self.x) } } @@ -238,8 +238,9 @@ impl Cursor { /// Get the raw declaration comment for this referent, if one exists. pub fn raw_comment(&self) -> Option { - let s: String = - unsafe { clang_Cursor_getRawCommentText(self.x).into() }; + let s = unsafe { + cxstring_into_string(clang_Cursor_getRawCommentText(self.x)) + }; if s.is_empty() { None } else { Some(s) } } @@ -312,7 +313,7 @@ impl Cursor { /// Assuming that this cursor's referent is a template declaration, get the /// kind of cursor that would be generated for its specializations. - pub fn template_kind(&self) -> Enum_CXCursorKind { + pub fn template_kind(&self) -> CXCursorKind { unsafe { clang_getTemplateCursorKind(self.x) } } @@ -320,11 +321,11 @@ impl Cursor { /// /// Call the given function on each AST node traversed. pub fn visit(&self, mut visitor: Visitor) - where Visitor: FnMut(Cursor) -> Enum_CXChildVisitResult, + where Visitor: FnMut(Cursor) -> CXChildVisitResult, { unsafe { clang_visitChildren(self.x, - Some(visit_children::), + visit_children::, mem::transmute(&mut visitor)); } } @@ -332,7 +333,7 @@ impl Cursor { /// Returns whether the given location contains a cursor with the given /// kind in the first level of nesting underneath (doesn't look /// recursively). - pub fn contains_cursor(&self, kind: Enum_CXCursorKind) -> bool { + pub fn contains_cursor(&self, kind: CXCursorKind) -> bool { let mut found = false; self.visit(|c| { @@ -422,12 +423,12 @@ impl Cursor { /// Get the linkage kind for this cursor's referent. /// /// This only applies to functions and variables. - pub fn linkage(&self) -> Enum_CXLinkageKind { + pub fn linkage(&self) -> CXLinkageKind { unsafe { clang_getCursorLinkage(self.x) } } /// Get the visibility of this cursor's referent. - pub fn visibility(&self) -> Enum_CXVisibilityKind { + pub fn visibility(&self) -> CXVisibilityKind { unsafe { clang_getCursorVisibility(self.x) } } @@ -469,7 +470,7 @@ impl Cursor { } /// Get the access specifier for this cursor's referent. - pub fn access_specifier(&self) -> Enum_CX_CXXAccessSpecifier { + pub fn access_specifier(&self) -> CX_CXXAccessSpecifier { unsafe { clang_getCXXAccessSpecifier(self.x) } } @@ -508,8 +509,8 @@ impl Cursor { extern "C" fn visit_children(cur: CXCursor, _parent: CXCursor, data: CXClientData) - -> Enum_CXChildVisitResult - where Visitor: FnMut(Cursor) -> Enum_CXChildVisitResult, + -> CXChildVisitResult + where Visitor: FnMut(Cursor) -> CXChildVisitResult, { let func: &mut Visitor = unsafe { mem::transmute(data) }; let child = Cursor { @@ -534,7 +535,7 @@ impl Hash for Cursor { } /// The type of a node in clang's AST. -#[derive(Clone, Hash)] +#[derive(Clone)] pub struct Type { x: CXType, } @@ -579,6 +580,11 @@ pub enum LayoutError { impl ::std::convert::From for LayoutError { fn from(val: i32) -> Self { use self::LayoutError::*; + let val = match CXTypeLayoutError::from_raw(val) { + Some(val) => val, + None => return Unknown, + }; + match val { CXTypeLayoutError_Invalid => Invalid, CXTypeLayoutError_Incomplete => Incomplete, @@ -592,7 +598,7 @@ impl ::std::convert::From for LayoutError { impl Type { /// Get this type's kind. - pub fn kind(&self) -> Enum_CXTypeKind { + pub fn kind(&self) -> CXTypeKind { self.x.kind } @@ -607,7 +613,9 @@ impl Type { /// Get a raw display name for this type. pub fn spelling(&self) -> String { - unsafe { clang_getTypeSpelling(self.x).into() } + unsafe { + cxstring_into_string(clang_getTypeSpelling(self.x)) + } } /// Is this type const qualified? @@ -748,7 +756,7 @@ impl Type { /// Given that this type is a function type, get its calling convention. If /// this is not a function type, `CXCallingConv_Invalid` is returned. - pub fn call_conv(&self) -> Enum_CXCallingConv { + pub fn call_conv(&self) -> CXCallingConv { unsafe { clang_getFunctionTypeCallingConv(self.x) } } @@ -798,7 +806,7 @@ impl Iterator for TypeTemplateArgIterator { type Item = Type; fn next(&mut self) -> Option { if self.index < self.length { - let idx = self.index as c_int; + let idx = self.index as c_uint; self.index += 1; Some(Type { x: unsafe { clang_Type_getTemplateArgumentAsType(self.x, idx) }, @@ -827,7 +835,7 @@ impl SourceLocation { /// location. pub fn location(&self) -> (File, usize, usize, usize) { unsafe { - let mut file = ptr::null_mut(); + let mut file = mem::zeroed(); let mut line = 0; let mut col = 0; let mut off = 0; @@ -866,7 +874,7 @@ pub struct Comment { impl Comment { /// What kind of comment is this? - pub fn kind(&self) -> Enum_CXCommentKind { + pub fn kind(&self) -> CXCommentKind { unsafe { clang_Comment_getKind(self.x) } } @@ -882,7 +890,9 @@ impl Comment { /// Given that this comment is the start or end of an HTML tag, get its tag /// name. pub fn get_tag_name(&self) -> String { - unsafe { clang_HTMLTagComment_getTagName(self.x).into() } + unsafe { + cxstring_into_string(clang_HTMLTagComment_getTagName(self.x)) + } } /// Given that this comment is an HTML start tag, get its attributes. @@ -940,10 +950,12 @@ impl Iterator for CommentAttributesIterator { self.index += 1; Some(CommentAttribute { name: unsafe { - clang_HTMLStartTag_getAttrName(self.x, idx).into() + cxstring_into_string( + clang_HTMLStartTag_getAttrName(self.x, idx)) }, value: unsafe { - clang_HTMLStartTag_getAttrValue(self.x, idx).into() + cxstring_into_string( + clang_HTMLStartTag_getAttrValue(self.x, idx)) }, }) } else { @@ -963,21 +975,21 @@ impl File { if self.x.is_null() { return None; } - unsafe { Some(clang_getFileName(self.x).into()) } + Some(unsafe { + cxstring_into_string(clang_getFileName(self.x)) + }) } } -impl Into for CXString { - fn into(self) -> String { - if self.data.is_null() { - return "".to_owned(); - } - unsafe { - let c_str = CStr::from_ptr(clang_getCString(self) as *const _); - let ret = c_str.to_string_lossy().into_owned(); - clang_disposeString(self); - ret - } +fn cxstring_into_string(s: CXString) -> String { + if s.data.is_null() { + return "".to_owned(); + } + unsafe { + let c_str = CStr::from_ptr(clang_getCString(s) as *const _); + let ret = c_str.to_string_lossy().into_owned(); + clang_disposeString(s); + ret } } @@ -1043,14 +1055,14 @@ impl TranslationUnit { file: &str, cmd_args: &[String], unsaved: &[UnsavedFile], - opts: ::libc::c_uint) + opts: CXTranslationUnit_Flags) -> Option { let fname = CString::new(file).unwrap(); let _c_args: Vec = cmd_args.iter().map(|s| CString::new(s.clone()).unwrap()).collect(); let c_args: Vec<*const c_char> = _c_args.iter().map(|s| s.as_ptr()).collect(); - let mut c_unsaved: Vec = + let mut c_unsaved: Vec = unsaved.iter().map(|f| f.x).collect(); let tu = unsafe { clang_parseTranslationUnit(ix.x, @@ -1070,20 +1082,6 @@ impl TranslationUnit { } } - /// Reparse this translation unit, maybe because the file changed on disk or - /// something like that. - pub fn reparse(&self, unsaved: &[UnsavedFile], opts: usize) -> bool { - let mut c_unsaved: Vec = - unsaved.iter().map(|f| f.x).collect(); - - unsafe { - clang_reparseTranslationUnit(self.x, - c_unsaved.len() as c_uint, - c_unsaved.as_mut_ptr(), - opts as c_uint) == 0 - } - } - /// Get the Clang diagnostic information associated with this translation /// unit. pub fn diags(&self) -> Vec { @@ -1130,7 +1128,8 @@ impl TranslationUnit { num_tokens as usize); for &token in token_array.iter() { let kind = clang_getTokenKind(token); - let spelling = clang_getTokenSpelling(self.x, token).into(); + let spelling = cxstring_into_string( + clang_getTokenSpelling(self.x, token)); tokens.push(Token { kind: kind, @@ -1187,7 +1186,7 @@ impl TranslationUnit { // NB: cexpr is not too happy about comments inside // expressions, so we strip them down here. CXToken_Comment => return None, - _ => panic!("Found unexpected token kind: {}", token.kind), + _ => panic!("Found unexpected token kind: {:?}", token.kind), }; Some(token::Token { @@ -1214,19 +1213,17 @@ pub struct Diagnostic { } impl Diagnostic { - /// Get the default diagnostic display option bit flags. - pub fn default_opts() -> usize { - unsafe { clang_defaultDiagnosticDisplayOptions() as usize } - } - /// Format this diagnostic message as a string, using the given option bit /// flags. - pub fn format(&self, opts: usize) -> String { - unsafe { clang_formatDiagnostic(self.x, opts as c_uint).into() } + pub fn format(&self) -> String { + unsafe { + let opts = clang_defaultDiagnosticDisplayOptions(); + cxstring_into_string( + clang_formatDiagnostic(self.x, opts)) } } /// What is the severity of this diagnostic message? - pub fn severity(&self) -> Enum_CXDiagnosticSeverity { + pub fn severity(&self) -> CXDiagnosticSeverity { unsafe { clang_getDiagnosticSeverity(self.x) } } } @@ -1242,7 +1239,7 @@ impl Drop for Diagnostic { /// A file which has not been saved to disk. pub struct UnsavedFile { - x: Struct_CXUnsavedFile, + x: CXUnsavedFile, name: CString, contents: CString, } @@ -1252,7 +1249,7 @@ impl UnsavedFile { pub fn new(name: &str, contents: &str) -> UnsavedFile { let name = CString::new(name).unwrap(); let contents = CString::new(contents).unwrap(); - let x = Struct_CXUnsavedFile { + let x = CXUnsavedFile { Filename: name.as_ptr(), Contents: contents.as_ptr(), Length: contents.as_bytes().len() as c_ulong, @@ -1266,17 +1263,17 @@ impl UnsavedFile { } /// Convert a cursor kind into a static string. -pub fn kind_to_str(x: Enum_CXCursorKind) -> String { - unsafe { clang_getCursorKindSpelling(x) }.into() +pub fn kind_to_str(x: CXCursorKind) -> String { + unsafe { cxstring_into_string(clang_getCursorKindSpelling(x)) } } /// Convert a type kind to a static string. -pub fn type_to_str(x: Enum_CXTypeKind) -> String { - unsafe { clang_getTypeKindSpelling(x).into() } +pub fn type_to_str(x: CXTypeKind) -> String { + unsafe { cxstring_into_string(clang_getTypeKindSpelling(x)) } } /// Dump the Clang AST to stdout for debugging purposes. -pub fn ast_dump(c: &Cursor, depth: isize) -> Enum_CXVisitorResult { +pub fn ast_dump(c: &Cursor, depth: isize) -> CXChildVisitResult { fn print_indent(depth: isize, s: &str) { for _ in 0..depth { print!("\t"); @@ -1300,7 +1297,7 @@ pub fn ast_dump(c: &Cursor, depth: isize) -> Enum_CXVisitorResult { /// Try to extract the clang version to a string pub fn extract_clang_version() -> String { - unsafe { clang_getClangVersion().into() } + unsafe { cxstring_into_string(clang_getClangVersion()) } } /// A wrapper for the result of evaluating an expression. @@ -1357,7 +1354,7 @@ impl EvalResult { }) } - fn kind(&self) -> Enum_CXEvalResultKind { + fn kind(&self) -> CXEvalResultKind { unsafe { clang_EvalResult_getKind(self.x) } } diff --git a/libbindgen/src/clangll.rs b/libbindgen/src/clangll.rs deleted file mode 100644 index e37baf257a..0000000000 --- a/libbindgen/src/clangll.rs +++ /dev/null @@ -1,1466 +0,0 @@ -/* automatically generated by rust-bindgen */ - -#![allow(non_camel_case_types)] -#![allow(dead_code)] -#![allow(unused_attributes)] -#![allow(non_snake_case)] -#![allow(non_upper_case_globals)] -#![cfg_attr(rustfmt, rustfmt_skip)] - -use ::std::os::raw::{c_char, c_int, c_long, c_longlong, c_uint, c_ulong, c_ulonglong, c_void}; - -#[cfg(not(feature = "llvm_stable"))] -use std::os::raw::c_double; - - -pub type CXEvalResult = *mut c_void; -pub type Enum_CXEvalResultKind = c_uint; - -pub const CXEval_Int: c_uint = 1; -pub const CXEval_Float: c_uint = 2; -pub const CXEval_ObjCStrLiteral: c_uint = 3; -pub const CXEval_StrLiteral: c_uint = 4; -pub const CXEval_CFStr: c_uint = 5; -pub const CXEval_Other: c_uint = 6; -pub const CXEval_UnExposed: c_uint = 0; - -pub type ptrdiff_t = c_long; -pub type size_t = c_ulong; -pub type wchar_t = c_int; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct CXString { - pub data: *const c_void, - pub private_flags: c_uint, -} -pub type CXIndex = *mut c_void; -pub enum Struct_CXTranslationUnitImpl { } -pub type CXTranslationUnit = *mut Struct_CXTranslationUnitImpl; -pub type CXClientData = *mut c_void; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct Struct_CXUnsavedFile { - pub Filename: *const c_char, - pub Contents: *const c_char, - pub Length: c_ulong, -} -pub type Enum_CXAvailabilityKind = c_uint; -pub const CXAvailability_Available: c_uint = 0; -pub const CXAvailability_Deprecated: c_uint = 1; -pub const CXAvailability_NotAvailable: c_uint = 2; -pub const CXAvailability_NotAccessible: c_uint = 3; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct Struct_CXVersion { - pub Major: c_int, - pub Minor: c_int, - pub Subminor: c_int, -} -pub type CXVersion = Struct_CXVersion; -pub type CXGlobalOptFlags = c_uint; -pub const CXGlobalOpt_None: c_uint = 0; -pub const CXGlobalOpt_ThreadBackgroundPriorityForIndexing: c_uint = - 1; -pub const CXGlobalOpt_ThreadBackgroundPriorityForEditing: c_uint = 2; -pub const CXGlobalOpt_ThreadBackgroundPriorityForAll: c_uint = 3; -pub type CXFile = *mut c_void; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct CXFileUniqueID { - pub data: [c_ulonglong; 3], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct CXSourceLocation { - pub ptr_data: [*const c_void; 2], - pub int_data: c_uint, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct CXSourceRange { - pub ptr_data: [*const c_void; 2], - pub begin_int_data: c_uint, - pub end_int_data: c_uint, -} -pub type Enum_CXDiagnosticSeverity = c_uint; -pub const CXDiagnostic_Ignored: c_uint = 0; -pub const CXDiagnostic_Note: c_uint = 1; -pub const CXDiagnostic_Warning: c_uint = 2; -pub const CXDiagnostic_Error: c_uint = 3; -pub const CXDiagnostic_Fatal: c_uint = 4; -pub type CXDiagnostic = *mut c_void; -pub type CXDiagnosticSet = *mut c_void; -pub type Enum_CXLoadDiag_Error = c_uint; -pub const CXLoadDiag_None: c_uint = 0; -pub const CXLoadDiag_Unknown: c_uint = 1; -pub const CXLoadDiag_CannotLoad: c_uint = 2; -pub const CXLoadDiag_InvalidFile: c_uint = 3; -pub type Enum_CXDiagnosticDisplayOptions = c_uint; -pub const CXDiagnostic_DisplaySourceLocation: c_uint = 1; -pub const CXDiagnostic_DisplayColumn: c_uint = 2; -pub const CXDiagnostic_DisplaySourceRanges: c_uint = 4; -pub const CXDiagnostic_DisplayOption: c_uint = 8; -pub const CXDiagnostic_DisplayCategoryId: c_uint = 16; -pub const CXDiagnostic_DisplayCategoryName: c_uint = 32; -pub type Enum_CXTranslationUnit_Flags = c_uint; -pub const CXTranslationUnit_None: c_uint = 0; -pub const CXTranslationUnit_DetailedPreprocessingRecord: c_uint = 1; -pub const CXTranslationUnit_Incomplete: c_uint = 2; -pub const CXTranslationUnit_PrecompiledPreamble: c_uint = 4; -pub const CXTranslationUnit_CacheCompletionResults: c_uint = 8; -pub const CXTranslationUnit_ForSerialization: c_uint = 16; -pub const CXTranslationUnit_CXXChainedPCH: c_uint = 32; -pub const CXTranslationUnit_SkipFunctionBodies: c_uint = 64; -pub const CXTranslationUnit_IncludeBriefCommentsInCodeCompletion: - c_uint = - 128; -pub type Enum_CXSaveTranslationUnit_Flags = c_uint; -pub const CXSaveTranslationUnit_None: c_uint = 0; -pub type Enum_CXSaveError = c_uint; -pub const CXSaveError_None: c_uint = 0; -pub const CXSaveError_Unknown: c_uint = 1; -pub const CXSaveError_TranslationErrors: c_uint = 2; -pub const CXSaveError_InvalidTU: c_uint = 3; -pub type Enum_CXReparse_Flags = c_uint; -pub const CXReparse_None: c_uint = 0; -pub type Enum_CXTUResourceUsageKind = c_uint; -pub const CXTUResourceUsage_AST: c_uint = 1; -pub const CXTUResourceUsage_Identifiers: c_uint = 2; -pub const CXTUResourceUsage_Selectors: c_uint = 3; -pub const CXTUResourceUsage_GlobalCompletionResults: c_uint = 4; -pub const CXTUResourceUsage_SourceManagerContentCache: c_uint = 5; -pub const CXTUResourceUsage_AST_SideTables: c_uint = 6; -pub const CXTUResourceUsage_SourceManager_Membuffer_Malloc: c_uint = - 7; -pub const CXTUResourceUsage_SourceManager_Membuffer_MMap: c_uint = 8; -pub const CXTUResourceUsage_ExternalASTSource_Membuffer_Malloc: - c_uint = - 9; -pub const CXTUResourceUsage_ExternalASTSource_Membuffer_MMap: c_uint - = - 10; -pub const CXTUResourceUsage_Preprocessor: c_uint = 11; -pub const CXTUResourceUsage_PreprocessingRecord: c_uint = 12; -pub const CXTUResourceUsage_SourceManager_DataStructures: c_uint = - 13; -pub const CXTUResourceUsage_Preprocessor_HeaderSearch: c_uint = 14; -pub const CXTUResourceUsage_MEMORY_IN_BYTES_BEGIN: c_uint = 1; -pub const CXTUResourceUsage_MEMORY_IN_BYTES_END: c_uint = 14; -pub const CXTUResourceUsage_First: c_uint = 1; -pub const CXTUResourceUsage_Last: c_uint = 14; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct Struct_CXTUResourceUsageEntry { - pub kind: Enum_CXTUResourceUsageKind, - pub amount: c_ulong, -} -pub type CXTUResourceUsageEntry = Struct_CXTUResourceUsageEntry; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct Struct_CXTUResourceUsage { - pub data: *mut c_void, - pub numEntries: c_uint, - pub entries: *mut CXTUResourceUsageEntry, -} -pub type CXTUResourceUsage = Struct_CXTUResourceUsage; -pub type Enum_CXCursorKind = c_uint; -pub const CXCursor_UnexposedDecl: c_uint = 1; -pub const CXCursor_StructDecl: c_uint = 2; -pub const CXCursor_UnionDecl: c_uint = 3; -pub const CXCursor_ClassDecl: c_uint = 4; -pub const CXCursor_EnumDecl: c_uint = 5; -pub const CXCursor_FieldDecl: c_uint = 6; -pub const CXCursor_EnumConstantDecl: c_uint = 7; -pub const CXCursor_FunctionDecl: c_uint = 8; -pub const CXCursor_VarDecl: c_uint = 9; -pub const CXCursor_ParmDecl: c_uint = 10; -pub const CXCursor_ObjCInterfaceDecl: c_uint = 11; -pub const CXCursor_ObjCCategoryDecl: c_uint = 12; -pub const CXCursor_ObjCProtocolDecl: c_uint = 13; -pub const CXCursor_ObjCPropertyDecl: c_uint = 14; -pub const CXCursor_ObjCIvarDecl: c_uint = 15; -pub const CXCursor_ObjCInstanceMethodDecl: c_uint = 16; -pub const CXCursor_ObjCClassMethodDecl: c_uint = 17; -pub const CXCursor_ObjCImplementationDecl: c_uint = 18; -pub const CXCursor_ObjCCategoryImplDecl: c_uint = 19; -pub const CXCursor_TypedefDecl: c_uint = 20; -pub const CXCursor_CXXMethod: c_uint = 21; -pub const CXCursor_Namespace: c_uint = 22; -pub const CXCursor_LinkageSpec: c_uint = 23; -pub const CXCursor_Constructor: c_uint = 24; -pub const CXCursor_Destructor: c_uint = 25; -pub const CXCursor_ConversionFunction: c_uint = 26; -pub const CXCursor_TemplateTypeParameter: c_uint = 27; -pub const CXCursor_NonTypeTemplateParameter: c_uint = 28; -pub const CXCursor_TemplateTemplateParameter: c_uint = 29; -pub const CXCursor_FunctionTemplate: c_uint = 30; -pub const CXCursor_ClassTemplate: c_uint = 31; -pub const CXCursor_ClassTemplatePartialSpecialization: c_uint = 32; -pub const CXCursor_NamespaceAlias: c_uint = 33; -pub const CXCursor_UsingDirective: c_uint = 34; -pub const CXCursor_UsingDeclaration: c_uint = 35; -pub const CXCursor_TypeAliasDecl: c_uint = 36; -pub const CXCursor_ObjCSynthesizeDecl: c_uint = 37; -pub const CXCursor_ObjCDynamicDecl: c_uint = 38; -pub const CXCursor_CXXAccessSpecifier: c_uint = 39; -pub const CXCursor_FirstDecl: c_uint = 1; -pub const CXCursor_LastDecl: c_uint = 39; -pub const CXCursor_FirstRef: c_uint = 40; -pub const CXCursor_ObjCSuperClassRef: c_uint = 40; -pub const CXCursor_ObjCProtocolRef: c_uint = 41; -pub const CXCursor_ObjCClassRef: c_uint = 42; -pub const CXCursor_TypeRef: c_uint = 43; -pub const CXCursor_CXXBaseSpecifier: c_uint = 44; -pub const CXCursor_TemplateRef: c_uint = 45; -pub const CXCursor_NamespaceRef: c_uint = 46; -pub const CXCursor_MemberRef: c_uint = 47; -pub const CXCursor_LabelRef: c_uint = 48; -pub const CXCursor_OverloadedDeclRef: c_uint = 49; -pub const CXCursor_VariableRef: c_uint = 50; -pub const CXCursor_LastRef: c_uint = 50; -pub const CXCursor_FirstInvalid: c_uint = 70; -pub const CXCursor_InvalidFile: c_uint = 70; -pub const CXCursor_NoDeclFound: c_uint = 71; -pub const CXCursor_NotImplemented: c_uint = 72; -pub const CXCursor_InvalidCode: c_uint = 73; -pub const CXCursor_LastInvalid: c_uint = 73; -pub const CXCursor_FirstExpr: c_uint = 100; -pub const CXCursor_UnexposedExpr: c_uint = 100; -pub const CXCursor_DeclRefExpr: c_uint = 101; -pub const CXCursor_MemberRefExpr: c_uint = 102; -pub const CXCursor_CallExpr: c_uint = 103; -pub const CXCursor_ObjCMessageExpr: c_uint = 104; -pub const CXCursor_BlockExpr: c_uint = 105; -pub const CXCursor_IntegerLiteral: c_uint = 106; -pub const CXCursor_FloatingLiteral: c_uint = 107; -pub const CXCursor_ImaginaryLiteral: c_uint = 108; -pub const CXCursor_StringLiteral: c_uint = 109; -pub const CXCursor_CharacterLiteral: c_uint = 110; -pub const CXCursor_ParenExpr: c_uint = 111; -pub const CXCursor_UnaryOperator: c_uint = 112; -pub const CXCursor_ArraySubscriptExpr: c_uint = 113; -pub const CXCursor_BinaryOperator: c_uint = 114; -pub const CXCursor_CompoundAssignOperator: c_uint = 115; -pub const CXCursor_ConditionalOperator: c_uint = 116; -pub const CXCursor_CStyleCastExpr: c_uint = 117; -pub const CXCursor_CompoundLiteralExpr: c_uint = 118; -pub const CXCursor_InitListExpr: c_uint = 119; -pub const CXCursor_AddrLabelExpr: c_uint = 120; -pub const CXCursor_StmtExpr: c_uint = 121; -pub const CXCursor_GenericSelectionExpr: c_uint = 122; -pub const CXCursor_GNUNullExpr: c_uint = 123; -pub const CXCursor_CXXStaticCastExpr: c_uint = 124; -pub const CXCursor_CXXDynamicCastExpr: c_uint = 125; -pub const CXCursor_CXXReinterpretCastExpr: c_uint = 126; -pub const CXCursor_CXXConstCastExpr: c_uint = 127; -pub const CXCursor_CXXFunctionalCastExpr: c_uint = 128; -pub const CXCursor_CXXTypeidExpr: c_uint = 129; -pub const CXCursor_CXXBoolLiteralExpr: c_uint = 130; -pub const CXCursor_CXXNullPtrLiteralExpr: c_uint = 131; -pub const CXCursor_CXXThisExpr: c_uint = 132; -pub const CXCursor_CXXThrowExpr: c_uint = 133; -pub const CXCursor_CXXNewExpr: c_uint = 134; -pub const CXCursor_CXXDeleteExpr: c_uint = 135; -pub const CXCursor_UnaryExpr: c_uint = 136; -pub const CXCursor_ObjCStringLiteral: c_uint = 137; -pub const CXCursor_ObjCEncodeExpr: c_uint = 138; -pub const CXCursor_ObjCSelectorExpr: c_uint = 139; -pub const CXCursor_ObjCProtocolExpr: c_uint = 140; -pub const CXCursor_ObjCBridgedCastExpr: c_uint = 141; -pub const CXCursor_PackExpansionExpr: c_uint = 142; -pub const CXCursor_SizeOfPackExpr: c_uint = 143; -pub const CXCursor_LambdaExpr: c_uint = 144; -pub const CXCursor_ObjCBoolLiteralExpr: c_uint = 145; -pub const CXCursor_ObjCSelfExpr: c_uint = 146; -pub const CXCursor_LastExpr: c_uint = 146; -pub const CXCursor_FirstStmt: c_uint = 200; -pub const CXCursor_UnexposedStmt: c_uint = 200; -pub const CXCursor_LabelStmt: c_uint = 201; -pub const CXCursor_CompoundStmt: c_uint = 202; -pub const CXCursor_CaseStmt: c_uint = 203; -pub const CXCursor_DefaultStmt: c_uint = 204; -pub const CXCursor_IfStmt: c_uint = 205; -pub const CXCursor_SwitchStmt: c_uint = 206; -pub const CXCursor_WhileStmt: c_uint = 207; -pub const CXCursor_DoStmt: c_uint = 208; -pub const CXCursor_ForStmt: c_uint = 209; -pub const CXCursor_GotoStmt: c_uint = 210; -pub const CXCursor_IndirectGotoStmt: c_uint = 211; -pub const CXCursor_ContinueStmt: c_uint = 212; -pub const CXCursor_BreakStmt: c_uint = 213; -pub const CXCursor_ReturnStmt: c_uint = 214; -pub const CXCursor_GCCAsmStmt: c_uint = 215; -pub const CXCursor_AsmStmt: c_uint = 215; -pub const CXCursor_ObjCAtTryStmt: c_uint = 216; -pub const CXCursor_ObjCAtCatchStmt: c_uint = 217; -pub const CXCursor_ObjCAtFinallyStmt: c_uint = 218; -pub const CXCursor_ObjCAtThrowStmt: c_uint = 219; -pub const CXCursor_ObjCAtSynchronizedStmt: c_uint = 220; -pub const CXCursor_ObjCAutoreleasePoolStmt: c_uint = 221; -pub const CXCursor_ObjCForCollectionStmt: c_uint = 222; -pub const CXCursor_CXXCatchStmt: c_uint = 223; -pub const CXCursor_CXXTryStmt: c_uint = 224; -pub const CXCursor_CXXForRangeStmt: c_uint = 225; -pub const CXCursor_SEHTryStmt: c_uint = 226; -pub const CXCursor_SEHExceptStmt: c_uint = 227; -pub const CXCursor_SEHFinallyStmt: c_uint = 228; -pub const CXCursor_MSAsmStmt: c_uint = 229; -pub const CXCursor_NullStmt: c_uint = 230; -pub const CXCursor_DeclStmt: c_uint = 231; -pub const CXCursor_OMPParallelDirective: c_uint = 232; -pub const CXCursor_LastStmt: c_uint = 232; -pub const CXCursor_TranslationUnit: c_uint = 300; -pub const CXCursor_FirstAttr: c_uint = 400; -pub const CXCursor_UnexposedAttr: c_uint = 400; -pub const CXCursor_IBActionAttr: c_uint = 401; -pub const CXCursor_IBOutletAttr: c_uint = 402; -pub const CXCursor_IBOutletCollectionAttr: c_uint = 403; -pub const CXCursor_CXXFinalAttr: c_uint = 404; -pub const CXCursor_CXXOverrideAttr: c_uint = 405; -pub const CXCursor_AnnotateAttr: c_uint = 406; -pub const CXCursor_AsmLabelAttr: c_uint = 407; -pub const CXCursor_PackedAttr: c_uint = 408; -pub const CXCursor_LastAttr: c_uint = 408; -pub const CXCursor_PreprocessingDirective: c_uint = 500; -pub const CXCursor_MacroDefinition: c_uint = 501; -pub const CXCursor_MacroExpansion: c_uint = 502; -pub const CXCursor_MacroInstantiation: c_uint = 502; -pub const CXCursor_InclusionDirective: c_uint = 503; -pub const CXCursor_FirstPreprocessing: c_uint = 500; -pub const CXCursor_LastPreprocessing: c_uint = 503; -pub const CXCursor_ModuleImportDecl: c_uint = 600; -pub const CXCursor_TypeAliasTemplateDecl: c_uint = 601; -pub const CXCursor_StaticAssert: c_uint = 602; -pub const CXCursor_FirstExtraDecl: c_uint = 600; -pub const CXCursor_LastExtraDecl: c_uint = 602; -pub const CXCursor_OverloadCandidate: c_uint = 700; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct CXCursor { - pub kind: Enum_CXCursorKind, - pub xdata: c_int, - pub data: [*const c_void; 3], -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct CXComment { - pub ASTNode: *const c_void, - pub TranslationUnit: CXTranslationUnit, -} -pub type Enum_CXLinkageKind = ::libc::c_uint; -pub const CXLinkage_Invalid: ::libc::c_uint = 0; -pub const CXLinkage_NoLinkage: ::libc::c_uint = 1; -pub const CXLinkage_Internal: ::libc::c_uint = 2; -pub const CXLinkage_UniqueExternal: ::libc::c_uint = 3; -pub const CXLinkage_External: ::libc::c_uint = 4; -pub type Enum_CXVisibilityKind = ::libc::c_uint; -pub const CXVisibility_Invalid: ::libc::c_uint = 0; -pub const CXVisibility_Hidden: ::libc::c_uint = 1; -pub const CXVisibility_Protected: ::libc::c_uint = 2; -pub const CXVisibility_Default: ::libc::c_uint = 3; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct Struct_CXPlatformAvailability { - pub Platform: CXString, - pub Introduced: CXVersion, - pub Deprecated: CXVersion, - pub Obsoleted: CXVersion, - pub Unavailable: c_int, - pub Message: CXString, -} -pub type CXPlatformAvailability = Struct_CXPlatformAvailability; -pub type Enum_CXLanguageKind = c_uint; -pub const CXLanguage_Invalid: c_uint = 0; -pub const CXLanguage_C: c_uint = 1; -pub const CXLanguage_ObjC: c_uint = 2; -pub const CXLanguage_CPlusPlus: c_uint = 3; -pub enum Struct_CXCursorSetImpl { } -pub type CXCursorSet = *mut Struct_CXCursorSetImpl; -pub type Enum_CXTypeKind = c_uint; -pub const CXType_Invalid: c_uint = 0; -pub const CXType_Unexposed: c_uint = 1; -pub const CXType_Void: c_uint = 2; -pub const CXType_Bool: c_uint = 3; -pub const CXType_Char_U: c_uint = 4; -pub const CXType_UChar: c_uint = 5; -pub const CXType_Char16: c_uint = 6; -pub const CXType_Char32: c_uint = 7; -pub const CXType_UShort: c_uint = 8; -pub const CXType_UInt: c_uint = 9; -pub const CXType_ULong: c_uint = 10; -pub const CXType_ULongLong: c_uint = 11; -pub const CXType_UInt128: c_uint = 12; -pub const CXType_Char_S: c_uint = 13; -pub const CXType_SChar: c_uint = 14; -pub const CXType_WChar: c_uint = 15; -pub const CXType_Short: c_uint = 16; -pub const CXType_Int: c_uint = 17; -pub const CXType_Long: c_uint = 18; -pub const CXType_LongLong: c_uint = 19; -pub const CXType_Int128: c_uint = 20; -pub const CXType_Float: c_uint = 21; -pub const CXType_Double: c_uint = 22; -pub const CXType_LongDouble: c_uint = 23; -pub const CXType_NullPtr: c_uint = 24; -pub const CXType_Overload: c_uint = 25; -pub const CXType_Dependent: c_uint = 26; -pub const CXType_ObjCId: c_uint = 27; -pub const CXType_ObjCClass: c_uint = 28; -pub const CXType_ObjCSel: c_uint = 29; -pub const CXType_Float128: c_uint = 30; -pub const CXType_FirstBuiltin: c_uint = 2; -pub const CXType_LastBuiltin: c_uint = 29; -pub const CXType_Complex: c_uint = 100; -pub const CXType_Pointer: c_uint = 101; -pub const CXType_BlockPointer: c_uint = 102; -pub const CXType_LValueReference: c_uint = 103; -pub const CXType_RValueReference: c_uint = 104; -pub const CXType_Record: c_uint = 105; -pub const CXType_Enum: c_uint = 106; -pub const CXType_Typedef: c_uint = 107; -pub const CXType_ObjCInterface: c_uint = 108; -pub const CXType_ObjCObjectPointer: c_uint = 109; -pub const CXType_FunctionNoProto: c_uint = 110; -pub const CXType_FunctionProto: c_uint = 111; -pub const CXType_ConstantArray: c_uint = 112; -pub const CXType_Vector: c_uint = 113; -pub const CXType_IncompleteArray: c_uint = 114; -pub const CXType_VariableArray: c_uint = 115; -pub const CXType_DependentSizedArray: c_uint = 116; -pub const CXType_MemberPointer: c_uint = 117; -#[cfg(not(feature="llvm_stable"))] -pub const CXType_Auto: c_uint = 118; -#[cfg(not(feature="llvm_stable"))] -pub const CXType_Elaborated: c_uint = 119; -pub type Enum_CXCallingConv = c_uint; -pub const CXCallingConv_Default: c_uint = 0; -pub const CXCallingConv_C: c_uint = 1; -pub const CXCallingConv_X86StdCall: c_uint = 2; -pub const CXCallingConv_X86FastCall: c_uint = 3; -pub const CXCallingConv_X86ThisCall: c_uint = 4; -pub const CXCallingConv_X86Pascal: c_uint = 5; -pub const CXCallingConv_AAPCS: c_uint = 6; -pub const CXCallingConv_AAPCS_VFP: c_uint = 7; -pub const CXCallingConv_PnaclCall: c_uint = 8; -pub const CXCallingConv_IntelOclBicc: c_uint = 9; -pub const CXCallingConv_X86_64Win64: c_uint = 10; -pub const CXCallingConv_X86_64SysV: c_uint = 11; -pub const CXCallingConv_Invalid: c_uint = 100; -pub const CXCallingConv_Unexposed: c_uint = 200; -#[repr(C)] -#[derive(Copy, Clone, Hash)] -pub struct CXType { - pub kind: Enum_CXTypeKind, - pub data: [*mut c_void; 2], -} -pub type Enum_CXTypeLayoutError = c_int; -pub const CXTypeLayoutError_Invalid: c_int = -1; -pub const CXTypeLayoutError_Incomplete: c_int = -2; -pub const CXTypeLayoutError_Dependent: c_int = -3; -pub const CXTypeLayoutError_NotConstantSize: c_int = -4; -pub const CXTypeLayoutError_InvalidFieldName: c_int = -5; -pub type Enum_CXRefQualifierKind = c_uint; -pub const CXRefQualifier_None: c_uint = 0; -pub const CXRefQualifier_LValue: c_uint = 1; -pub const CXRefQualifier_RValue: c_uint = 2; -pub type Enum_CX_CXXAccessSpecifier = c_uint; -pub const CX_CXXInvalidAccessSpecifier: c_uint = 0; -pub const CX_CXXPublic: c_uint = 1; -pub const CX_CXXProtected: c_uint = 2; -pub const CX_CXXPrivate: c_uint = 3; -pub type Enum_CXChildVisitResult = c_uint; -pub const CXChildVisit_Break: c_uint = 0; -pub const CXChildVisit_Continue: c_uint = 1; -pub const CXChildVisit_Recurse: c_uint = 2; -pub type CXCursorVisitor = - ::std::option::Option Enum_CXChildVisitResult>; -pub type CXObjCPropertyAttrKind = c_uint; -pub const CXObjCPropertyAttr_noattr: c_uint = 0; -pub const CXObjCPropertyAttr_readonly: c_uint = 1; -pub const CXObjCPropertyAttr_getter: c_uint = 2; -pub const CXObjCPropertyAttr_assign: c_uint = 4; -pub const CXObjCPropertyAttr_readwrite: c_uint = 8; -pub const CXObjCPropertyAttr_retain: c_uint = 16; -pub const CXObjCPropertyAttr_copy: c_uint = 32; -pub const CXObjCPropertyAttr_nonatomic: c_uint = 64; -pub const CXObjCPropertyAttr_setter: c_uint = 128; -pub const CXObjCPropertyAttr_atomic: c_uint = 256; -pub const CXObjCPropertyAttr_weak: c_uint = 512; -pub const CXObjCPropertyAttr_strong: c_uint = 1024; -pub const CXObjCPropertyAttr_unsafe_unretained: c_uint = 2048; -pub type CXObjCDeclQualifierKind = c_uint; -pub const CXObjCDeclQualifier_None: c_uint = 0; -pub const CXObjCDeclQualifier_In: c_uint = 1; -pub const CXObjCDeclQualifier_Inout: c_uint = 2; -pub const CXObjCDeclQualifier_Out: c_uint = 4; -pub const CXObjCDeclQualifier_Bycopy: c_uint = 8; -pub const CXObjCDeclQualifier_Byref: c_uint = 16; -pub const CXObjCDeclQualifier_Oneway: c_uint = 32; -pub type CXModule = *mut c_void; -pub type Enum_CXCommentKind = c_uint; -pub const CXComment_Null: c_uint = 0; -pub const CXComment_Text: c_uint = 1; -pub const CXComment_InlineCommand: c_uint = 2; -pub const CXComment_HTMLStartTag: c_uint = 3; -pub const CXComment_HTMLEndTag: c_uint = 4; -pub const CXComment_Paragraph: c_uint = 5; -pub const CXComment_BlockCommand: c_uint = 6; -pub const CXComment_ParamCommand: c_uint = 7; -pub const CXComment_TParamCommand: c_uint = 8; -pub const CXComment_VerbatimBlockCommand: c_uint = 9; -pub const CXComment_VerbatimBlockLine: c_uint = 10; -pub const CXComment_VerbatimLine: c_uint = 11; -pub const CXComment_FullComment: c_uint = 12; -pub type Enum_CXCommentInlineCommandRenderKind = c_uint; -pub const CXCommentInlineCommandRenderKind_Normal: c_uint = 0; -pub const CXCommentInlineCommandRenderKind_Bold: c_uint = 1; -pub const CXCommentInlineCommandRenderKind_Monospaced: c_uint = 2; -pub const CXCommentInlineCommandRenderKind_Emphasized: c_uint = 3; -pub type Enum_CXCommentParamPassDirection = c_uint; -pub const CXCommentParamPassDirection_In: c_uint = 0; -pub const CXCommentParamPassDirection_Out: c_uint = 1; -pub const CXCommentParamPassDirection_InOut: c_uint = 2; -pub type Enum_CXNameRefFlags = c_uint; -pub const CXNameRange_WantQualifier: c_uint = 1; -pub const CXNameRange_WantTemplateArgs: c_uint = 2; -pub const CXNameRange_WantSinglePiece: c_uint = 4; -pub type Enum_CXTokenKind = c_uint; -pub const CXToken_Punctuation: c_uint = 0; -pub const CXToken_Keyword: c_uint = 1; -pub const CXToken_Identifier: c_uint = 2; -pub const CXToken_Literal: c_uint = 3; -pub const CXToken_Comment: c_uint = 4; -pub type CXTokenKind = Enum_CXTokenKind; -pub type Enum_CXTemplateArgumentKind = c_uint; -pub const CXTemplateArgumentKind_Null: c_uint = 0; -pub const CXTemplateArgumentKind_Type: c_uint = 1; -pub const CXTemplateArgumentKind_Declaration: c_uint = 2; -pub const CXTemplateArgumentKind_NullPtr: c_uint = 3; -pub const CXTemplateArgumentKind_Integral: c_uint = 4; -pub const CXTemplateArgumentKind_Template: c_uint = 5; -pub const CXTemplateArgumentKind_TemplateExpansion: c_uint = 6; -pub const CXTemplateArgumentKind_Expression: c_uint = 7; -pub const CXTemplateArgumentKind_Pack: c_uint = 8; -pub const CXTemplateArgumentKind_Invalid: c_uint = 9; -pub type CXTemplateArgumentKind = Enum_CXTemplateArgumentKind; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct CXToken { - pub int_data: [c_uint; 4], - pub ptr_data: *mut c_void, -} -pub type CXCompletionString = *mut c_void; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct CXCompletionResult { - pub CursorKind: Enum_CXCursorKind, - pub CompletionString: CXCompletionString, -} -pub type Enum_CXCompletionChunkKind = c_uint; -pub const CXCompletionChunk_Optional: c_uint = 0; -pub const CXCompletionChunk_TypedText: c_uint = 1; -pub const CXCompletionChunk_Text: c_uint = 2; -pub const CXCompletionChunk_Placeholder: c_uint = 3; -pub const CXCompletionChunk_Informative: c_uint = 4; -pub const CXCompletionChunk_CurrentParameter: c_uint = 5; -pub const CXCompletionChunk_LeftParen: c_uint = 6; -pub const CXCompletionChunk_RightParen: c_uint = 7; -pub const CXCompletionChunk_LeftBracket: c_uint = 8; -pub const CXCompletionChunk_RightBracket: c_uint = 9; -pub const CXCompletionChunk_LeftBrace: c_uint = 10; -pub const CXCompletionChunk_RightBrace: c_uint = 11; -pub const CXCompletionChunk_LeftAngle: c_uint = 12; -pub const CXCompletionChunk_RightAngle: c_uint = 13; -pub const CXCompletionChunk_Comma: c_uint = 14; -pub const CXCompletionChunk_ResultType: c_uint = 15; -pub const CXCompletionChunk_Colon: c_uint = 16; -pub const CXCompletionChunk_SemiColon: c_uint = 17; -pub const CXCompletionChunk_Equal: c_uint = 18; -pub const CXCompletionChunk_HorizontalSpace: c_uint = 19; -pub const CXCompletionChunk_VerticalSpace: c_uint = 20; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct CXCodeCompleteResults { - pub Results: *mut CXCompletionResult, - pub NumResults: c_uint, -} -pub type Enum_CXCodeComplete_Flags = c_uint; -pub const CXCodeComplete_IncludeMacros: c_uint = 1; -pub const CXCodeComplete_IncludeCodePatterns: c_uint = 2; -pub const CXCodeComplete_IncludeBriefComments: c_uint = 4; -pub type Enum_CXCompletionContext = c_uint; -pub const CXCompletionContext_Unexposed: c_uint = 0; -pub const CXCompletionContext_AnyType: c_uint = 1; -pub const CXCompletionContext_AnyValue: c_uint = 2; -pub const CXCompletionContext_ObjCObjectValue: c_uint = 4; -pub const CXCompletionContext_ObjCSelectorValue: c_uint = 8; -pub const CXCompletionContext_CXXClassTypeValue: c_uint = 16; -pub const CXCompletionContext_DotMemberAccess: c_uint = 32; -pub const CXCompletionContext_ArrowMemberAccess: c_uint = 64; -pub const CXCompletionContext_ObjCPropertyAccess: c_uint = 128; -pub const CXCompletionContext_EnumTag: c_uint = 256; -pub const CXCompletionContext_UnionTag: c_uint = 512; -pub const CXCompletionContext_StructTag: c_uint = 1024; -pub const CXCompletionContext_ClassTag: c_uint = 2048; -pub const CXCompletionContext_Namespace: c_uint = 4096; -pub const CXCompletionContext_NestedNameSpecifier: c_uint = 8192; -pub const CXCompletionContext_ObjCInterface: c_uint = 16384; -pub const CXCompletionContext_ObjCProtocol: c_uint = 32768; -pub const CXCompletionContext_ObjCCategory: c_uint = 65536; -pub const CXCompletionContext_ObjCInstanceMessage: c_uint = 131072; -pub const CXCompletionContext_ObjCClassMessage: c_uint = 262144; -pub const CXCompletionContext_ObjCSelectorName: c_uint = 524288; -pub const CXCompletionContext_MacroName: c_uint = 1048576; -pub const CXCompletionContext_NaturalLanguage: c_uint = 2097152; -pub const CXCompletionContext_Unknown: c_uint = 4194303; -pub type CXInclusionVisitor = - ::std::option::Option; -pub type CXRemapping = *mut c_void; -pub type Enum_CXVisitorResult = c_uint; -pub const CXVisit_Break: c_uint = 0; -pub const CXVisit_Continue: c_uint = 1; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct CXCursorAndRangeVisitor { - pub context: *mut c_void, - pub visit: ::std::option::Option Enum_CXVisitorResult>, -} -pub type CXResult = c_uint; -pub const CXResult_Success: c_uint = 0; -pub const CXResult_Invalid: c_uint = 1; -pub const CXResult_VisitBreak: c_uint = 2; -pub type CXIdxClientFile = *mut c_void; -pub type CXIdxClientEntity = *mut c_void; -pub type CXIdxClientContainer = *mut c_void; -pub type CXIdxClientASTFile = *mut c_void; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct CXIdxLoc { - pub ptr_data: [*mut c_void; 2], - pub int_data: c_uint, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct CXIdxIncludedFileInfo { - pub hashLoc: CXIdxLoc, - pub filename: *const c_char, - pub file: CXFile, - pub isImport: c_int, - pub isAngled: c_int, - pub isModuleImport: c_int, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct CXIdxImportedASTFileInfo { - pub file: CXFile, - pub module: CXModule, - pub loc: CXIdxLoc, - pub isImplicit: c_int, -} -pub type CXIdxEntityKind = c_uint; -pub const CXIdxEntity_Unexposed: c_uint = 0; -pub const CXIdxEntity_Typedef: c_uint = 1; -pub const CXIdxEntity_Function: c_uint = 2; -pub const CXIdxEntity_Variable: c_uint = 3; -pub const CXIdxEntity_Field: c_uint = 4; -pub const CXIdxEntity_EnumConstant: c_uint = 5; -pub const CXIdxEntity_ObjCClass: c_uint = 6; -pub const CXIdxEntity_ObjCProtocol: c_uint = 7; -pub const CXIdxEntity_ObjCCategory: c_uint = 8; -pub const CXIdxEntity_ObjCInstanceMethod: c_uint = 9; -pub const CXIdxEntity_ObjCClassMethod: c_uint = 10; -pub const CXIdxEntity_ObjCProperty: c_uint = 11; -pub const CXIdxEntity_ObjCIvar: c_uint = 12; -pub const CXIdxEntity_Enum: c_uint = 13; -pub const CXIdxEntity_Struct: c_uint = 14; -pub const CXIdxEntity_Union: c_uint = 15; -pub const CXIdxEntity_CXXClass: c_uint = 16; -pub const CXIdxEntity_CXXNamespace: c_uint = 17; -pub const CXIdxEntity_CXXNamespaceAlias: c_uint = 18; -pub const CXIdxEntity_CXXStaticVariable: c_uint = 19; -pub const CXIdxEntity_CXXStaticMethod: c_uint = 20; -pub const CXIdxEntity_CXXInstanceMethod: c_uint = 21; -pub const CXIdxEntity_CXXConstructor: c_uint = 22; -pub const CXIdxEntity_CXXDestructor: c_uint = 23; -pub const CXIdxEntity_CXXConversionFunction: c_uint = 24; -pub const CXIdxEntity_CXXTypeAlias: c_uint = 25; -pub const CXIdxEntity_CXXInterface: c_uint = 26; -pub type CXIdxEntityLanguage = c_uint; -pub const CXIdxEntityLang_None: c_uint = 0; -pub const CXIdxEntityLang_C: c_uint = 1; -pub const CXIdxEntityLang_ObjC: c_uint = 2; -pub const CXIdxEntityLang_CXX: c_uint = 3; -pub type CXIdxEntityCXXTemplateKind = c_uint; -pub const CXIdxEntity_NonTemplate: c_uint = 0; -pub const CXIdxEntity_Template: c_uint = 1; -pub const CXIdxEntity_TemplatePartialSpecialization: c_uint = 2; -pub const CXIdxEntity_TemplateSpecialization: c_uint = 3; -pub type CXIdxAttrKind = c_uint; -pub const CXIdxAttr_Unexposed: c_uint = 0; -pub const CXIdxAttr_IBAction: c_uint = 1; -pub const CXIdxAttr_IBOutlet: c_uint = 2; -pub const CXIdxAttr_IBOutletCollection: c_uint = 3; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct CXIdxAttrInfo { - pub kind: CXIdxAttrKind, - pub cursor: CXCursor, - pub loc: CXIdxLoc, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct CXIdxEntityInfo { - pub kind: CXIdxEntityKind, - pub templateKind: CXIdxEntityCXXTemplateKind, - pub lang: CXIdxEntityLanguage, - pub name: *const c_char, - pub USR: *const c_char, - pub cursor: CXCursor, - pub attributes: *const *const CXIdxAttrInfo, - pub numAttributes: c_uint, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct CXIdxContainerInfo { - pub cursor: CXCursor, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct CXIdxIBOutletCollectionAttrInfo { - pub attrInfo: *const CXIdxAttrInfo, - pub objcClass: *const CXIdxEntityInfo, - pub classCursor: CXCursor, - pub classLoc: CXIdxLoc, -} -pub type CXIdxDeclInfoFlags = c_uint; -pub const CXIdxDeclFlag_Skipped: c_uint = 1; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct CXIdxDeclInfo { - pub entityInfo: *const CXIdxEntityInfo, - pub cursor: CXCursor, - pub loc: CXIdxLoc, - pub semanticContainer: *const CXIdxContainerInfo, - pub lexicalContainer: *const CXIdxContainerInfo, - pub isRedeclaration: c_int, - pub isDefinition: c_int, - pub isContainer: c_int, - pub declAsContainer: *const CXIdxContainerInfo, - pub isImplicit: c_int, - pub attributes: *const *const CXIdxAttrInfo, - pub numAttributes: c_uint, - pub flags: c_uint, -} -pub type CXIdxObjCContainerKind = c_uint; -pub const CXIdxObjCContainer_ForwardRef: c_uint = 0; -pub const CXIdxObjCContainer_Interface: c_uint = 1; -pub const CXIdxObjCContainer_Implementation: c_uint = 2; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct CXIdxObjCContainerDeclInfo { - pub declInfo: *const CXIdxDeclInfo, - pub kind: CXIdxObjCContainerKind, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct CXIdxBaseClassInfo { - pub base: *const CXIdxEntityInfo, - pub cursor: CXCursor, - pub loc: CXIdxLoc, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct CXIdxObjCProtocolRefInfo { - pub protocol: *const CXIdxEntityInfo, - pub cursor: CXCursor, - pub loc: CXIdxLoc, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct CXIdxObjCProtocolRefListInfo { - pub protocols: *const *const CXIdxObjCProtocolRefInfo, - pub numProtocols: c_uint, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct CXIdxObjCInterfaceDeclInfo { - pub containerInfo: *const CXIdxObjCContainerDeclInfo, - pub superInfo: *const CXIdxBaseClassInfo, - pub protocols: *const CXIdxObjCProtocolRefListInfo, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct CXIdxObjCCategoryDeclInfo { - pub containerInfo: *const CXIdxObjCContainerDeclInfo, - pub objcClass: *const CXIdxEntityInfo, - pub classCursor: CXCursor, - pub classLoc: CXIdxLoc, - pub protocols: *const CXIdxObjCProtocolRefListInfo, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct CXIdxObjCPropertyDeclInfo { - pub declInfo: *const CXIdxDeclInfo, - pub getter: *const CXIdxEntityInfo, - pub setter: *const CXIdxEntityInfo, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct CXIdxCXXClassDeclInfo { - pub declInfo: *const CXIdxDeclInfo, - pub bases: *const *const CXIdxBaseClassInfo, - pub numBases: c_uint, -} -pub type CXIdxEntityRefKind = c_uint; -pub const CXIdxEntityRef_Direct: c_uint = 1; -pub const CXIdxEntityRef_Implicit: c_uint = 2; -#[repr(C)] -#[derive(Copy, Clone)] -pub struct CXIdxEntityRefInfo { - pub kind: CXIdxEntityRefKind, - pub cursor: CXCursor, - pub loc: CXIdxLoc, - pub referencedEntity: *const CXIdxEntityInfo, - pub parentEntity: *const CXIdxEntityInfo, - pub container: *const CXIdxContainerInfo, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct IndexerCallbacks { - pub abortQuery: ::std::option::Option c_int>, - pub diagnostic: ::std::option::Option, - pub enteredMainFile: ::std::option::Option CXIdxClientFile>, - pub ppIncludedFile: ::std::option::Option CXIdxClientFile>, - pub importedASTFile: ::std::option::Option CXIdxClientASTFile>, - pub startedTranslationUnit: ::std::option::Option - CXIdxClientContainer>, - pub indexDeclaration: ::std::option::Option, - pub indexEntityReference: ::std::option::Option, -} -pub type CXIndexAction = *mut c_void; -pub type CXIndexOptFlags = c_uint; -pub const CXIndexOpt_None: c_uint = 0; -pub const CXIndexOpt_SuppressRedundantRefs: c_uint = 1; -pub const CXIndexOpt_IndexFunctionLocalSymbols: c_uint = 2; -pub const CXIndexOpt_IndexImplicitTemplateInstantiations: c_uint = 4; -pub const CXIndexOpt_SuppressWarnings: c_uint = 8; -pub const CXIndexOpt_SkipParsedBodiesInSession: c_uint = 16; -extern "C" { - pub fn clang_getCString(string: CXString) -> *const c_char; - pub fn clang_disposeString(string: CXString); - pub fn clang_createIndex(excludeDeclarationsFromPCH: c_int, - displayDiagnostics: c_int) -> CXIndex; - pub fn clang_disposeIndex(index: CXIndex); - pub fn clang_CXIndex_setGlobalOptions(arg1: CXIndex, - options: c_uint); - pub fn clang_CXIndex_getGlobalOptions(arg1: CXIndex) -> c_uint; - pub fn clang_getFileName(SFile: CXFile) -> CXString; - pub fn clang_getFileTime(SFile: CXFile) -> ::libc::time_t; - pub fn clang_getFileUniqueID(file: CXFile, outID: *mut CXFileUniqueID) -> - c_int; - pub fn clang_isFileMultipleIncludeGuarded(tu: CXTranslationUnit, - file: CXFile) -> c_uint; - pub fn clang_getFile(tu: CXTranslationUnit, - file_name: *const c_char) -> CXFile; - pub fn clang_getNullLocation() -> CXSourceLocation; - pub fn clang_equalLocations(loc1: CXSourceLocation, - loc2: CXSourceLocation) -> c_uint; - pub fn clang_getLocation(tu: CXTranslationUnit, file: CXFile, - line: c_uint, column: c_uint) -> - CXSourceLocation; - pub fn clang_getLocationForOffset(tu: CXTranslationUnit, file: CXFile, - offset: c_uint) -> - CXSourceLocation; - pub fn clang_Location_isInSystemHeader(location: CXSourceLocation) -> - c_int; - pub fn clang_Location_isFromMainFile(location: CXSourceLocation) -> - c_int; - pub fn clang_getNullRange() -> CXSourceRange; - pub fn clang_getRange(begin: CXSourceLocation, end: CXSourceLocation) -> - CXSourceRange; - pub fn clang_equalRanges(range1: CXSourceRange, range2: CXSourceRange) -> - c_uint; - pub fn clang_Range_isNull(range: CXSourceRange) -> c_int; - pub fn clang_getExpansionLocation(location: CXSourceLocation, - file: *mut CXFile, - line: *mut c_uint, - column: *mut c_uint, - offset: *mut c_uint); - pub fn clang_getPresumedLocation(location: CXSourceLocation, - filename: *mut CXString, - line: *mut c_uint, - column: *mut c_uint); - pub fn clang_getInstantiationLocation(location: CXSourceLocation, - file: *mut CXFile, - line: *mut c_uint, - column: *mut c_uint, - offset: *mut c_uint); - pub fn clang_getSpellingLocation(location: CXSourceLocation, - file: *mut CXFile, - line: *mut c_uint, - column: *mut c_uint, - offset: *mut c_uint); - pub fn clang_getFileLocation(location: CXSourceLocation, - file: *mut CXFile, line: *mut c_uint, - column: *mut c_uint, - offset: *mut c_uint); - pub fn clang_getRangeStart(range: CXSourceRange) -> CXSourceLocation; - pub fn clang_getRangeEnd(range: CXSourceRange) -> CXSourceLocation; - pub fn clang_getNumDiagnosticsInSet(Diags: CXDiagnosticSet) -> - c_uint; - pub fn clang_getDiagnosticInSet(Diags: CXDiagnosticSet, - Index: c_uint) -> CXDiagnostic; - pub fn clang_loadDiagnostics(file: *const c_char, - error: *mut Enum_CXLoadDiag_Error, - errorString: *mut CXString) -> - CXDiagnosticSet; - pub fn clang_disposeDiagnosticSet(Diags: CXDiagnosticSet); - pub fn clang_getChildDiagnostics(D: CXDiagnostic) -> CXDiagnosticSet; - pub fn clang_getNumDiagnostics(Unit: CXTranslationUnit) -> c_uint; - pub fn clang_getDiagnostic(Unit: CXTranslationUnit, Index: c_uint) - -> CXDiagnostic; - pub fn clang_getDiagnosticSetFromTU(Unit: CXTranslationUnit) -> - CXDiagnosticSet; - pub fn clang_disposeDiagnostic(Diagnostic: CXDiagnostic); - pub fn clang_formatDiagnostic(Diagnostic: CXDiagnostic, - Options: c_uint) -> CXString; - pub fn clang_defaultDiagnosticDisplayOptions() -> c_uint; - pub fn clang_getDiagnosticSeverity(arg1: CXDiagnostic) -> - Enum_CXDiagnosticSeverity; - pub fn clang_getDiagnosticLocation(arg1: CXDiagnostic) -> - CXSourceLocation; - pub fn clang_getDiagnosticSpelling(arg1: CXDiagnostic) -> CXString; - pub fn clang_getDiagnosticOption(Diag: CXDiagnostic, - Disable: *mut CXString) -> CXString; - pub fn clang_getDiagnosticCategory(arg1: CXDiagnostic) -> c_uint; - pub fn clang_getDiagnosticCategoryName(Category: c_uint) -> - CXString; - pub fn clang_getDiagnosticCategoryText(arg1: CXDiagnostic) -> CXString; - pub fn clang_getDiagnosticNumRanges(arg1: CXDiagnostic) -> c_uint; - pub fn clang_getDiagnosticRange(Diagnostic: CXDiagnostic, - Range: c_uint) -> CXSourceRange; - pub fn clang_getDiagnosticNumFixIts(Diagnostic: CXDiagnostic) -> - c_uint; - pub fn clang_getDiagnosticFixIt(Diagnostic: CXDiagnostic, - FixIt: c_uint, - ReplacementRange: *mut CXSourceRange) -> - CXString; - pub fn clang_getTranslationUnitSpelling(CTUnit: CXTranslationUnit) -> - CXString; - pub fn clang_createTranslationUnitFromSourceFile(CIdx: CXIndex, - source_filename: - *const c_char, - num_clang_command_line_args: - c_int, - clang_command_line_args: - *const *const c_char, - num_unsaved_files: - c_uint, - unsaved_files: - *mut Struct_CXUnsavedFile) - -> CXTranslationUnit; - pub fn clang_createTranslationUnit(arg1: CXIndex, - ast_filename: *const c_char) -> - CXTranslationUnit; - pub fn clang_defaultEditingTranslationUnitOptions() -> c_uint; - pub fn clang_parseTranslationUnit(CIdx: CXIndex, - source_filename: *const c_char, - command_line_args: - *const *const c_char, - num_command_line_args: c_int, - unsaved_files: - *mut Struct_CXUnsavedFile, - num_unsaved_files: c_uint, - options: c_uint) -> - CXTranslationUnit; - pub fn clang_defaultSaveOptions(TU: CXTranslationUnit) -> c_uint; - pub fn clang_saveTranslationUnit(TU: CXTranslationUnit, - FileName: *const c_char, - options: c_uint) -> - c_int; - pub fn clang_disposeTranslationUnit(arg1: CXTranslationUnit); - pub fn clang_defaultReparseOptions(TU: CXTranslationUnit) -> - c_uint; - pub fn clang_reparseTranslationUnit(TU: CXTranslationUnit, - num_unsaved_files: c_uint, - unsaved_files: - *mut Struct_CXUnsavedFile, - options: c_uint) -> - c_int; - pub fn clang_getTUResourceUsageName(kind: Enum_CXTUResourceUsageKind) -> - *const c_char; - pub fn clang_getCXTUResourceUsage(TU: CXTranslationUnit) -> - CXTUResourceUsage; - pub fn clang_disposeCXTUResourceUsage(usage: CXTUResourceUsage); - pub fn clang_getNullCursor() -> CXCursor; - pub fn clang_getTranslationUnitCursor(arg1: CXTranslationUnit) -> - CXCursor; - pub fn clang_equalCursors(arg1: CXCursor, arg2: CXCursor) -> - c_uint; - pub fn clang_Cursor_isNull(cursor: CXCursor) -> c_int; - pub fn clang_hashCursor(arg1: CXCursor) -> c_uint; - pub fn clang_getCursorKind(arg1: CXCursor) -> Enum_CXCursorKind; - pub fn clang_isDeclaration(arg1: Enum_CXCursorKind) -> c_uint; - pub fn clang_isReference(arg1: Enum_CXCursorKind) -> c_uint; - pub fn clang_isExpression(arg1: Enum_CXCursorKind) -> c_uint; - pub fn clang_isStatement(arg1: Enum_CXCursorKind) -> c_uint; - pub fn clang_isAttribute(arg1: Enum_CXCursorKind) -> c_uint; - pub fn clang_isInvalid(arg1: Enum_CXCursorKind) -> c_uint; - pub fn clang_isTranslationUnit(arg1: Enum_CXCursorKind) -> c_uint; - pub fn clang_isPreprocessing(arg1: Enum_CXCursorKind) -> c_uint; - pub fn clang_isUnexposed(arg1: Enum_CXCursorKind) -> c_uint; - pub fn clang_getCursorLinkage(cursor: CXCursor) -> Enum_CXLinkageKind; - pub fn clang_getCursorVisibility(cursor: CXCursor) -> Enum_CXVisibilityKind; - pub fn clang_getCursorAvailability(cursor: CXCursor) -> - Enum_CXAvailabilityKind; - pub fn clang_getCursorPlatformAvailability(cursor: CXCursor, - always_deprecated: - *mut c_int, - deprecated_message: - *mut CXString, - always_unavailable: - *mut c_int, - unavailable_message: - *mut CXString, - availability: - *mut CXPlatformAvailability, - availability_size: - c_int) -> - c_int; - pub fn clang_disposeCXPlatformAvailability(availability: - *mut CXPlatformAvailability); - pub fn clang_getCursorLanguage(cursor: CXCursor) -> Enum_CXLanguageKind; - pub fn clang_Cursor_getTranslationUnit(arg1: CXCursor) -> - CXTranslationUnit; - pub fn clang_createCXCursorSet() -> CXCursorSet; - pub fn clang_disposeCXCursorSet(cset: CXCursorSet); - pub fn clang_CXCursorSet_contains(cset: CXCursorSet, cursor: CXCursor) -> - c_uint; - pub fn clang_CXCursorSet_insert(cset: CXCursorSet, cursor: CXCursor) -> - c_uint; - pub fn clang_getCursorSemanticParent(cursor: CXCursor) -> CXCursor; - pub fn clang_getCursorLexicalParent(cursor: CXCursor) -> CXCursor; - pub fn clang_getOverriddenCursors(cursor: CXCursor, - overridden: *mut *mut CXCursor, - num_overridden: *mut c_uint); - pub fn clang_disposeOverriddenCursors(overridden: *mut CXCursor); - pub fn clang_getIncludedFile(cursor: CXCursor) -> CXFile; - pub fn clang_getCursor(arg1: CXTranslationUnit, arg2: CXSourceLocation) -> - CXCursor; - pub fn clang_getCursorLocation(arg1: CXCursor) -> CXSourceLocation; - pub fn clang_getCursorExtent(arg1: CXCursor) -> CXSourceRange; - pub fn clang_getCursorType(C: CXCursor) -> CXType; - pub fn clang_getTypeSpelling(CT: CXType) -> CXString; - pub fn clang_getTypedefDeclUnderlyingType(C: CXCursor) -> CXType; - pub fn clang_getEnumDeclIntegerType(C: CXCursor) -> CXType; - pub fn clang_getEnumConstantDeclValue(C: CXCursor) -> c_longlong; - pub fn clang_getEnumConstantDeclUnsignedValue(C: CXCursor) -> - c_ulonglong; - pub fn clang_getFieldDeclBitWidth(C: CXCursor) -> c_int; - pub fn clang_Cursor_getNumArguments(C: CXCursor) -> c_int; - pub fn clang_Cursor_getArgument(C: CXCursor, i: c_uint) -> - CXCursor; - pub fn clang_Cursor_getNumTemplateArguments(T: CXCursor) -> c_int; - pub fn clang_Cursor_getTemplateArgumentKind(C: CXCursor, i: c_uint) -> - CXTemplateArgumentKind; - pub fn clang_Cursor_getTemplateArgumentValue(C: CXCursor, i: c_uint) -> - c_longlong; - pub fn clang_Cursor_getTemplateArgumentUnsignedValue(C: CXCursor, i: c_uint) -> - c_ulonglong; - pub fn clang_equalTypes(A: CXType, B: CXType) -> c_uint; - pub fn clang_getCanonicalType(T: CXType) -> CXType; - pub fn clang_isConstQualifiedType(T: CXType) -> c_uint; - pub fn clang_isVolatileQualifiedType(T: CXType) -> c_uint; - pub fn clang_isRestrictQualifiedType(T: CXType) -> c_uint; - pub fn clang_getPointeeType(T: CXType) -> CXType; - pub fn clang_getTypeDeclaration(T: CXType) -> CXCursor; - pub fn clang_getDeclObjCTypeEncoding(C: CXCursor) -> CXString; - pub fn clang_getTypeKindSpelling(K: Enum_CXTypeKind) -> CXString; - pub fn clang_getFunctionTypeCallingConv(T: CXType) -> Enum_CXCallingConv; - pub fn clang_getResultType(T: CXType) -> CXType; - pub fn clang_getNumArgTypes(T: CXType) -> c_int; - pub fn clang_getArgType(T: CXType, i: c_uint) -> CXType; - pub fn clang_isFunctionTypeVariadic(T: CXType) -> c_uint; - pub fn clang_getCursorResultType(C: CXCursor) -> CXType; - pub fn clang_isPODType(T: CXType) -> c_uint; - pub fn clang_getElementType(T: CXType) -> CXType; - pub fn clang_getNumElements(T: CXType) -> c_longlong; - pub fn clang_getArrayElementType(T: CXType) -> CXType; - pub fn clang_getArraySize(T: CXType) -> c_longlong; - pub fn clang_Type_getAlignOf(T: CXType) -> c_longlong; - pub fn clang_Type_getClassType(T: CXType) -> CXType; - pub fn clang_Type_getSizeOf(T: CXType) -> c_longlong; - pub fn clang_Type_getOffsetOf(T: CXType, S: *const c_char) -> - c_longlong; - pub fn clang_Type_getCXXRefQualifier(T: CXType) -> - Enum_CXRefQualifierKind; - pub fn clang_Type_getNumTemplateArguments(T: CXType) -> c_int; - pub fn clang_Type_getTemplateArgumentAsType(T: CXType, i: c_int) -> - CXType; - #[cfg(not(feature="llvm_stable"))] - pub fn clang_Type_getNamedType(CT: CXType) -> CXType; - pub fn clang_Cursor_isBitField(C: CXCursor) -> c_uint; - #[cfg(not(feature="llvm_stable"))] - pub fn clang_Cursor_isFunctionInlined(C: CXCursor) -> c_uint; - pub fn clang_isVirtualBase(arg1: CXCursor) -> c_uint; - pub fn clang_getCXXAccessSpecifier(arg1: CXCursor) -> - Enum_CX_CXXAccessSpecifier; - pub fn clang_getNumOverloadedDecls(cursor: CXCursor) -> c_uint; - pub fn clang_getOverloadedDecl(cursor: CXCursor, index: c_uint) -> - CXCursor; - pub fn clang_getIBOutletCollectionType(arg1: CXCursor) -> CXType; - pub fn clang_visitChildren(parent: CXCursor, visitor: CXCursorVisitor, - client_data: CXClientData) -> c_uint; - pub fn clang_getCursorUSR(arg1: CXCursor) -> CXString; - pub fn clang_constructUSR_ObjCClass(class_name: *const c_char) -> - CXString; - pub fn clang_constructUSR_ObjCCategory(class_name: *const c_char, - category_name: - *const c_char) -> - CXString; - pub fn clang_constructUSR_ObjCProtocol(protocol_name: - *const c_char) -> - CXString; - pub fn clang_constructUSR_ObjCIvar(name: *const c_char, - classUSR: CXString) -> CXString; - pub fn clang_constructUSR_ObjCMethod(name: *const c_char, - isInstanceMethod: c_uint, - classUSR: CXString) -> CXString; - pub fn clang_constructUSR_ObjCProperty(property: *const c_char, - classUSR: CXString) -> CXString; - pub fn clang_getCursorSpelling(arg1: CXCursor) -> CXString; - pub fn clang_Cursor_getSpellingNameRange(arg1: CXCursor, - pieceIndex: c_uint, - options: c_uint) -> - CXSourceRange; - pub fn clang_Cursor_getOffsetOfField(C: CXCursor) -> c_longlong; - pub fn clang_getCursorDisplayName(arg1: CXCursor) -> CXString; - pub fn clang_getCursorReferenced(arg1: CXCursor) -> CXCursor; - pub fn clang_getCursorDefinition(arg1: CXCursor) -> CXCursor; - pub fn clang_isCursorDefinition(arg1: CXCursor) -> c_uint; - pub fn clang_getCanonicalCursor(arg1: CXCursor) -> CXCursor; - pub fn clang_Cursor_getObjCSelectorIndex(arg1: CXCursor) -> c_int; - pub fn clang_Cursor_isDynamicCall(C: CXCursor) -> c_int; - pub fn clang_Cursor_getReceiverType(C: CXCursor) -> CXType; - pub fn clang_Cursor_getObjCPropertyAttributes(C: CXCursor, - reserved: c_uint) -> - c_uint; - pub fn clang_Cursor_getObjCDeclQualifiers(C: CXCursor) -> c_uint; - pub fn clang_Cursor_isObjCOptional(C: CXCursor) -> c_uint; - pub fn clang_Cursor_isVariadic(C: CXCursor) -> c_uint; - pub fn clang_Cursor_getCommentRange(C: CXCursor) -> CXSourceRange; - pub fn clang_Cursor_getRawCommentText(C: CXCursor) -> CXString; - pub fn clang_Cursor_getBriefCommentText(C: CXCursor) -> CXString; - pub fn clang_Cursor_getMangling(C: CXCursor) -> CXString; - pub fn clang_Cursor_getParsedComment(C: CXCursor) -> CXComment; - pub fn clang_Cursor_getModule(C: CXCursor) -> CXModule; - pub fn clang_Cursor_isAnonymous(C: CXCursor) -> c_uint; - pub fn clang_Module_getASTFile(Module: CXModule) -> CXFile; - pub fn clang_Module_getParent(Module: CXModule) -> CXModule; - pub fn clang_Module_getName(Module: CXModule) -> CXString; - pub fn clang_Module_getFullName(Module: CXModule) -> CXString; - pub fn clang_Module_getNumTopLevelHeaders(arg1: CXTranslationUnit, - Module: CXModule) -> - c_uint; - pub fn clang_Module_getTopLevelHeader(arg1: CXTranslationUnit, - Module: CXModule, - Index: c_uint) -> CXFile; - pub fn clang_Comment_getKind(Comment: CXComment) -> Enum_CXCommentKind; - pub fn clang_Comment_getNumChildren(Comment: CXComment) -> c_uint; - pub fn clang_Comment_getChild(Comment: CXComment, - ChildIdx: c_uint) -> CXComment; - pub fn clang_Comment_isWhitespace(Comment: CXComment) -> c_uint; - pub fn clang_InlineContentComment_hasTrailingNewline(Comment: CXComment) - -> c_uint; - pub fn clang_TextComment_getText(Comment: CXComment) -> CXString; - pub fn clang_InlineCommandComment_getCommandName(Comment: CXComment) -> - CXString; - pub fn clang_InlineCommandComment_getRenderKind(Comment: CXComment) -> - Enum_CXCommentInlineCommandRenderKind; - pub fn clang_InlineCommandComment_getNumArgs(Comment: CXComment) -> - c_uint; - pub fn clang_InlineCommandComment_getArgText(Comment: CXComment, - ArgIdx: c_uint) -> - CXString; - pub fn clang_HTMLTagComment_getTagName(Comment: CXComment) -> CXString; - pub fn clang_HTMLStartTagComment_isSelfClosing(Comment: CXComment) -> - c_uint; - pub fn clang_HTMLStartTag_getNumAttrs(Comment: CXComment) -> - c_uint; - pub fn clang_HTMLStartTag_getAttrName(Comment: CXComment, - AttrIdx: c_uint) -> - CXString; - pub fn clang_HTMLStartTag_getAttrValue(Comment: CXComment, - AttrIdx: c_uint) -> - CXString; - pub fn clang_BlockCommandComment_getCommandName(Comment: CXComment) -> - CXString; - pub fn clang_BlockCommandComment_getNumArgs(Comment: CXComment) -> - c_uint; - pub fn clang_BlockCommandComment_getArgText(Comment: CXComment, - ArgIdx: c_uint) -> - CXString; - pub fn clang_BlockCommandComment_getParagraph(Comment: CXComment) -> - CXComment; - pub fn clang_ParamCommandComment_getParamName(Comment: CXComment) -> - CXString; - pub fn clang_ParamCommandComment_isParamIndexValid(Comment: CXComment) -> - c_uint; - pub fn clang_ParamCommandComment_getParamIndex(Comment: CXComment) -> - c_uint; - pub fn clang_ParamCommandComment_isDirectionExplicit(Comment: CXComment) - -> c_uint; - pub fn clang_ParamCommandComment_getDirection(Comment: CXComment) -> - Enum_CXCommentParamPassDirection; - pub fn clang_TParamCommandComment_getParamName(Comment: CXComment) -> - CXString; - pub fn clang_TParamCommandComment_isParamPositionValid(Comment: CXComment) - -> c_uint; - pub fn clang_TParamCommandComment_getDepth(Comment: CXComment) -> - c_uint; - pub fn clang_TParamCommandComment_getIndex(Comment: CXComment, - Depth: c_uint) -> - c_uint; - pub fn clang_VerbatimBlockLineComment_getText(Comment: CXComment) -> - CXString; - pub fn clang_VerbatimLineComment_getText(Comment: CXComment) -> CXString; - pub fn clang_HTMLTagComment_getAsString(Comment: CXComment) -> CXString; - pub fn clang_FullComment_getAsHTML(Comment: CXComment) -> CXString; - pub fn clang_FullComment_getAsXML(Comment: CXComment) -> CXString; - pub fn clang_CXXMethod_isPureVirtual(C: CXCursor) -> c_uint; - pub fn clang_CXXMethod_isConst(C: CXCursor) -> c_uint; - pub fn clang_CXXMethod_isStatic(C: CXCursor) -> c_uint; - pub fn clang_CXXMethod_isVirtual(C: CXCursor) -> c_uint; - pub fn clang_CXXField_isMutable(C: CXCursor) -> c_uint; - pub fn clang_getTemplateCursorKind(C: CXCursor) -> Enum_CXCursorKind; - pub fn clang_getSpecializedCursorTemplate(C: CXCursor) -> CXCursor; - pub fn clang_getCursorReferenceNameRange(C: CXCursor, - NameFlags: c_uint, - PieceIndex: c_uint) -> - CXSourceRange; - pub fn clang_getTokenKind(arg1: CXToken) -> CXTokenKind; - pub fn clang_getTokenSpelling(arg1: CXTranslationUnit, arg2: CXToken) -> - CXString; - pub fn clang_getTokenLocation(arg1: CXTranslationUnit, arg2: CXToken) -> - CXSourceLocation; - pub fn clang_getTokenExtent(arg1: CXTranslationUnit, arg2: CXToken) -> - CXSourceRange; - pub fn clang_tokenize(TU: CXTranslationUnit, Range: CXSourceRange, - Tokens: *mut *mut CXToken, - NumTokens: *mut c_uint); - pub fn clang_annotateTokens(TU: CXTranslationUnit, Tokens: *mut CXToken, - NumTokens: c_uint, - Cursors: *mut CXCursor); - pub fn clang_disposeTokens(TU: CXTranslationUnit, Tokens: *mut CXToken, - NumTokens: c_uint); - pub fn clang_getCursorKindSpelling(Kind: Enum_CXCursorKind) -> CXString; - pub fn clang_getDefinitionSpellingAndExtent(arg1: CXCursor, - startBuf: - *mut *const c_char, - endBuf: - *mut *const c_char, - startLine: - *mut c_uint, - startColumn: - *mut c_uint, - endLine: *mut c_uint, - endColumn: - *mut c_uint); - pub fn clang_enableStackTraces(); - pub fn clang_executeOnThread(_fn: - ::std::option::Option, - user_data: *mut c_void, - stack_size: c_uint); - pub fn clang_getCompletionChunkKind(completion_string: CXCompletionString, - chunk_number: c_uint) -> - Enum_CXCompletionChunkKind; - pub fn clang_getCompletionChunkText(completion_string: CXCompletionString, - chunk_number: c_uint) -> - CXString; - pub fn clang_getCompletionChunkCompletionString(completion_string: - CXCompletionString, - chunk_number: - c_uint) -> - CXCompletionString; - pub fn clang_getNumCompletionChunks(completion_string: CXCompletionString) - -> c_uint; - pub fn clang_getCompletionPriority(completion_string: CXCompletionString) - -> c_uint; - pub fn clang_getCompletionAvailability(completion_string: - CXCompletionString) -> - Enum_CXAvailabilityKind; - pub fn clang_getCompletionNumAnnotations(completion_string: - CXCompletionString) -> - c_uint; - pub fn clang_getCompletionAnnotation(completion_string: - CXCompletionString, - annotation_number: c_uint) -> - CXString; - pub fn clang_getCompletionParent(completion_string: CXCompletionString, - kind: *mut Enum_CXCursorKind) -> - CXString; - pub fn clang_getCompletionBriefComment(completion_string: - CXCompletionString) -> - CXString; - pub fn clang_getCursorCompletionString(cursor: CXCursor) -> - CXCompletionString; - pub fn clang_defaultCodeCompleteOptions() -> c_uint; - pub fn clang_codeCompleteAt(TU: CXTranslationUnit, - complete_filename: *const c_char, - complete_line: c_uint, - complete_column: c_uint, - unsaved_files: *mut Struct_CXUnsavedFile, - num_unsaved_files: c_uint, - options: c_uint) -> - *mut CXCodeCompleteResults; - pub fn clang_sortCodeCompletionResults(Results: *mut CXCompletionResult, - NumResults: c_uint); - pub fn clang_disposeCodeCompleteResults(Results: - *mut CXCodeCompleteResults); - pub fn clang_codeCompleteGetNumDiagnostics(Results: - *mut CXCodeCompleteResults) - -> c_uint; - pub fn clang_codeCompleteGetDiagnostic(Results: - *mut CXCodeCompleteResults, - Index: c_uint) -> - CXDiagnostic; - pub fn clang_codeCompleteGetContexts(Results: *mut CXCodeCompleteResults) - -> c_ulonglong; - pub fn clang_codeCompleteGetContainerKind(Results: - *mut CXCodeCompleteResults, - IsIncomplete: - *mut c_uint) -> - Enum_CXCursorKind; - pub fn clang_codeCompleteGetContainerUSR(Results: - *mut CXCodeCompleteResults) - -> CXString; - pub fn clang_codeCompleteGetObjCSelector(Results: - *mut CXCodeCompleteResults) - -> CXString; - pub fn clang_getClangVersion() -> CXString; - pub fn clang_toggleCrashRecovery(isEnabled: c_uint); - pub fn clang_getInclusions(tu: CXTranslationUnit, - visitor: CXInclusionVisitor, - client_data: CXClientData); - pub fn clang_getRemappings(path: *const c_char) -> CXRemapping; - pub fn clang_getRemappingsFromFileList(filePaths: - *mut *const c_char, - numFiles: c_uint) -> - CXRemapping; - pub fn clang_remap_getNumFiles(arg1: CXRemapping) -> c_uint; - pub fn clang_remap_getFilenames(arg1: CXRemapping, index: c_uint, - original: *mut CXString, - transformed: *mut CXString); - pub fn clang_remap_dispose(arg1: CXRemapping); - pub fn clang_findReferencesInFile(cursor: CXCursor, file: CXFile, - visitor: CXCursorAndRangeVisitor) -> - CXResult; - pub fn clang_findIncludesInFile(TU: CXTranslationUnit, file: CXFile, - visitor: CXCursorAndRangeVisitor) -> - CXResult; - pub fn clang_index_isEntityObjCContainerKind(arg1: CXIdxEntityKind) -> - c_int; - pub fn clang_index_getObjCContainerDeclInfo(arg1: *const CXIdxDeclInfo) -> - *const CXIdxObjCContainerDeclInfo; - pub fn clang_index_getObjCInterfaceDeclInfo(arg1: *const CXIdxDeclInfo) -> - *const CXIdxObjCInterfaceDeclInfo; - pub fn clang_index_getObjCCategoryDeclInfo(arg1: *const CXIdxDeclInfo) -> - *const CXIdxObjCCategoryDeclInfo; - pub fn clang_index_getObjCProtocolRefListInfo(arg1: *const CXIdxDeclInfo) - -> *const CXIdxObjCProtocolRefListInfo; - pub fn clang_index_getObjCPropertyDeclInfo(arg1: *const CXIdxDeclInfo) -> - *const CXIdxObjCPropertyDeclInfo; - pub fn clang_index_getIBOutletCollectionAttrInfo(arg1: - *const CXIdxAttrInfo) - -> *const CXIdxIBOutletCollectionAttrInfo; - pub fn clang_index_getCXXClassDeclInfo(arg1: *const CXIdxDeclInfo) -> - *const CXIdxCXXClassDeclInfo; - pub fn clang_index_getClientContainer(arg1: *const CXIdxContainerInfo) -> - CXIdxClientContainer; - pub fn clang_index_setClientContainer(arg1: *const CXIdxContainerInfo, - arg2: CXIdxClientContainer); - pub fn clang_index_getClientEntity(arg1: *const CXIdxEntityInfo) -> - CXIdxClientEntity; - pub fn clang_index_setClientEntity(arg1: *const CXIdxEntityInfo, - arg2: CXIdxClientEntity); - pub fn clang_IndexAction_create(CIdx: CXIndex) -> CXIndexAction; - pub fn clang_IndexAction_dispose(arg1: CXIndexAction); - pub fn clang_indexSourceFile(arg1: CXIndexAction, - client_data: CXClientData, - index_callbacks: *mut IndexerCallbacks, - index_callbacks_size: c_uint, - index_options: c_uint, - source_filename: *const c_char, - command_line_args: - *const *const c_char, - num_command_line_args: c_int, - unsaved_files: *mut Struct_CXUnsavedFile, - num_unsaved_files: c_uint, - out_TU: *mut CXTranslationUnit, - TU_options: c_uint) -> c_int; - pub fn clang_indexTranslationUnit(arg1: CXIndexAction, - client_data: CXClientData, - index_callbacks: *mut IndexerCallbacks, - index_callbacks_size: c_uint, - index_options: c_uint, - arg2: CXTranslationUnit) -> - c_int; - pub fn clang_indexLoc_getFileLocation(loc: CXIdxLoc, - indexFile: *mut CXIdxClientFile, - file: *mut CXFile, - line: *mut c_uint, - column: *mut c_uint, - offset: *mut c_uint); - pub fn clang_indexLoc_getCXSourceLocation(loc: CXIdxLoc) -> - CXSourceLocation; - #[cfg(not(feature="llvm_stable"))] - pub fn clang_Cursor_Evaluate(C: CXCursor) -> CXEvalResult; - #[cfg(not(feature="llvm_stable"))] - pub fn clang_EvalResult_getKind(E: CXEvalResult) -> Enum_CXEvalResultKind; - #[cfg(not(feature="llvm_stable"))] - pub fn clang_EvalResult_getAsInt(E: CXEvalResult) -> c_int; - #[cfg(not(feature="llvm_stable"))] - pub fn clang_EvalResult_getAsDouble(E: CXEvalResult) -> c_double; - #[cfg(not(feature="llvm_stable"))] - pub fn clang_EvalResult_getAsStr(E: CXEvalResult) -> *const c_char; - #[cfg(not(feature="llvm_stable"))] - pub fn clang_EvalResult_dispose(E: CXEvalResult); -} diff --git a/libbindgen/src/ir/annotations.rs b/libbindgen/src/ir/annotations.rs index 948dbc96ba..968e2da187 100644 --- a/libbindgen/src/ir/annotations.rs +++ b/libbindgen/src/ir/annotations.rs @@ -126,7 +126,7 @@ impl Annotations { } fn parse(&mut self, comment: &clang::Comment, matched: &mut bool) { - use clangll::CXComment_HTMLStartTag; + use clang_sys::CXComment_HTMLStartTag; if comment.kind() == CXComment_HTMLStartTag && comment.get_tag_name() == "div" && comment.get_tag_attrs() diff --git a/libbindgen/src/ir/comp.rs b/libbindgen/src/ir/comp.rs index d2ace023eb..75b3467be7 100644 --- a/libbindgen/src/ir/comp.rs +++ b/libbindgen/src/ir/comp.rs @@ -470,7 +470,7 @@ impl CompInfo { location: Option, ctx: &mut BindgenContext) -> Result { - use clangll::*; + use clang_sys::*; // Sigh... For class templates we want the location, for // specialisations, we want the declaration... So just try both. // @@ -750,7 +750,7 @@ impl CompInfo { CXCursor_FunctionTemplate | CXCursor_ConversionFunction => {} _ => { - warn!("unhandled comp member `{}` (kind {}) in `{}` ({})", + warn!("unhandled comp member `{}` (kind {:?}) in `{}` ({})", cur.spelling(), cur.kind(), cursor.spelling(), @@ -770,7 +770,7 @@ impl CompInfo { fn kind_from_cursor(cursor: &clang::Cursor) -> Result { - use clangll::*; + use clang_sys::*; Ok(match cursor.kind() { CXCursor_UnionDecl => CompKind::Union, CXCursor_ClassDecl | diff --git a/libbindgen/src/ir/context.rs b/libbindgen/src/ir/context.rs index 8be064b8ec..6069121c21 100644 --- a/libbindgen/src/ir/context.rs +++ b/libbindgen/src/ir/context.rs @@ -124,12 +124,12 @@ pub struct BindgenContext<'ctx> { impl<'ctx> BindgenContext<'ctx> { /// Construct the context for the given `options`. pub fn new(options: BindgenOptions) -> Self { - use clangll; + use clang_sys; let index = clang::Index::new(false, true); let parse_options = - clangll::CXTranslationUnit_DetailedPreprocessingRecord; + clang_sys::CXTranslationUnit_DetailedPreprocessingRecord; let translation_unit = clang::TranslationUnit::parse(&index, "", @@ -551,7 +551,7 @@ impl<'ctx> BindgenContext<'ctx> { location: clang::Cursor, declaration: clang::Cursor) -> ItemId { - use clangll::*; + use clang_sys::*; let mut args = vec![]; location.visit(|c| { if c.kind() == CXCursor_TypeRef { @@ -610,7 +610,7 @@ impl<'ctx> BindgenContext<'ctx> { } } else { assert_eq!(declaration.kind(), - ::clangll::CXCursor_TypeAliasTemplateDecl, + ::clang_sys::CXCursor_TypeAliasTemplateDecl, "Expected wrappable type"); } @@ -639,7 +639,7 @@ impl<'ctx> BindgenContext<'ctx> { ty: &clang::Type, location: Option) -> Option { - use clangll::{CXCursor_TypeAliasTemplateDecl, CXCursor_TypeRef}; + use clang_sys::{CXCursor_TypeAliasTemplateDecl, CXCursor_TypeRef}; debug!("builtin_or_resolved_ty: {:?}, {:?}, {:?}", ty, location, @@ -753,7 +753,7 @@ impl<'ctx> BindgenContext<'ctx> { ty: &clang::Type, _declaration: Cursor) -> Option { - use clangll::*; + use clang_sys::*; let type_kind = match ty.kind() { CXType_NullPtr => TypeKind::NullPtr, CXType_Void => TypeKind::Void, @@ -885,7 +885,7 @@ impl<'ctx> BindgenContext<'ctx> { /// Given a CXCursor_Namespace cursor, return the item id of the /// corresponding module, or create one on the fly. pub fn module(&mut self, cursor: clang::Cursor) -> ItemId { - use clangll::*; + use clang_sys::*; assert!(cursor.kind() == CXCursor_Namespace, "Be a nice person"); let cursor = cursor.canonical(); if let Some(id) = self.modules.get(&cursor) { diff --git a/libbindgen/src/ir/enum_ty.rs b/libbindgen/src/ir/enum_ty.rs index f728b22a2d..dc6a866519 100644 --- a/libbindgen/src/ir/enum_ty.rs +++ b/libbindgen/src/ir/enum_ty.rs @@ -43,7 +43,7 @@ impl Enum { pub fn from_ty(ty: &clang::Type, ctx: &mut BindgenContext) -> Result { - use clangll::*; + use clang_sys::*; if ty.kind() != CXType_Enum { return Err(ParseError::Continue); } diff --git a/libbindgen/src/ir/function.rs b/libbindgen/src/ir/function.rs index 5a864cfc7b..df518ab1fe 100644 --- a/libbindgen/src/ir/function.rs +++ b/libbindgen/src/ir/function.rs @@ -1,7 +1,7 @@ //! Intermediate representation for C/C++ functions and methods. use clang; -use clangll::Enum_CXCallingConv; +use clang_sys::CXCallingConv; use parse::{ClangItemParser, ClangSubItemParser, ParseError, ParseResult}; use super::context::{BindgenContext, ItemId}; use super::item::Item; @@ -76,8 +76,8 @@ pub struct FunctionSig { abi: abi::Abi, } -fn get_abi(cc: Enum_CXCallingConv) -> abi::Abi { - use clangll::*; +fn get_abi(cc: CXCallingConv) -> abi::Abi { + use clang_sys::*; match cc { CXCallingConv_Default => abi::Abi::C, CXCallingConv_C => abi::Abi::C, @@ -85,7 +85,7 @@ fn get_abi(cc: Enum_CXCallingConv) -> abi::Abi { CXCallingConv_X86FastCall => abi::Abi::Fastcall, CXCallingConv_AAPCS => abi::Abi::Aapcs, CXCallingConv_X86_64Win64 => abi::Abi::Win64, - other => panic!("unsupported calling convention: {}", other), + other => panic!("unsupported calling convention: {:?}", other), } } @@ -131,7 +131,7 @@ impl FunctionSig { cursor: &clang::Cursor, ctx: &mut BindgenContext) -> Result { - use clangll::*; + use clang_sys::*; debug!("FunctionSig::from_ty {:?} {:?}", ty, cursor); // Don't parse operatorxx functions in C++ @@ -237,7 +237,7 @@ impl ClangSubItemParser for Function { fn parse(cursor: clang::Cursor, context: &mut BindgenContext) -> Result, ParseError> { - use clangll::*; + use clang_sys::*; match cursor.kind() { CXCursor_FunctionDecl | CXCursor_CXXMethod => {} diff --git a/libbindgen/src/ir/item.rs b/libbindgen/src/ir/item.rs index 6601216eb9..47ece3eb06 100644 --- a/libbindgen/src/ir/item.rs +++ b/libbindgen/src/ir/item.rs @@ -1,7 +1,7 @@ //! Bindgen's core intermediate representation type. use clang; -use clangll; +use clang_sys; use parse::{ClangItemParser, ClangSubItemParser, ParseError, ParseResult}; use std::cell::{Cell, RefCell}; use std::fmt::Write; @@ -824,8 +824,8 @@ fn visit_child(cur: clang::Cursor, parent_id: Option, ctx: &mut BindgenContext, result: &mut Result) - -> clangll::Enum_CXChildVisitResult { - use clangll::*; + -> clang_sys::CXChildVisitResult { + use clang_sys::*; if result.is_ok() { return CXChildVisit_Break; } @@ -873,7 +873,7 @@ impl ClangItemParser for Item { use ir::function::Function; use ir::module::Module; use ir::var::Var; - use clangll::*; + use clang_sys::*; if !cursor.is_valid() { return Err(ParseError::Continue); @@ -1049,7 +1049,7 @@ impl ClangItemParser for Item { parent_id: Option, ctx: &mut BindgenContext) -> Result { - use clangll::*; + use clang_sys::*; let decl = { let decl = ty.declaration(); diff --git a/libbindgen/src/ir/module.rs b/libbindgen/src/ir/module.rs index 7546a63c7a..5fae3932ac 100644 --- a/libbindgen/src/ir/module.rs +++ b/libbindgen/src/ir/module.rs @@ -43,7 +43,7 @@ impl ClangSubItemParser for Module { fn parse(cursor: clang::Cursor, ctx: &mut BindgenContext) -> Result, ParseError> { - use clangll::*; + use clang_sys::*; match cursor.kind() { CXCursor_Namespace => { let module_id = ctx.module(cursor); diff --git a/libbindgen/src/ir/ty.rs b/libbindgen/src/ir/ty.rs index 8b0116df40..dde2176e70 100644 --- a/libbindgen/src/ir/ty.rs +++ b/libbindgen/src/ir/ty.rs @@ -531,7 +531,7 @@ impl Type { parent_id: Option, ctx: &mut BindgenContext) -> Result, ParseError> { - use clangll::*; + use clang_sys::*; { let already_resolved = ctx.builtin_or_resolved_ty(potential_id, diff --git a/libbindgen/src/ir/var.rs b/libbindgen/src/ir/var.rs index b819bfa4ec..518141c64b 100644 --- a/libbindgen/src/ir/var.rs +++ b/libbindgen/src/ir/var.rs @@ -88,7 +88,7 @@ impl ClangSubItemParser for Var { fn parse(cursor: clang::Cursor, ctx: &mut BindgenContext) -> Result, ParseError> { - use clangll::*; + use clang_sys::*; use cexpr::expr::EvalResult; use cexpr::literal::CChar; match cursor.kind() { @@ -287,7 +287,7 @@ fn parse_int_literal_tokens(cursor: &clang::Cursor, fn get_integer_literal_from_cursor(cursor: &clang::Cursor, unit: &clang::TranslationUnit) -> Option { - use clangll::*; + use clang_sys::*; let mut value = None; cursor.visit(|c| { match c.kind() { diff --git a/libbindgen/src/lib.rs b/libbindgen/src/lib.rs index 29580f3682..ca7a94609d 100644 --- a/libbindgen/src/lib.rs +++ b/libbindgen/src/lib.rs @@ -56,7 +56,6 @@ macro_rules! doc_mod { }; } -mod clangll; mod clang; mod ir; mod parse; @@ -630,12 +629,12 @@ fn filter_builtins(ctx: &BindgenContext, cursor: &clang::Cursor) -> bool { pub fn parse_one(ctx: &mut BindgenContext, cursor: clang::Cursor, parent: Option) - -> clangll::Enum_CXVisitorResult { + -> clang_sys::CXChildVisitResult { if !filter_builtins(ctx, &cursor) { return CXChildVisit_Continue; } - use clangll::CXChildVisit_Continue; + use clang_sys::CXChildVisit_Continue; match Item::parse(cursor, parent, ctx) { Ok(..) => {}, Err(ParseError::Continue) => {} @@ -648,12 +647,11 @@ pub fn parse_one(ctx: &mut BindgenContext, /// Parse the Clang AST into our `Item` internal representation. fn parse(context: &mut BindgenContext) -> Result<(), ()> { - use clang::Diagnostic; - use clangll::*; + use clang_sys::*; let mut any_error = false; for d in context.translation_unit().diags().iter() { - let msg = d.format(Diagnostic::default_opts()); + let msg = d.format(); let is_err = d.severity() >= CXDiagnostic_Error; println!("{}, err: {}", msg, is_err); any_error |= is_err; From 0608a9c6d31fb68ba5080ddde57527788229ecf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Tue, 13 Dec 2016 18:18:31 +0100 Subject: [PATCH 2/2] cargo: Sort dependencies in libbindgen. --- libbindgen/Cargo.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libbindgen/Cargo.toml b/libbindgen/Cargo.toml index 1c1b15c381..9e913ecba8 100644 --- a/libbindgen/Cargo.toml +++ b/libbindgen/Cargo.toml @@ -24,14 +24,14 @@ shlex = "0.1" quasi_codegen = "0.26" [dependencies] +cexpr = "0.2" cfg-if = "0.1.0" +clang-sys = { version = "0.11.1", features = ["gte_clang_3_6", "gte_clang_3_7", "gte_clang_3_8", "gte_clang_3_9"] } lazy_static = "0.1.*" libc = "0.2" rustc-serialize = "0.3.19" syntex_syntax = "0.50" regex = "0.1" -cexpr = "0.2" -clang-sys = { version = "0.11.1", features = ["gte_clang_3_6", "gte_clang_3_7", "gte_clang_3_8", "gte_clang_3_9"] } [dependencies.aster] features = ["with-syntex"]