]> git.ipfire.org Git - thirdparty/vala.git/commit
Added support for direct generics wip/direct-generics 0c53c5ec3a5f464febca4d82a257afa98241ba01 52/head
authorJakub Kaszycki <jakub@kaszycki.net.pl>
Thu, 7 Mar 2019 19:32:22 +0000 (20:32 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Fri, 22 Mar 2019 21:51:40 +0000 (22:51 +0100)
commit0c53c5ec3a5f464febca4d82a257afa98241ba01
tree28fbfcaf3b405103e02c9d11be80b9a4e4d21176
parentf83ecd81d6ede886e1d2573c60da28b993db89e3
Added support for direct generics

Direct generics are a rare phenomenon, the only notable example in GLib
is GArray. Direct generics are handled using macros/sizeof and passed
around by pointers (not in pointers), so they need not fit in a pointer.
Thus, values like double, int64 or even funny structure types can be
stored in GArray (unlike GPtrArray or GHashTable).

This commit implements a complete support of direct generics. Also, the
GLib VAPI is adjusted for direct generics.

Direct generics are triggered by a new parameter to CCode. They are only
supposed to be used in VAPI files, using them in normal source files is
undefined. If your type is something else than a GArray, reconsider the matter
twice before enabling direct generics.
codegen/valaccodebasemodule.vala
tests/basic-types/garray.vala
vala/valausedattr.vala
vapi/glib-2.0.vapi