After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 709700 - Re-organize and cleanup argument cachers into files based on type
Re-organize and cleanup argument cachers into files based on type
Status: RESOLVED FIXED
Product: pygobject
Classification: Bindings
Component: introspection
unspecified
Other Linux
: Normal normal
: ---
Assigned To: Simon Feltman
Python bindings maintainers
Depends on: 693402 712197
Blocks: 631901 693405 709976
 
 
Reported: 2013-10-09 01:46 UTC by Simon Feltman
Modified: 2014-02-06 03:31 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
cache refactoring: Separate ArgCache creation and setup (17.95 KB, patch)
2013-10-12 01:58 UTC, Simon Feltman
none Details | Review
cache refactoring: Move PyGIHashCache and related marshaling into new file (36.27 KB, patch)
2013-10-12 01:58 UTC, Simon Feltman
none Details | Review
cache refactoring: Move basic type arg setup and marshaling into new file (60.28 KB, patch)
2013-10-12 03:22 UTC, Simon Feltman
none Details | Review
cache refactoring: Break sequence cache up for array vs list (24.00 KB, patch)
2013-10-12 06:04 UTC, Simon Feltman
none Details | Review
cache refactoring: Move GList/GSList arg setup and marshaling into new file (37.25 KB, patch)
2013-10-12 07:59 UTC, Simon Feltman
none Details | Review
cache refactoring: Move GError arg setup and marshaling to new file (15.94 KB, patch)
2013-10-12 18:36 UTC, Simon Feltman
none Details | Review
cache refactoring: Move callback setup and marshaling into new file (30.69 KB, patch)
2013-10-12 20:05 UTC, Simon Feltman
none Details | Review
cache refactoring: Move GObject arg setup and marshaling into new file (38.35 KB, patch)
2013-10-13 00:48 UTC, Simon Feltman
none Details | Review
Fix GArray, GList, GSList, and GHashTable marshaling leaks (8.95 KB, text/plain)
2013-10-13 04:52 UTC, Simon Feltman
  Details
cache refactoring: Separate ArgCache creation and setup (17.95 KB, patch)
2013-10-13 04:52 UTC, Simon Feltman
none Details | Review
cache refactoring: Move PyGIHashCache and related marshaling into new file (36.74 KB, patch)
2013-10-13 04:53 UTC, Simon Feltman
none Details | Review
cache refactoring: Move basic type arg setup and marshaling into new file (60.31 KB, patch)
2013-10-13 04:53 UTC, Simon Feltman
none Details | Review
cache refactoring: Break sequence cache up for array vs list (24.00 KB, patch)
2013-10-13 04:53 UTC, Simon Feltman
none Details | Review
cache refactoring: Move GList/GSList arg setup and marshaling into new file (38.36 KB, patch)
2013-10-13 04:53 UTC, Simon Feltman
none Details | Review
cache refactoring: Move GArray arg setup and marshaling into new file (78.62 KB, patch)
2013-10-13 04:54 UTC, Simon Feltman
none Details | Review
cache refactoring: Move GError arg setup and marshaling to new file (15.76 KB, patch)
2013-10-13 04:54 UTC, Simon Feltman
none Details | Review
cache refactoring: Move callback setup and marshaling into new file (32.27 KB, patch)
2013-10-13 04:54 UTC, Simon Feltman
none Details | Review
cache refactoring: Move GObject arg setup and marshaling into new file (39.01 KB, patch)
2013-10-13 04:54 UTC, Simon Feltman
none Details | Review
cache refactoring: Move various struct arg setup and marshaling to new file (57.83 KB, patch)
2013-10-13 04:54 UTC, Simon Feltman
none Details | Review
cache refactoring: Move enum and flags arg setup and marshaling to new file (38.83 KB, patch)
2013-10-13 04:54 UTC, Simon Feltman
none Details | Review
cache refactoring: Separate ArgCache creation and setup (17.95 KB, patch)
2014-02-03 00:14 UTC, Simon Feltman
committed Details | Review
cache refactoring: Move PyGIHashCache and related marshaling into new file (36.51 KB, patch)
2014-02-03 00:15 UTC, Simon Feltman
committed Details | Review
cache refactoring: Move basic type arg setup and marshaling into new file (60.13 KB, patch)
2014-02-03 00:16 UTC, Simon Feltman
committed Details | Review
cache refactoring: Break sequence cache up for array vs list (24.00 KB, patch)
2014-02-03 00:16 UTC, Simon Feltman
committed Details | Review
cache refactoring: Move GList/GSList arg setup and marshaling into new file (38.15 KB, patch)
2014-02-03 00:17 UTC, Simon Feltman
committed Details | Review
cache refactoring: Move GArray arg setup and marshaling into new file (78.41 KB, patch)
2014-02-03 00:18 UTC, Simon Feltman
committed Details | Review
cache refactoring: Move GError arg setup and marshaling to new file (15.54 KB, patch)
2014-02-03 00:18 UTC, Simon Feltman
committed Details | Review
cache refactoring: Move closure setup and marshaling into pygi-closure (32.48 KB, patch)
2014-02-03 00:20 UTC, Simon Feltman
committed Details | Review
cache refactoring: Move GObject arg setup and marshaling into new file (38.64 KB, patch)
2014-02-03 00:21 UTC, Simon Feltman
committed Details | Review
cache refactoring: Move various struct arg setup and marshaling to new file (58.00 KB, patch)
2014-02-03 00:21 UTC, Simon Feltman
committed Details | Review
cache refactoring: Move enum and flags arg setup and marshaling to new file (38.64 KB, patch)
2014-02-03 00:22 UTC, Simon Feltman
committed Details | Review
marshal refactoring: Move GIArgument from GValue code to new file (13.45 KB, patch)
2014-02-03 00:22 UTC, Simon Feltman
committed Details | Review
marshal refactoring: Move GValue marshaling from pytype into pygi-value (51.71 KB, patch)
2014-02-03 00:23 UTC, Simon Feltman
committed Details | Review

