static public Method

Internal.makeMetaData(classname, classinfos, dbus, signals, slots)

There's no documentation for this item.

Source Code

# File qt/qtruby4.rb, line 2436
def Internal.makeMetaData(classname, classinfos, dbus, signals, slots)
        # Each entry in 'stringdata' corresponds to a string in the
        # qt_meta_stringdata_<classname> structure.
        # 'pack_string' is used to convert 'stringdata' into the
        # binary sequence of null terminated strings for the metaObject
        stringdata = []
        pack_string = ""
        string_table = string_table_handler(stringdata, pack_string)

        # This is used to create the array of uints that make up the
        # qt_meta_data_<classname> structure in the metaObject
        data = [1,                                                           # revision
                        string_table.call(classname),      # classname
                        classinfos.length, classinfos.length > 0 ? 10 : 0,         # classinfo
                        signals.length + slots.length, 
                        10 + (2*classinfos.length),        # methods
                        0, 0,                                                      # properties
                        0, 0]                                                      # enums/sets

        classinfos.each do |entry|
                data.push string_table.call(entry[0])               # key
                data.push string_table.call(entry[1])               # value
        end

        signals.each do |entry|
                data.push string_table.call(entry.full_name)                                # signature
                data.push string_table.call(entry.full_name.delete("^,"))   # parameters
                data.push string_table.call(entry.reply_type)                               # type, "" means void
                data.push string_table.call("")                             # tag
                if dbus
                        data.push MethodScriptable | MethodSignal | AccessPublic
                else
                        data.push MethodSignal | AccessProtected   # flags, always protected for now
                end
        end

        slots.each do |entry|
                data.push string_table.call(entry.full_name)                                # signature
                data.push string_table.call(entry.full_name.delete("^,"))   # parameters
                data.push string_table.call(entry.reply_type)                               # type, "" means void
                data.push string_table.call("")                             # tag
                if dbus
                        data.push MethodScriptable | MethodSlot | AccessPublic     # flags, always public for now
                else
                        data.push MethodSlot | AccessPublic                # flags, always public for now
                end
        end

        data.push 0          # eod

        return [stringdata.pack(pack_string), data]
end
Comments

Have your say
Please use Textile formatting (click here for a cheat sheet). Use <code/> and <pre/> for code samples.
Click here to login with OpenID to to post comments.