summaryrefslogtreecommitdiffstats
path: root/lib/efl/native/eina_list.rb
blob: 1d5396aac21021f96c5682b57770f74f0969b844 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#! /usr/bin/env ruby
# -*- coding: UTF-8 -*-
#
require 'efl/ffi'
#
module Efl
    #
    module EinaList
        #
        def self.method_missing m, *args, &block
            m_s = m.to_s
            if m_s =~/^(.*)=$/
                m_s = $1+'_set'
                args_s = '*args[0]'
            elsif m_s =~/^(.*)\?$/
                m_s = $1+'_get'
                args_s = '*args'
            else
                args_s = '*args'
            end
            sym = (
                if Efl::Native.respond_to? 'eina_list_'+m_s
                    'eina_list_'+m_s
                elsif Efl::Native.respond_to? m_s
                    m_s
                elsif Efl::Native.respond_to? 'eina_list_'+m_s+'_get'
                    'eina_list_'+m_s+'_get'
                elsif Efl::Native.respond_to? m_s+'_get'
                    m_s+'_get'
                else
                    raise NameError.new "#{self.name}.#{m_s} (#{m})"
                end
            )
            self.module_eval "def self.#{m} *args, █ r=Efl::Native.#{sym}(*args); yield r if block_given?; r; end"
            self.send m, *args, &block
        end
        #
    end
    #
    module Native
        #
        extend Efl::FFIHelper
        #
        ffi_lib 'eina'
        #
        # ENUMS
        #
        # TYPEDEFS
        # typedef struct _Eina_List Eina_List;
        typedef :pointer, :eina_list
        typedef :pointer, :eina_list_p
        typedef :pointer, :eina_list_pp
        # typedef struct _Eina_List_Accounting Eina_List_Accounting;
        typedef :pointer, :eina_list_accounting
        #
        # CALLBACKS
        #
        # VARIABLES
        #
        # FUNCTIONS
        fcts = [
        # EAPI Eina_List *eina_list_append(Eina_List *list, const void *data);
        [ :eina_list_append, [ :eina_list_p, :void_p ], :eina_list_p ],
        # EAPI Eina_List *eina_list_prepend(Eina_List *list, const void *data);
        [ :eina_list_prepend, [ :eina_list_p, :void_p ], :eina_list_p ],
        # EAPI Eina_List *eina_list_append_relative(Eina_List *list, const void *data, const void *relative);
        [ :eina_list_append_relative, [ :eina_list_p, :void_p, :void_p ], :eina_list_p ],
        # EAPI Eina_List *eina_list_append_relative_list(Eina_List *list, const void *data, Eina_List *relative);
        [ :eina_list_append_relative_list, [ :eina_list_p, :void_p, :eina_list_p ], :eina_list_p ],
        # EAPI Eina_List *eina_list_prepend_relative(Eina_List *list, const void *data, const void *relative);
        [ :eina_list_prepend_relative, [ :eina_list_p, :void_p, :void_p ], :eina_list_p ],
        # EAPI Eina_List *eina_list_prepend_relative_list(Eina_List *list, const void *data, Eina_List *relative);
        [ :eina_list_prepend_relative_list, [ :eina_list_p, :void_p, :eina_list_p ], :eina_list_p ],
        # EAPI Eina_List *eina_list_sorted_insert(Eina_List *list, Eina_Compare_Cb func, const void *data);
        [ :eina_list_sorted_insert, [ :eina_list_p, :eina_compare_cb, :void_p ], :eina_list_p ],
        # EAPI Eina_List *eina_list_remove(Eina_List *list, const void *data);
        [ :eina_list_remove, [ :eina_list_p, :void_p ], :eina_list_p ],
        # EAPI Eina_List *eina_list_remove_list(Eina_List *list, Eina_List *remove_list);
        [ :eina_list_remove_list, [ :eina_list_p, :eina_list_p ], :eina_list_p ],
        # EAPI Eina_List *eina_list_promote_list(Eina_List *list, Eina_List *move_list);
        [ :eina_list_promote_list, [ :eina_list_p, :eina_list_p ], :eina_list_p ],
        # EAPI Eina_List *eina_list_demote_list(Eina_List *list, Eina_List *move_list);
        [ :eina_list_demote_list, [ :eina_list_p, :eina_list_p ], :eina_list_p ],
        # EAPI void *eina_list_data_find(const Eina_List *list, const void *data);
        [ :eina_list_data_find, [ :eina_list_p, :void_p ], :void_p ],
        # EAPI Eina_List *eina_list_data_find_list(const Eina_List *list, const void *data);
        [ :eina_list_data_find_list, [ :eina_list_p, :void_p ], :eina_list_p ],
        # EAPI Eina_Bool eina_list_move(Eina_List **to, Eina_List **from, void *data);
        [ :eina_list_move, [ :eina_list_pp, :eina_list_pp, :void_p ], :eina_bool ],
        # EAPI Eina_Bool eina_list_move_list(Eina_List **to, Eina_List **from, Eina_List *data);
        [ :eina_list_move_list, [ :eina_list_pp, :eina_list_pp, :eina_list_p ], :eina_bool ],
        # EAPI Eina_List *eina_list_free(Eina_List *list);
        [ :eina_list_free, [ :eina_list_p ], :eina_list_p ],
        # EAPI void *eina_list_nth(const Eina_List *list, unsigned int n);
        [ :eina_list_nth, [ :eina_list_p, :uint ], :void_p ],
        # EAPI Eina_List *eina_list_nth_list(const Eina_List *list, unsigned int n);
        [ :eina_list_nth_list, [ :eina_list_p, :uint ], :eina_list_p ],
        # EAPI Eina_List *eina_list_reverse(Eina_List *list);
        [ :eina_list_reverse, [ :eina_list_p ], :eina_list_p ],
        # EAPI Eina_List *eina_list_reverse_clone(const Eina_List *list);
        [ :eina_list_reverse_clone, [ :eina_list_p ], :eina_list_p ],
        # EAPI Eina_List *eina_list_clone(const Eina_List *list);
        [ :eina_list_clone, [ :eina_list_p ], :eina_list_p ],
        # EAPI Eina_List *eina_list_sort(Eina_List *list, unsigned int size, Eina_Compare_Cb func);
        [ :eina_list_sort, [ :eina_list_p, :uint, :eina_compare_cb ], :eina_list_p ],
        # EAPI Eina_List *eina_list_merge(Eina_List *left, Eina_List *right);
        [ :eina_list_merge, [ :eina_list_p, :eina_list_p ], :eina_list_p ],
        # EAPI Eina_List *eina_list_sorted_merge(Eina_List *left, Eina_List *right, Eina_Compare_Cb func);
        [ :eina_list_sorted_merge, [ :eina_list_p, :eina_list_p, :eina_compare_cb ], :eina_list_p ],
        # EAPI Eina_List *eina_list_split_list(Eina_List *list, Eina_List *relative, Eina_List **right);
        [ :eina_list_split_list, [ :eina_list_p, :eina_list_p, :eina_list_pp ], :eina_list_p ],
        # EAPI Eina_List *eina_list_search_sorted_near_list(const Eina_List *list, Eina_Compare_Cb func, const void *data, int *result_cmp);
        [ :eina_list_search_sorted_near_list, [ :eina_list_p, :eina_compare_cb, :void_p, :int_p ], :eina_list_p ],
        # EAPI Eina_List *eina_list_search_sorted_list(const Eina_List *list, Eina_Compare_Cb func, const void *data);
        [ :eina_list_search_sorted_list, [ :eina_list_p, :eina_compare_cb, :void_p ], :eina_list_p ],
        # EAPI void *eina_list_search_sorted(const Eina_List *list, Eina_Compare_Cb func, const void *data);
        [ :eina_list_search_sorted, [ :eina_list_p, :eina_compare_cb, :void_p ], :void_p ],
        # EAPI Eina_List *eina_list_search_unsorted_list(const Eina_List *list, Eina_Compare_Cb func, const void *data);
        [ :eina_list_search_unsorted_list, [ :eina_list_p, :eina_compare_cb, :void_p ], :eina_list_p ],
        # EAPI void *eina_list_search_unsorted(const Eina_List *list, Eina_Compare_Cb func, const void *data);
        [ :eina_list_search_unsorted, [ :eina_list_p, :eina_compare_cb, :void_p ], :void_p ],
        # EAPI Eina_Iterator *eina_list_iterator_new(const Eina_List *list);
        [ :eina_list_iterator_new, [ :eina_list_p ], :eina_iterator_p ],
        # EAPI Eina_Iterator *eina_list_iterator_reversed_new(const Eina_List *list);
        [ :eina_list_iterator_reversed_new, [ :eina_list_p ], :eina_iterator_p ],
        # EAPI Eina_Accessor *eina_list_accessor_new(const Eina_List *list);
        [ :eina_list_accessor_new, [ :eina_list_p ], :eina_accessor_p ],
        ]
        #
        attach_fcts fcts
        #
    end
end
#
# EOF