Description Simon Feltman 2013-10-09 01:46:15 UTC
Part I:

The idea is to move creation, marshaling, cleanup, and destruction specific to an argument cache type into a single file.

We currently have many large files (pygi-cache, pygi-cleanup, pygi-marshal-from-py, and pygi-marshal-to-py) with a types functions distributed through them and mixed in with all the other types functions of similar nature. This makes maintenance difficult and hard for contributors to understand the architecture as well as know of potential side effects when working on any one part of a types functionality.

With some re-organization, we can start to move from a pseudo object oriented cache system into something a bit more concise. ArgCache is a class which contains a set of standard virtual functions for construction, cleanup and marshaling, all of which should live in the same file based on the sub-type being implemented.

A preliminary proposal of files is as follows:

pygi-arg-basictypes.c (ints, strings, etc)
pygi-arg-arrays.c (C, GArray, GPtrArray)
pygi-arg-lists.c (GList, GSList)
pygi-arg-structs.c (Struct, Boxed, GValue, GVariant, GObject?)
pygi-arg-hashtable.c (GHashTable)

All functionality contained within pygi-cleanup, pygi-marshal-from-py and pygi-marshal-to-py would be split up into these files. Some of the type specific functionality in pygi-cache for ArgCache instance creation and setup should also be moved into the file based on type.

pygi-cache should stay around for generic setup of cache types shared by all types as well as dispatching the creation of the different types (and creation of PyGICallableCache which manages all individual arg caches).

Likewise, it would be good to split up unittests which have grown rather large into files closer to the arg type files proposed above (breaking down test_gi, test_everything, etc...).


Part II (this could actually go before or after Part I):

There are a couple of cases where the individual ArgCache types have intimate knowledge of the containing structure (PyGICallableCache). This consists of types which have a dependency on a sibling ArgCaches (C array and its length or a callback with its user_data or destroy function). It would be worthwhile to clean this up so sibling cache management is part of PyGICallableCache (or its invoke) which passes the dependent sibling to the primary ArgCache marshaling APIs directly, cleaning up the breakage of encapsulation.
https://git.gnome.org/browse/pygobject/tree/gi/pygi-marshal-from-py.c?id=3.10.0#n900

Similarly there are a couple of cases where access to PyGIInvokeState.args_data needed from within individual arg marshalers. This is for storing cleanup data when the argument is inout because the arguments pointer (GIArgument.v_pointer) is clobbered when invoke is called for marshaling back to python. This also occurs for closures where cleanup data is different from the closure passed to invoke. See:
https://git.gnome.org/browse/pygobject/tree/gi/pygi-marshal-from-py.c?id=3.10.0#n926
https://git.gnome.org/browse/pygobject/tree/gi/pygi-marshal-from-py.c?id=3.10.0#n1330

