Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Don't use "ffi" suffix for sys crates #737

Merged
merged 2 commits into from Mar 7, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
13 changes: 4 additions & 9 deletions src/analysis/ffi_type.rs
Expand Up @@ -2,7 +2,6 @@ use analysis::c_type::{implements_c_type, rustify_pointers};
use analysis::rust_type::{Result, TypeError};
use env::Env;
use library::*;
use nameutil::ffi_crate_name;
use traits::*;

pub fn used_ffi_type(env: &Env, type_id: TypeId, c_type: &str) -> Option<String> {
Expand Down Expand Up @@ -67,7 +66,7 @@ fn ffi_inner(env: &Env, tid: TypeId, inner: &str) -> Result {
use library::Fundamental::*;
let inner = match fund {
None => "libc::c_void",
Boolean => return Ok(format!("{}::gboolean", ffi_crate_name("GLib", env))),
Boolean => return Ok("glib_sys::gboolean".into()),
Int8 => "i8",
UInt8 => "u8",
Int16 => "i16",
Expand All @@ -91,7 +90,7 @@ fn ffi_inner(env: &Env, tid: TypeId, inner: &str) -> Result {
UniChar => "u32",
Utf8 => "libc::c_char",
Filename => "libc::c_char",
Type => "glib_ffi::GType",
Type => "glib_sys::GType",
IntPtr => "libc::intptr_t",
UIntPtr => "libc::uintptr_t",
_ => return Err(TypeError::Unimplemented(inner.into())),
Expand Down Expand Up @@ -166,17 +165,13 @@ fn fix_name(env: &Env, type_id: TypeId, name: &str) -> Result {
Type::PtrArray(..) |
Type::List(..) |
Type::SList(..) |
Type::HashTable(..) => Ok(format!(
"{}::{}",
&env.namespaces[env.namespaces.glib_ns_id].ffi_crate_name,
name
)),
Type::HashTable(..) => Ok(format!("glib_sys::{}", name)),
_ => Ok(name.into()),
}
} else {
let name_with_prefix = format!(
"{}::{}",
&env.namespaces[type_id.ns_id].ffi_crate_name,
&env.namespaces[type_id.ns_id].sys_crate_name,
name
);
if env.type_status_sys(&type_id.full_name(&env.library)).ignored() {
Expand Down
14 changes: 7 additions & 7 deletions src/analysis/functions.rs
Expand Up @@ -168,7 +168,7 @@ fn fixup_gpointer_parameter(
ref_mode: RefMode::ByRef,
to_glib_extra: String::new(),
explicit_target_type: format!("*mut {}", ffi_name),
pointer_cast: " as glib_ffi::gconstpointer".into(),
pointer_cast: " as glib_sys::gconstpointer".into(),
in_trait: false,
nullable: false,
},
Expand All @@ -189,7 +189,7 @@ fn fixup_special_functions(
&& parameters.c_parameters[0].c_type == "gconstpointer"
{
fixup_gpointer_parameter(env, type_tid, parameters, 0);
imports.add("glib_ffi", None);
imports.add("glib_sys", None);
}

if (name == "compare" || name == "equal" || name == "is_equal")
Expand All @@ -199,7 +199,7 @@ fn fixup_special_functions(
{
fixup_gpointer_parameter(env, type_tid, parameters, 0);
fixup_gpointer_parameter(env, type_tid, parameters, 1);
imports.add("glib_ffi", None);
imports.add("glib_sys", None);
}
}

Expand Down Expand Up @@ -575,11 +575,11 @@ fn analyze_function(

if async && !commented {
if env.config.library_name != "Gio" {
imports.add("gio_ffi", version);
imports.add("gio_sys", version);
imports.add_with_constraint("gio", version, Some("futures"));
}
imports.add("glib_ffi", version);
imports.add("gobject_ffi", version);
imports.add("glib_sys", version);
imports.add("gobject_sys", version);
imports.add("std::ptr", version);
imports.add_with_constraint("futures_core", version, Some("futures"));
imports.add_with_constraint("std::boxed::Box as Box_", version, Some("futures"));
Expand Down Expand Up @@ -732,7 +732,7 @@ fn analyze_async(
*trampoline = Some(AsyncTrampoline {
is_method: func.kind == FunctionKind::Method,
name: format!("{}_trampoline", func.name),
finish_func_name,
finish_func_name: format!("{}::{}", env.main_sys_crate_name(), finish_func_name),
callback_type,
bound_name,
output_params,
Expand Down
2 changes: 1 addition & 1 deletion src/analysis/mod.rs
Expand Up @@ -107,7 +107,7 @@ fn analyze_global_functions(env: &mut Env) {

let mut imports = imports::Imports::new(&env.library);
imports.add("glib::translate::*", None);
imports.add("ffi", None);
imports.add(env.main_sys_crate_name(), None);

let functions = functions::analyze(
env,
Expand Down
21 changes: 5 additions & 16 deletions src/analysis/namespaces.rs
Expand Up @@ -12,7 +12,7 @@ pub const INTERNAL: NsId = library::INTERNAL_NAMESPACE;
pub struct Namespace {
pub name: String,
pub crate_name: String,
pub ffi_crate_name: String,
pub sys_crate_name: String,
pub higher_crate_name: String,
pub package_name: Option<String>,
pub shared_libs: Vec<String>,
Expand Down Expand Up @@ -44,32 +44,19 @@ pub fn run(gir: &library::Library) -> Info {
let mut namespaces = Vec::with_capacity(gir.namespaces.len());
let mut is_glib_crate = false;
let mut glib_ns_id = None;
let mut is_gobject = false;

for (ns_id, ns) in gir.namespaces.iter().enumerate() {
let ns_id = ns_id as NsId;
let crate_name = nameutil::crate_name(&ns.name);
let mut is_local_ffi = ns_id == MAIN;
if is_local_ffi && ns.name == "GObject" {
is_gobject = true;
is_local_ffi = false;
is_glib_crate = true;
} else if is_gobject && ns.name == "GLib" {
is_local_ffi = true;
}
let ffi_crate_name = if is_local_ffi {
"ffi".to_owned()
} else {
format!("{}_ffi", crate_name)
};
let sys_crate_name = format!("{}_sys", crate_name);
let higher_crate_name = match &crate_name[..] {
"gobject" => "glib".to_owned(),
_ => crate_name.clone(),
};
namespaces.push(Namespace {
name: ns.name.clone(),
crate_name,
ffi_crate_name,
sys_crate_name,
higher_crate_name,
package_name: ns.package_name.clone(),
shared_libs: ns.shared_library.clone(),
Expand All @@ -80,6 +67,8 @@ pub fn run(gir: &library::Library) -> Info {
if ns_id == MAIN {
is_glib_crate = true;
}
} else if ns.name == "GObject" && ns_id == MAIN {
is_glib_crate = true;
}
}

Expand Down
4 changes: 2 additions & 2 deletions src/analysis/object.rs
Expand Up @@ -75,7 +75,7 @@ pub fn class(env: &Env, obj: &GObject, deps: &[library::TypeId]) -> Option<Info>

let mut imports = Imports::with_defined(&env.library, &name);
imports.add("glib::translate::*", None);
imports.add("ffi", None);
imports.add(env.main_sys_crate_name(), None);
if obj.generate_display_trait {
imports.add("std::fmt", None);
}
Expand Down Expand Up @@ -242,7 +242,7 @@ pub fn interface(env: &Env, obj: &GObject, deps: &[library::TypeId]) -> Option<I

let mut imports = Imports::with_defined(&env.library, &name);
imports.add("glib::translate::*", None);
imports.add("ffi", None);
imports.add(env.main_sys_crate_name(), None);
imports.add("glib::object::IsA", None);
if obj.generate_display_trait {
imports.add("std::fmt", None);
Expand Down
6 changes: 3 additions & 3 deletions src/analysis/properties.rs
Expand Up @@ -78,7 +78,7 @@ pub fn analyze(
imports.add_used_type(s, prop.version);
}
if type_string.is_ok() {
imports.add("gobject_ffi", prop.version);
imports.add("gobject_sys", prop.version);
imports.add("glib::Value", prop.version);
imports.add("glib::StaticType", prop.version);
}
Expand All @@ -90,7 +90,7 @@ pub fn analyze(
imports.add_used_type(s, prop.version);
}
if type_string.is_ok() {
imports.add("gobject_ffi", prop.version);
imports.add("gobject_sys", prop.version);
imports.add("glib::Value", prop.version);
}

Expand Down Expand Up @@ -280,7 +280,7 @@ fn analyze_property(
imports.add("glib::signal::SignalHandlerId", prop_version);
imports.add("std::mem::transmute", prop_version);
imports.add("std::boxed::Box as Box_", prop_version);
imports.add("glib_ffi", prop_version);
imports.add("glib_sys", prop_version);

Some(signals::Info {
connect_name: format!("connect_property_{}_notify", name_for_func),
Expand Down
6 changes: 3 additions & 3 deletions src/analysis/record.rs
Expand Up @@ -76,12 +76,12 @@ pub fn new(env: &Env, obj: &GObject) -> Option<Info> {
let use_boxed_functions = obj.use_boxed_functions;

let mut imports = Imports::with_defined(&env.library, &name);
imports.add("ffi", None);
imports.add(env.main_sys_crate_name(), None);
if record.glib_get_type.is_some() {
if use_boxed_functions {
imports.add("gobject_ffi", None);
imports.add("gobject_sys", None);
} else if let RecordType::AutoBoxed = RecordType::of(&record) {
imports.add("gobject_ffi", None);
imports.add("gobject_sys", None);
}
}

Expand Down
4 changes: 2 additions & 2 deletions src/analysis/ref_mode.rs
Expand Up @@ -9,8 +9,8 @@ pub enum RefMode {
None,
ByRef,
ByRefMut,
ByRefImmut, //immutable reference with mutable pointer in ffi
ByRefConst, //instance parameters in trait function with const pointer in ffi
ByRefImmut, //immutable reference with mutable pointer in sys
ByRefConst, //instance parameters in trait function with const pointer in sys
ByRefFake,
}

Expand Down
4 changes: 2 additions & 2 deletions src/analysis/signals.rs
Expand Up @@ -91,7 +91,7 @@ fn analyze_signal(

let action_emit_name = if signal.is_action {
imports.add("glib", version);
imports.add("gobject_ffi", version);
imports.add("gobject_sys", version);
imports.add("glib::object::ObjectExt", version);
Some(format!("emit_{}", nameutil::signal_to_snake(&signal.name)))
} else {
Expand All @@ -109,7 +109,7 @@ fn analyze_signal(
imports.add("glib::signal::SignalHandlerId", version);
imports.add("std::mem::transmute", version);
imports.add("std::boxed::Box as Box_", version);
imports.add("glib_ffi", version);
imports.add("glib_sys", version);
}

let info = Info {
Expand Down
6 changes: 4 additions & 2 deletions src/chunk/mod.rs
Expand Up @@ -4,9 +4,11 @@ pub mod conversion_from_glib;
pub mod parameter_ffi_call_out;

pub use self::chunk::{chunks, Chunk, Param, TupleMode};
use env::Env;

pub fn ffi_function_todo(name: &str) -> Chunk {
let call = Chunk::FfiCallTODO(name.into());
pub fn ffi_function_todo(env: &Env, name: &str) -> Chunk {
let sys_crate_name = env.main_sys_crate_name();
let call = Chunk::FfiCallTODO(format!("{}:{}", sys_crate_name, name));
let unsafe_ = Chunk::UnsafeSmart(chunks(call));
let block = Chunk::BlockHalf(chunks(unsafe_));
Chunk::Comment(chunks(block))
Expand Down
6 changes: 4 additions & 2 deletions src/codegen/constants.rs
Expand Up @@ -14,7 +14,8 @@ pub fn generate(env: &Env, root_path: &Path, mod_rs: &mut Vec<String>) {
return;
}

imports.add("ffi", None);
let sys_crate_name = env.main_sys_crate_name();
imports.add(sys_crate_name, None);
imports.add("std::ffi::CStr", None);

file_saver::save_to_file(path, env.config.make_backup, |w| {
Expand All @@ -40,7 +41,8 @@ pub fn generate(env: &Env, root_path: &Path, mod_rs: &mut Vec<String>) {
try!(writeln!(
w,
" pub static ref {name}: &'static str = \
unsafe{{CStr::from_ptr(ffi::{c_id}).to_str().unwrap()}};",
unsafe{{CStr::from_ptr({sys_crate_name}::{c_id}).to_str().unwrap()}};",
sys_crate_name = sys_crate_name,
name = constant.name,
c_id = constant.glib_name
));
Expand Down
28 changes: 17 additions & 11 deletions src/codegen/enums.rs
Expand Up @@ -47,7 +47,7 @@ pub fn generate(env: &Env, root_path: &Path, mod_rs: &mut Vec<String>) {
}

let mut imports = Imports::new(&env.library);
imports.add("ffi", None);
imports.add(env.main_sys_crate_name(), None);
if has_get_quark {
imports.add("glib::Quark", None);
imports.add("glib::error::ErrorDomain", None);
Expand All @@ -59,7 +59,7 @@ pub fn generate(env: &Env, root_path: &Path, mod_rs: &mut Vec<String>) {
imports.add("glib::value::SetValue", None);
imports.add("glib::value::FromValue", None);
imports.add("glib::value::FromValueOptional", None);
imports.add("gobject_ffi", None);
imports.add("gobject_sys", None);
}
imports.add("glib::translate::*", None);

Expand Down Expand Up @@ -99,6 +99,7 @@ fn generate_enum(env: &Env, w: &mut Write, enum_: &Enumeration, config: &GObject

let mut members: Vec<Member> = Vec::new();
let mut vals: HashSet<String> = HashSet::new();
let sys_crate_name = env.main_sys_crate_name();

for member in &enum_.members {
let member_config = config.members.matched(&member.name);
Expand Down Expand Up @@ -183,10 +184,11 @@ fn generate_enum(env: &Env, w: &mut Write, enum_: &Enumeration, config: &GObject
w,
"#[doc(hidden)]
impl ToGlib for {name} {{
type GlibType = ffi::{ffi_name};
type GlibType = {sys_crate_name}::{ffi_name};

fn to_glib(&self) -> ffi::{ffi_name} {{
fn to_glib(&self) -> {sys_crate_name}::{ffi_name} {{
match *self {{",
sys_crate_name = sys_crate_name,
name = enum_.name,
ffi_name = enum_.c_type
));
Expand All @@ -195,9 +197,10 @@ impl ToGlib for {name} {{
try!(version_condition(w, env, member.version, false, 3));
try!(writeln!(
w,
"\t\t\t{}::{} => ffi::{},",
"\t\t\t{}::{} => {}::{},",
enum_.name,
member.name,
sys_crate_name,
member.c_name
));
}
Expand Down Expand Up @@ -227,9 +230,10 @@ impl ToGlib for {name} {{
try!(writeln!(
w,
"#[doc(hidden)]
impl FromGlib<ffi::{ffi_name}> for {name} {{
fn from_glib(value: ffi::{ffi_name}) -> Self {{
impl FromGlib<{sys_crate_name}::{ffi_name}> for {name} {{
fn from_glib(value: {sys_crate_name}::{ffi_name}) -> Self {{
{assert}match value {{",
sys_crate_name = sys_crate_name,
name = enum_.name,
ffi_name = enum_.c_type,
assert = assert
Expand Down Expand Up @@ -270,7 +274,7 @@ impl FromGlib<ffi::{ffi_name}> for {name} {{
w,
"impl ErrorDomain for {name} {{
fn domain() -> Quark {{
{assert}unsafe {{ from_glib(ffi::{get_quark}()) }}
{assert}unsafe {{ from_glib({sys_crate_name}::{get_quark}()) }}
}}

fn code(self) -> i32 {{
Expand All @@ -279,6 +283,7 @@ impl FromGlib<ffi::{ffi_name}> for {name} {{

fn from(code: i32) -> Option<Self> {{
{assert}match code {{",
sys_crate_name = sys_crate_name,
name = enum_.name,
get_quark = get_quark,
assert = assert
Expand Down Expand Up @@ -323,9 +328,10 @@ impl FromGlib<ffi::{ffi_name}> for {name} {{
w,
"impl StaticType for {name} {{
fn static_type() -> Type {{
unsafe {{ from_glib(ffi::{get_type}()) }}
unsafe {{ from_glib({sys_crate_name}::{get_type}()) }}
}}
}}",
sys_crate_name = sys_crate_name,
name = enum_.name,
get_type = get_type
));
Expand All @@ -350,7 +356,7 @@ impl FromGlib<ffi::{ffi_name}> for {name} {{
w,
"impl<'a> FromValue<'a> for {name} {{
unsafe fn from_value(value: &Value) -> Self {{
from_glib(gobject_ffi::g_value_get_enum(value.to_glib_none().0))
from_glib(gobject_sys::g_value_get_enum(value.to_glib_none().0))
}}
}}",
name = enum_.name,
Expand All @@ -363,7 +369,7 @@ impl FromGlib<ffi::{ffi_name}> for {name} {{
w,
"impl SetValue for {name} {{
unsafe fn set_value(value: &mut Value, this: &Self) {{
gobject_ffi::g_value_set_enum(value.to_glib_none_mut().0, this.to_glib())
gobject_sys::g_value_set_enum(value.to_glib_none_mut().0, this.to_glib())
}}
}}",
name = enum_.name,
Expand Down