Skip to content

Commit

Permalink
misc. GI simplifications
Browse files Browse the repository at this point in the history
  • Loading branch information
jwahlstrand committed Jun 19, 2023
1 parent 7c21312 commit e45015a
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 80 deletions.
46 changes: 12 additions & 34 deletions GI/src/giexport.jl
Original file line number Diff line number Diff line change
Expand Up @@ -100,9 +100,7 @@ function struct_exprs!(exprs,exports,ns,structs=nothing;print_summary=true,exclu
end
end
push!(exports.args, get_full_name(ssi))
if length(fields)>0
push!(exports.args,get_struct_name(ssi,false))
end
length(fields)>0 && push!(exports.args,get_struct_name(ssi,false))
end

for ss in structs
Expand Down Expand Up @@ -148,9 +146,7 @@ function all_struct_exprs!(exprs,exports,ns;print_summary=true,excludelist=[],co
push!(exprs, decl(ssi,in(name,import_as_opaque)))
push!(exports.args, get_full_name(ssi))
push!(loaded, name)
if length(fields)>0
push!(exports.args,get_struct_name(ssi,false))
end
length(fields)>0 && push!(exports.args,get_struct_name(ssi,false))
end

if output_cache_init
Expand All @@ -163,9 +159,7 @@ function all_struct_exprs!(exprs,exports,ns;print_summary=true,excludelist=[],co

for ssi in ss
constructors = get_constructors(ssi;skiplist=constructor_skiplist, struct_skiplist=struct_skiplist)
if !isempty(constructors)
append!(exprs,constructors)
end
isempty(constructors) || append!(exprs,constructors)
end

if print_summary
Expand All @@ -189,24 +183,17 @@ function all_struct_methods!(exprs,ns;print_summary=true,print_detailed=false,sk
skipped+=length(methods)
continue
end
if print_detailed
printstyled(name,"\n";bold=true)
end
print_detailed && printstyled(name,"\n";bold=true)
for m in methods
if in(get_name(m),skiplist)
skipped+=1
continue
end
flags = get_flags(m)
if flags & (GIFunction.IS_CONSTRUCTOR | GIFunction.IS_METHOD) == 0
continue
end
if is_deprecated(m)
if get_flags(m) & (GIFunction.IS_CONSTRUCTOR | GIFunction.IS_METHOD) == 0
continue
end
if print_detailed
println(get_name(m))
end
is_deprecated(m) && continue
print_detailed && println(get_name(m))
try
fun=create_method(m, liboverride)
push!(exprs, fun)
Expand Down Expand Up @@ -258,8 +245,7 @@ function all_objects!(exprs,exports,ns;print_summary=true,handled=Symbol[],skipl
imported -= 1
continue
end
type_init = get_type_init(o)
if type_init==:intern # GParamSpec and children output this
if get_type_init(o)==:intern # GParamSpec and children output this
continue
end
obj_decl!(exprs,o,ns,handled)
Expand All @@ -273,13 +259,9 @@ function all_objects!(exprs,exports,ns;print_summary=true,handled=Symbol[],skipl
push!(exprs,gtype_cache_init)
end
for o in objects
if in(get_name(o), skiplist)
continue
end
in(get_name(o), skiplist) && continue
constructors = get_constructors(o;skiplist=constructor_skiplist, struct_skiplist=skiplist)
if !isempty(constructors)
append!(exprs,constructors)
end
isempty(constructors) || append!(exprs,constructors)
end
if print_summary
printstyled("Created ",imported," objects out of ",length(objects),"\n";color=:green)
Expand All @@ -304,9 +286,7 @@ function all_object_methods!(exprs,ns;skiplist=Symbol[],object_skiplist=Symbol[]
skipped+=1
continue
end
if is_deprecated(m)
continue
end
is_deprecated(m) && continue
try
fun=create_method(m, liboverride)
push!(exprs, fun)
Expand Down Expand Up @@ -364,9 +344,7 @@ function all_interface_methods!(exprs,ns;skiplist=Symbol[],interface_skiplist=Sy
skipped+=1
continue
end
if is_deprecated(m)
continue
end
is_deprecated(m) && continue
try
fun=create_method(m, liboverride)
push!(exprs, fun)
Expand Down
60 changes: 14 additions & 46 deletions GI/src/giimport.jl
Original file line number Diff line number Diff line change
Expand Up @@ -342,8 +342,7 @@ end

## Handling argument types, creating methods

mutable struct NotImplementedError <: Exception
end
struct NotImplementedError <: Exception end

abstract type InstanceType end
is_pointer(::Type{InstanceType}) = true
Expand Down Expand Up @@ -689,9 +688,7 @@ function extract_type(typeinfo::TypeInfo, info::ObjectLike)
end

#this should only be used for stuff that's hard to implement as cconvert
function convert_to_c(name::Symbol, info::GIArgInfo, ti::TypeDesc)
nothing
end
convert_to_c(name::Symbol, info::GIArgInfo, ti::TypeDesc) = nothing

function convert_from_c(name::Symbol, arginfo::ArgInfo, ti::TypeDesc{T}) where {T}
# check transfer
Expand Down Expand Up @@ -721,46 +718,21 @@ end
types(args::Array{Arg}) = [a.typ for a in args]
names(args::Array{Arg}) = [a.name for a in args]
function jparams(args::Array{Arg})
arr = Union{Expr,Symbol}[]
for a in args
push!(arr, a.typ !== :Any ? :($(a.name)::$(a.typ)) : a.name)
end
arr
[a.typ !== :Any ? :($(a.name)::$(a.typ)) : a.name for a in args]
end

# Map library names onto exports of *_jll
# TODO: make this more elegant
libnames = Dict("libglib"=>:libglib, "libgobject"=>:libgobject,
"libgio"=>:libgio, "libcairo-gobject"=>:libcairo_gobject,
"libpangocairo"=>:libpangocairo, "libpangoft"=>:libpangoft,
"libpango"=>:libpango, "libatk"=>:libatk,
"libgdk_pixbuf"=>:libgdkpixbuf, "libgdk-3"=>:libgdk3,
"libgtk-3"=>:libgtk3, "libgraphene"=>:libgraphene,
"libgtk-4"=>:libgtk4, "libaravis"=>:libaravis)
function symbol_from_lib(libname)
if occursin("libglib",libname)
return :libglib
elseif occursin("libgobject",libname)
return :libgobject
elseif occursin("libgio",libname)
return :libgio
elseif occursin("libcairo-gobject",libname)
return :libcairo_gobject
elseif occursin("libpangocairo",libname)
return :libpangocairo
elseif occursin("libpangoft",libname)
return :libpangoft
elseif occursin("libpango",libname)
return :libpango
elseif occursin("libatk",libname)
return :libatk
elseif occursin("libgdk_pixbuf",libname)
return :libgdkpixbuf
elseif occursin("libgdk-3",libname)
return :libgdk3
elseif occursin("libgtk-3",libname)
return :libgtk3
elseif occursin("libgraphene",libname)
return :libgraphene
elseif occursin("libgtk-4",libname)
return :libgtk4
elseif occursin("libaravis",libname)
return :libaravis
end
libname
ks = collect(keys(libnames))
k=findfirst(n->occursin(n, libname), ks)
isnothing(k) ? libname : libnames[ks[k]]
end

function make_ccall(slib::Union{String,Symbol}, id, rtype, args)
Expand Down Expand Up @@ -864,11 +836,7 @@ end

function constructor_name(info, mname)
object = get_container(info)
if object !== nothing
return Symbol("$(get_name(object))_$mname")
else
return mname
end
object !== nothing ? Symbol("$(get_name(object))_$mname") : mname
end

# with some partial-evaluation half-magic
Expand Down

0 comments on commit e45015a

Please sign in to comment.