This basically boils down to:
* Don't pass PyGICallableCache or PyGIInvokeState pointers to marshaler vfuncs because it breaks encapsulation and requires co-dependent interface circularity between parent and child in the caching hierarchy.
* Instead pass an out pointer for cleanup data and an auxiliary ArgCache and GIArgument for dependent sibling marshaling managed by the parent PyGICallableCache structure.

The API change for marshalers would then move from this:
gboolean from_py_marshaler (PyGIInvokeState   *state,
                            PyGICallableCache *callable_cache,
                            PyGIArgCache      *arg_cache,
                            PyObject          *py_arg,
                            GIArgument        *arg);

To something like this:
gboolean from_py_marshaler (PyGIArgCache      *arg_cache,   /* self */
                            PyObject          *py_arg,      /* in */
                            GIArgument        *arg,         /* out */
                            GIArgument        *arg_aux,     /* out */
                            gpointer          *cleanup_data /* out */);
Comment 1 Simon Feltman 2013-10-11 04:20:38 UTC
Marking bug 693402 as needing prior completion. The concept of "cleanup_data" passed as an out arg to from_py marshalers is already implemented in a patch there to help memory management.
Comment 2 Simon Feltman 2013-10-12 01:58:10 UTC
Created attachment 257072 [details] [review]
cache refactoring: Separate ArgCache creation and setup

Move PyGIArgCache and PyGIInterfaceCache generic setup into standalone
functions: pygi_arg_base_setup and pygi_arg_interface_setup respectively.
Shift argument order and move arguments which will eventually be removed
from the signature into the tail with comment. Isolate special casing for
GI_INFO_TYPE_CALLBACK ArgCache creation to a single location in
_arg_cache_new_for_interface.
Comment 3 Simon Feltman 2013-10-12 01:58:33 UTC
Created attachment 257073 [details] [review]
cache refactoring: Move PyGIHashCache and related marshaling into new file

Massive re-org of hash table arg cache and its marshaling by moving all
related code fragments into an isolated file where most functions are made
static. pygi-arg-hashtable.h exposes a single function:
pygi_arg_hash_table_new_from_info. This is all the caching system needs to
produce the proper bits for handling hash table marshaling.
Comment 4 Simon Feltman 2013-10-12 03:22:09 UTC
Created attachment 257079 [details] [review]
cache refactoring: Move basic type arg setup and marshaling into new file

Move all basic type arg caching and marshaling fragments into an isolated
file where most functions are made static. pygi-arg-basictype.h exposes:
pygi_arg_hash_table_new_from_info, _pygi_marshal_from_py_basic_type, and
_pygi_marshal_to_py_basic_type which allows continued use for all marshaling
code paths.
Comment 5 Simon Feltman 2013-10-12 06:04:27 UTC
Created attachment 257083 [details] [review]
cache refactoring: Break sequence cache up for array vs list

Add new arg cache type specialized for arrays. This cleans up the basic
sequence cache type which does not need length and size related info. Remove
fixed length checks from GList and GSList from_py marshaling because these
will always be -1.

Notes:
This is prelim work for breaking GList/GList and GArray fragments into their 
own files. There are a few naming consistency issues because I tried to keep 
this patch from touching as much stuff as possible. This can be cleaned up 
in a later naming consistency pass.
You will notice various lines like "arg_cache->py_arg_index = py_arg_index" 
spreading across _arg_cache_new dispatching. These lines will become 
isolated to the end of the function once all dispatching uses the new model 
for creation/setup.
Comment 6 Simon Feltman 2013-10-12 07:59:04 UTC
Created attachment 257088 [details] [review]
cache refactoring: Move GList/GSList arg setup and marshaling into new file

Move GList and GSList argument caching and marshaling fragments into an
isolated file: pygi-arg-glist.c.
Comment 7 Simon Feltman 2013-10-12 18:36:08 UTC
Created attachment 257114 [details] [review]
cache refactoring: Move GError arg setup and marshaling to new file

Move GError argument caching and marshaling fragments into
isolated file: pygi-arg-gerror.c.
Comment 8 Simon Feltman 2013-10-12 20:05:40 UTC
Created attachment 257122 [details] [review]
cache refactoring: Move callback setup and marshaling into new file

Move callback argument caching and marshaling fragments into
isolated file: pygi-arg-callback.c.
Comment 9 Simon Feltman 2013-10-13 00:48:08 UTC
Created attachment 257136 [details] [review]
cache refactoring: Move GObject arg setup and marshaling into new file

