LCOV - code coverage report
Current view: top level - src/bindings/glib - gelektra-kdb.c (source / functions) Hit Total Coverage
Test: coverage-filtered.info Lines: 29 32 90.6 %
Date: 2019-09-12 12:28:41 Functions: 9 10 90.0 %

          Line data    Source code
       1             : #include "gelektra-kdb.h"
       2             : #include <kdbextension.h>
       3             : #include <string.h>
       4             : 
       5          12 : G_DEFINE_TYPE (GElektraKdb, gelektra_kdb, G_TYPE_OBJECT)
       6             : static KDB * gelektra_kdb_swap (GElektraKdb * kdb, KDB * newhandle);
       7             : 
       8           5 : static void gelektra_kdb_init (GElektraKdb * self)
       9             : {
      10             :         /* initialize the object */
      11           5 :         self->handle = NULL;
      12           5 : }
      13             : 
      14           5 : static void gelektra_kdb_finalize (GObject * object)
      15             : {
      16           5 :         GElektraKdb * self = GELEKTRA_KDB (object);
      17             : 
      18           5 :         if (self->handle) kdbClose (self->handle, NULL);
      19           5 :         self->handle = NULL;
      20             : 
      21             :         /* Always chain up to the parent class; as with dispose(), finalize()
      22             :          * is guaranteed to exist on the parent's class virtual function table
      23             :          */
      24           5 :         G_OBJECT_CLASS (gelektra_kdb_parent_class)->finalize (object);
      25           5 : }
      26             : 
      27             : static void gelektra_kdb_class_init (GElektraKdbClass * klass)
      28             : {
      29           1 :         GObjectClass * gobject_class = G_OBJECT_CLASS (klass);
      30           1 :         gobject_class->finalize = gelektra_kdb_finalize;
      31             : }
      32             : 
      33             : /*
      34             :  * Methods
      35             :  */
      36             : 
      37             : /* constructor */
      38             : /**
      39             :  * gelektra_kdb_open: (constructor)
      40             :  * @error key which holds errors and warnings which were issued
      41             :  *
      42             :  * Returns: (transfer full): A new #GElektraKdb
      43             :  * see kdbOpen
      44             :  */
      45           4 : GElektraKdb * gelektra_kdb_open (GElektraKey * error)
      46             : {
      47           4 :         return gelektra_kdb_make (kdbOpen (error->key));
      48             : }
      49             : 
      50             : /**
      51             :  * gelektra_kdb_make: (skip)
      52             :  * @handle: The underlying handle object
      53             :  *
      54             :  * Returns: (transfer full): A new #GElektraKdb holding the ownership of @handle
      55             :  */
      56           5 : GElektraKdb * gelektra_kdb_make (KDB * handle)
      57             : {
      58           5 :         if (handle == NULL) return NULL;
      59           5 :         GElektraKdb * ret = g_object_new (GELEKTRA_TYPE_KDB, NULL);
      60           5 :         gelektra_kdb_swap (ret, handle);
      61           5 :         return ret;
      62             : }
      63             : 
      64             : /* destructor */
      65           2 : gint gelektra_kdb_close (GElektraKdb * kdb, GElektraKey * error)
      66             : {
      67           2 :         int ret = kdbClose (kdb->handle, (error) ? error->key : NULL);
      68           2 :         kdb->handle = NULL;
      69           2 :         return ret;
      70             : }
      71             : 
      72             : /* basic methods */
      73             : /**
      74             :  * gelektra_kdb_gi_open:
      75             :  * @kdb: A #GElektraKdb
      76             :  * @error key which holds errors and warnings which were issued
      77             :  *
      78             :  * \note This is for GObject Introspection.
      79             :  * \note Do NOT use! Use gelektra_kdb_open instead
      80             :  */
      81           0 : void gelektra_kdb_gi_open (GElektraKdb * kdb, GElektraKey * error)
      82             : {
      83           0 :         kdb->handle = kdbOpen (error->key);
      84           0 : }
      85             : 
      86           3 : gint gelektra_kdb_get (GElektraKdb * kdb, GElektraKeySet * returned, GElektraKey * parent)
      87             : {
      88           3 :         return kdbGet (kdb->handle, returned->keyset, parent->key);
      89             : }
      90             : 
      91           2 : gint gelektra_kdb_set (GElektraKdb * kdb, GElektraKeySet * returned, GElektraKey * parent)
      92             : {
      93           2 :         return kdbSet (kdb->handle, returned->keyset, parent->key);
      94             : }
      95             : 
      96             : /**
      97             :  * gelektra_kdb_swap: (skip)
      98             :  * @kdb: A #GElektraKdb
      99             :  * @newhandle: The new underlying handle
     100             :  *
     101             :  * Returns: The old underlying handle
     102             :  */
     103             : static KDB * gelektra_kdb_swap (GElektraKdb * kdb, KDB * newhandle)
     104             : {
     105           5 :         KDB * oldhandle = kdb->handle;
     106           5 :         kdb->handle = newhandle;
     107             :         return oldhandle;
     108             : }

Generated by: LCOV version 1.13