summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/efl/native.rb54
1 files changed, 43 insertions, 11 deletions
diff --git a/lib/efl/native.rb b/lib/efl/native.rb
index 1908595..3b3dcce 100644
--- a/lib/efl/native.rb
+++ b/lib/efl/native.rb
@@ -1,16 +1,48 @@
#! /usr/bin/env ruby
# -*- coding: UTF-8 -*-
#
-require 'efl/native/eet'
-require 'efl/native/eina'
-require 'efl/native/eina_hash'
-require 'efl/native/eina_list'
-require 'efl/native/evas'
-require 'efl/native/ecore'
-require 'efl/native/ecore_evas'
-require 'efl/native/ecore_getopt'
-require 'efl/native/ecore_input'
-require 'efl/native/edje'
-require 'efl/native/elementary'
+require 'ffi'
+#
+module Efl
+ #
+ module Native
+ #
+ extend FFI::Library
+ #
+ def self.attach_fcts fcts
+ fcts.each do |func|
+ begin
+ attach_function(*func)
+ rescue Object => e
+ puts "Could not attach #{func} #{e.message}"
+ end
+ end
+ end
+ #
+ class << self
+ def find_variable name
+ ffi_libraries.each do |lib|
+ address = lib.find_variable name
+ return address if not address.nil?
+ end
+ return nil
+ end
+ end
+ #
+ class VersionStruct < FFI::Struct
+ layout :major, :int,
+ :minor, :int,
+ :micro, :int,
+ :revision, :int
+
+ def full
+ [:major,:minor,:micro,:revision].collect { |e| self[e].to_s }.join '.'
+ end
+ end
+ end
+ #
+end
+#
+require 'efl/native/eina_types'
#
# EOF