Move GObject argument cache setup and marshaling fragments into
isolated file: pygi-arg-callback.c.
Break GIInterfaceCache creation and setup into API for interface based
argument cache usage.
Comment 10 Simon Feltman 2013-10-13 04:52:38 UTC
Created attachment 257144 [details]
Fix GArray, GList, GSList, and GHashTable marshaling leaks

Additional cleanup, addition of G_BEGIN/END_DECLS, rebase.

https://bugzilla.gnome.org/show_bug.cgi?id=693402
Comment 11 Simon Feltman 2013-10-13 04:52:54 UTC
Created attachment 257145 [details] [review]
cache refactoring: Separate ArgCache creation and setup

Additional cleanup, addition of G_BEGIN/END_DECLS, rebase.
Comment 12 Simon Feltman 2013-10-13 04:53:11 UTC
Created attachment 257146 [details] [review]
cache refactoring: Move PyGIHashCache and related marshaling into new file

Additional cleanup, addition of G_BEGIN/END_DECLS, rebase.
Comment 13 Simon Feltman 2013-10-13 04:53:19 UTC
Created attachment 257147 [details] [review]
cache refactoring: Move basic type arg setup and marshaling into new file

Additional cleanup, addition of G_BEGIN/END_DECLS, rebase.
Comment 14 Simon Feltman 2013-10-13 04:53:26 UTC
Created attachment 257148 [details] [review]
cache refactoring: Break sequence cache up for array vs list

Additional cleanup, addition of G_BEGIN/END_DECLS, rebase.
Comment 15 Simon Feltman 2013-10-13 04:53:33 UTC
Created attachment 257149 [details] [review]
cache refactoring: Move GList/GSList arg setup and marshaling into new file

Additional cleanup, addition of G_BEGIN/END_DECLS, rebase.
Comment 16 Simon Feltman 2013-10-13 04:54:00 UTC
Created attachment 257150 [details] [review]
cache refactoring: Move GArray arg setup and marshaling into new file

Additional cleanup, addition of G_BEGIN/END_DECLS, rebase.
Comment 17 Simon Feltman 2013-10-13 04:54:19 UTC
Created attachment 257151 [details] [review]
cache refactoring: Move GError arg setup and marshaling to new file

Additional cleanup, addition of G_BEGIN/END_DECLS, rebase.
Comment 18 Simon Feltman 2013-10-13 04:54:26 UTC
Created attachment 257152 [details] [review]
cache refactoring: Move callback setup and marshaling into new file

Additional cleanup, addition of G_BEGIN/END_DECLS, rebase.
Comment 19 Simon Feltman 2013-10-13 04:54:36 UTC
Created attachment 257153 [details] [review]
cache refactoring: Move GObject arg setup and marshaling into new file

Additional cleanup, addition of G_BEGIN/END_DECLS, rebase.
Comment 20 Simon Feltman 2013-10-13 04:54:42 UTC
Created attachment 257154 [details] [review]
cache refactoring: Move various struct arg setup and marshaling to new file

Move struct (boxed, union, gvalue, gclosure, variant, and pointer) argument
cache setup and marshaling fragments into isolated file: pygi-arg-struct.c.
Remove redundant and dead code related to boxed and union marshaling.
Comment 21 Simon Feltman 2013-10-13 04:54:45 UTC
Created attachment 257155 [details] [review]
cache refactoring: Move enum and flags arg setup and marshaling to new file

Move enum and flags argument cache setup and marshaling fragments into
isolated file: pygi-arg-enum-flags.c
Final removal of pygi-marshal-from/to files.
Comment 22 Simon Feltman 2013-10-13 04:56:20 UTC
Comment on attachment 257144 [details]
Fix GArray, GList, GSList, and GHashTable marshaling leaks

This was added to the wrong bug.
Comment 23 Simon Feltman 2014-02-03 00:14:55 UTC
Created attachment 267882 [details] [review]
cache refactoring: Separate ArgCache creation and setup

Rebased
Comment 24 Simon Feltman 2014-02-03 00:15:59 UTC
Created attachment 267883 [details] [review]
cache refactoring: Move PyGIHashCache and related marshaling into new file

Rebased and renamed to pygi-hashtable.[h|c]
Comment 25 Simon Feltman 2014-02-03 00:16:20 UTC
Created attachment 267884 [details] [review]
cache refactoring: Move basic type arg setup and marshaling into new file

Rebased
Comment 26 Simon Feltman 2014-02-03 00:16:40 UTC
Created attachment 267885 [details] [review]
cache refactoring: Break sequence cache up for array vs list

