From 4a13efde8dbb9595d6844fcf8c07b483e9832eaa Mon Sep 17 00:00:00 2001 From: Thomas Vander Stichele Date: Tue, 20 Sep 2005 14:50:54 +0000 Subject: [PATCH] add a .keys() method to gst.Structure, plus test Original commit message from CVS: * gst/gst.defs: * gst/gststructure.override: * testsuite/test_struct.py: add a .keys() method to gst.Structure, plus test --- ChangeLog | 7 +++++++ common | 2 +- gst/gst.defs | 7 +++++++ gst/gststructure.override | 25 +++++++++++++++++++++++++ testsuite/test_struct.py | 9 +++++++++ 5 files changed, 49 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index fc40bd2830..a58db209d0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-09-20 Thomas Vander Stichele + + * gst/gst.defs: + * gst/gststructure.override: + * testsuite/test_struct.py: + add a .keys() method to gst.Structure, plus test + 2005-09-19 Thomas Vander Stichele * gst/gst.defs: diff --git a/common b/common index 13022c3cb4..cd4da6a319 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit 13022c3cb4558d201e2ddf3e65d2e36b16eedc4a +Subproject commit cd4da6a319d9f92d28f7b8a3b412577e6de50b64 diff --git a/gst/gst.defs b/gst/gst.defs index 30540158f4..e17e8807a6 100644 --- a/gst/gst.defs +++ b/gst/gst.defs @@ -4457,6 +4457,13 @@ ) ) +(define-method keys + (of-object "GstStructure") + (c-name "gst_structure_keys") + (return-type "GList*") +) + + (define-method get_boolean (of-object "GstStructure") (c-name "gst_structure_get_boolean") diff --git a/gst/gststructure.override b/gst/gststructure.override index 3c9c0dd9e1..9b119ea5e9 100644 --- a/gst/gststructure.override +++ b/gst/gststructure.override @@ -166,6 +166,31 @@ _wrap_gst_structure_has_key(PyGObject *self, PyObject *args) return PyBool_FromLong(has_field); } + +%% +override gst_structure_keys noargs +static PyObject * +_wrap_gst_structure_keys (PyObject *self) +{ + GstStructure *s; + int i, n; + PyObject *ret; + + + ret = PyList_New(0); + + s = pyg_boxed_get(self, GstStructure); + n = gst_structure_n_fields(s); + + for (i = 0; i < n; ++i) { + const gchar *name = gst_structure_nth_field_name (s, i); + PyList_Append(ret, PyString_FromString(name)); + } + + return ret; +} + + %% override-slot GstStructure.tp_as_mapping static int diff --git a/testsuite/test_struct.py b/testsuite/test_struct.py index b73560ddf8..e8cdd07214 100644 --- a/testsuite/test_struct.py +++ b/testsuite/test_struct.py @@ -90,5 +90,14 @@ class StructureTest(unittest.TestCase): assert self.struct['pixel-aspect-ratio'].num == 2 assert self.struct['pixel-aspect-ratio'].denom == 1 + def testKeys(self): + k = self.struct.keys() + self.failUnless(k) + self.assertEquals(len(k), 4) + self.failUnless("width" in k) + self.failUnless("foo" in k) + self.failUnless("framerate" in k) + self.failUnless("pixel-aspect-ratio" in k) + if __name__ == "__main__": unittest.main()