Rebased
Comment 27 Simon Feltman 2014-02-03 00:17:30 UTC
Created attachment 267886 [details] [review]
cache refactoring: Move GList/GSList arg setup and marshaling into new file

Rebased and renamed files to pygi-list.[h|c]
Comment 28 Simon Feltman 2014-02-03 00:18:05 UTC
Created attachment 267887 [details] [review]
cache refactoring: Move GArray arg setup and marshaling into new file

Rebased and renamed files to pygi-array.[h|c]
Comment 29 Simon Feltman 2014-02-03 00:18:59 UTC
Created attachment 267889 [details] [review]
cache refactoring: Move GError arg setup and marshaling to new file

Rebased and renamed files to pygi-error.[h|c]
Comment 30 Simon Feltman 2014-02-03 00:20:38 UTC
Created attachment 267890 [details] [review]
cache refactoring: Move closure setup and marshaling into pygi-closure

Rebased and moved code fragments into existing pygi-closure.c
Comment 31 Simon Feltman 2014-02-03 00:21:09 UTC
Created attachment 267891 [details] [review]
cache refactoring: Move GObject arg setup and marshaling into new file

Rebased and renamed new files to pygi-object.[h|c]
Comment 32 Simon Feltman 2014-02-03 00:21:59 UTC
Created attachment 267892 [details] [review]
cache refactoring: Move various struct arg setup and marshaling to new file

Rebased and renamed new files to pygi-struct-marshal.[h|c]
Comment 33 Simon Feltman 2014-02-03 00:22:44 UTC
Created attachment 267893 [details] [review]
cache refactoring: Move enum and flags arg setup and marshaling to new file

Rebased and renamed new files to pygi-enum-marshal.[h|c]
Comment 34 Simon Feltman 2014-02-03 00:22:54 UTC
Created attachment 267894 [details] [review]
marshal refactoring: Move GIArgument from GValue code to new file

Add gi/pygi-value.h and .c files with initial contents of
_pygi_argument_from_g_value. Eventually this file will contain all code
related to GValue marshaling from various code locations in the project.
Comment 35 Simon Feltman 2014-02-03 00:23:06 UTC
Created attachment 267895 [details] [review]
marshal refactoring: Move GValue marshaling from pytype into pygi-value

Move marshaling of GValues to and from PyObjects into pygi-value.c. Make
PyGTypeMarshal struct and related functions accessible via pygtype.h.
Comment 36 Martin Pitt 2014-02-03 12:20:18 UTC
Review of attachment 267882 [details] [review]:

This is mostly just refactoring, LGTM. However, I haven't actually ever looked at that code in detail, so please don't take this as "verified to work" :-) But I have quite a lot of faith in our test suite.

::: gi/pygi-cache.c
@@ +71,3 @@
+                     GIArgInfo    *arg_info,  /* may be NULL for return arguments */
+                     GITransfer    transfer,
+                     PyGIDirection direction)

It's not quite clear from the name what "arg base setup" means; could you add a comment about that and pygi_arg_interface_setup() as well?
Comment 37 Martin Pitt 2014-02-03 12:34:34 UTC
Review of attachment 267883 [details] [review]:

LGTM, except for that constructor name. Thanks!

::: gi/pygi-cache.h
@@ +212,3 @@
                           GIInterfaceInfo    *iface_info);
 
+PyGIArgCache * _arg_cache_new (GITypeInfo *type_info,

This looks inconsistant to me: All other methods for PyGIArgCache start with _pygi, why doesn't that constructor?
Comment 38 Martin Pitt 2014-02-03 12:40:02 UTC
Review of attachment 267884 [details] [review]:

With this commit I'm starting to get a "feel" for how the reorg will look like. I'm not 100% sure that organizing it by data type instead of by direction will make things much easier to understand, but this definitively trims the necessary internal API; and if one wants to change the marshalling for a particular type, everything should eventually be in just one file, so that's good. Thanks!
Comment 39 Martin Pitt 2014-02-03 12:43:26 UTC
Review of attachment 267885 [details] [review]:

LGTM.
Comment 40 Martin Pitt 2014-02-03 12:47:12 UTC
Review of attachment 267886 [details] [review]:

LGTM
Comment 41 Martin Pitt 2014-02-03 12:51:26 UTC
Review of attachment 267887 [details] [review]:

Same old, same old :-)
Comment 42 Martin Pitt 2014-02-03 12:53:40 UTC
Review of attachment 267889 [details] [review]:

LGTM.
Comment 43 Martin Pitt 2014-02-03 12:53:40 UTC
Review of attachment 267889 [details] [review]:

LGTM.
Comment 44 Martin Pitt 2014-02-03 12:53:40 UTC
Review of attachment 267889 [details] [review]:

LGTM.
Comment 45 Martin Pitt 2014-02-03 12:53:41 UTC
Review of attachment 267889 [details] [review]:

LGTM.
Comment 46 Martin Pitt 2014-02-03 12:58:39 UTC
Review of attachment 267890 [details] [review]:

Already said on IRC, but for the record: I really like that the from/to python marshalling is now "hidden" behind the ArgCache API, so it's much easier to understand the structure now and avoid having to change things outside the pygi-<datatype>.c file.

::: gi/pygi-closure.h
@@ +13,3 @@
  *
  * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.

Nice catch! (There recently was some initiative to fix old copyright headers in GNOME)
Comment 47 Martin Pitt 2014-02-03 13:00:33 UTC
Review of attachment 267891 [details] [review]:

Ack.
Comment 48 Martin Pitt 2014-02-03 13:03:48 UTC
Review of attachment 267892 [details] [review]:

Ack.
Comment 49 Martin Pitt 2014-02-03 13:05:21 UTC
Review of attachment 267893 [details] [review]:

Ack.
Comment 50 Martin Pitt 2014-02-03 13:06:53 UTC
Review of attachment 267894 [details] [review]:

Ack.
Comment 51 Simon Feltman 2014-02-03 13:55:49 UTC
Attachment 267882 [details] pushed as 983d0c2 - cache refactoring: Separate ArgCache creation and setup
Attachment 267883 [details] pushed as 4a6bf3b - cache refactoring: Move PyGIHashCache and related marshaling into new file
Attachment 267884 [details] pushed as c1a2a86 - cache refactoring: Move basic type arg setup and marshaling into new file
Attachment 267885 [details] pushed as c48ddac - cache refactoring: Break sequence cache up for array vs list
Attachment 267886 [details] pushed as 4697a37 - cache refactoring: Move GList/GSList arg setup and marshaling into new file
Attachment 267887 [details] pushed as c45cafd - cache refactoring: Move GArray arg setup and marshaling into new file
Attachment 267889 [details] pushed as 18d8274 - cache refactoring: Move GError arg setup and marshaling to new file
Attachment 267890 [details] pushed as 2cddba8 - cache refactoring: Move closure setup and marshaling into pygi-closure
Attachment 267891 [details] pushed as 4dcaa2b - cache refactoring: Move GObject arg setup and marshaling into new file
Attachment 267892 [details] pushed as 1d0f120 - cache refactoring: Move various struct arg setup and marshaling to new file
Attachment 267893 [details] pushed as c2d5857 - cache refactoring: Move enum and flags arg setup and marshaling to new file
Attachment 267894 [details] pushed as b8120d8 - marshal refactoring: Move GIArgument from GValue code to new file
Attachment 267895 [details] pushed as 204f5a1 - marshal refactoring: Move GValue marshaling from pytype into pygi-value
Comment 52 Simon Feltman 2014-02-03 14:13:20 UTC
(In reply to comment #36)
> It's not quite clear from the name what "arg base setup" means; could you add a
> comment about that and pygi_arg_interface_setup() as well?

(In reply to comment #37)
> +PyGIArgCache * _arg_cache_new (GITypeInfo *type_info,
> 
> This looks inconsistant to me: All other methods for PyGIArgCache start with
> _pygi, why doesn't that constructor?

I will commit fixes for these separately because the modifications cause a bad re-base chain.
Comment 53 Simon Feltman 2014-02-03 14:47:56 UTC
(In reply to comment #52)
> (In reply to comment #36)
> > It's not quite clear from the name what "arg base setup" means; could you add a
> > comment about that and pygi_arg_interface_setup() as well?
> 
> (In reply to comment #37)
> > +PyGIArgCache * _arg_cache_new (GITypeInfo *type_info,
> > 
> > This looks inconsistant to me: All other methods for PyGIArgCache start with
> > _pygi, why doesn't that constructor?
> 
> I will commit fixes for these separately because the modifications cause a bad
> re-base chain.

Related commits:
https://git.gnome.org/browse/pygobject/commit/?id=56ac6bd
https://git.gnome.org/browse/pygobject/commit/?id=f3be4ce