LCOV - code coverage report
Current view: top level - libpkg - pkg_object.c (source / functions) Hit Total Coverage
Test: rapport Lines: 33 54 61.1 %
Date: 2021-12-10 16:22:55 Functions: 7 10 70.0 %
Branches: 14 32 43.8 %

           Branch data     Line data    Source code
       1                 :            : /*-
       2                 :            :  * Copyright (c) 2014 Baptiste Daroussin <bapt@FreeBSD.org>
       3                 :            :  * All rights reserved.
       4                 :            :  * 
       5                 :            :  * Redistribution and use in source and binary forms, with or without
       6                 :            :  * modification, are permitted provided that the following conditions
       7                 :            :  * are met:
       8                 :            :  * 1. Redistributions of source code must retain the above copyright
       9                 :            :  *    notice, this list of conditions and the following disclaimer
      10                 :            :  *    in this position and unchanged.
      11                 :            :  * 2. Redistributions in binary form must reproduce the above copyright
      12                 :            :  *    notice, this list of conditions and the following disclaimer in the
      13                 :            :  *    documentation and/or other materials provided with the distribution.
      14                 :            :  * 
      15                 :            :  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
      16                 :            :  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
      17                 :            :  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
      18                 :            :  * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
      19                 :            :  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
      20                 :            :  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
      21                 :            :  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
      22                 :            :  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
      23                 :            :  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
      24                 :            :  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
      25                 :            :  */
      26                 :            : 
      27                 :            : #include <assert.h>
      28                 :            : #include <ucl.h>
      29                 :            : #include "pkg.h"
      30                 :            : #include "private/pkg.h"
      31                 :            : 
      32                 :            : char *
      33                 :         34 : pkg_object_dump(const pkg_object *o)
      34                 :            : {
      35         [ -  + ]:         34 :         if (o == NULL)
      36                 :          0 :                 return xstrdup("");
      37                 :            : 
      38                 :         34 :         return (ucl_object_emit(o, UCL_EMIT_CONFIG));
      39                 :         34 : }
      40                 :            : 
      41                 :            : void
      42                 :          0 : pkg_object_free(pkg_object *o)
      43                 :            : {
      44                 :          0 :         ucl_object_unref(o);
      45                 :          0 : }
      46                 :            : 
      47                 :            : const char *
      48                 :      83100 : pkg_object_key(const pkg_object *o)
      49                 :            : {
      50         [ -  + ]:      83100 :         if (o == NULL)
      51                 :          0 :                 return (NULL);
      52                 :            : 
      53                 :      83100 :         return (ucl_object_key(o));
      54                 :      83100 : }
      55                 :            : 
      56                 :            : const pkg_object *
      57                 :      96296 : pkg_object_iterate(const pkg_object *o, pkg_iter *it)
      58                 :            : {
      59         [ -  + ]:      96296 :         if (o == NULL)
      60                 :          0 :                 return (NULL);
      61                 :            : 
      62                 :      96296 :         return (ucl_iterate_object(o, it, true));
      63                 :      96296 : }
      64                 :            : 
      65                 :            : pkg_object_t
      66                 :         72 : pkg_object_type(const pkg_object *o)
      67                 :            : {
      68                 :            : 
      69         [ +  - ]:         72 :         if (o == NULL)
      70                 :          0 :                 return (PKG_NULL);
      71                 :            : 
      72   [ -  -  +  -  :         72 :         switch (o->type) {
                   -  - ]
      73                 :            :         case UCL_OBJECT:
      74                 :          0 :                 return (PKG_OBJECT);
      75                 :            :         case UCL_BOOLEAN:
      76                 :          0 :                 return (PKG_BOOL);
      77                 :            :         case UCL_STRING:
      78                 :         72 :                 return (PKG_STRING);
      79                 :            :         case UCL_INT:
      80                 :          0 :                 return (PKG_INT);
      81                 :            :         case UCL_ARRAY:
      82                 :          0 :                 return (PKG_ARRAY);
      83                 :            :         default:
      84                 :          0 :                 return (PKG_NULL);
      85                 :            :         };
      86                 :            : 
      87                 :         72 : }
      88                 :            : 
      89                 :            : bool
      90                 :      46797 : pkg_object_bool(const pkg_object *o)
      91                 :            : {
      92   [ +  -  -  + ]:      46797 :         if (o == NULL || o->type != UCL_BOOLEAN)
      93                 :          0 :                 return (false);
      94                 :            : 
      95                 :      46797 :         return (ucl_object_toboolean(o));
      96                 :      46797 : }
      97                 :            : 
      98                 :            : const char *
      99                 :      62925 : pkg_object_string(const pkg_object *o)
     100                 :            : {
     101                 :            :         const char *ret;
     102                 :            : 
     103         [ +  + ]:      62925 :         if (o == NULL)
     104                 :         52 :                 return (NULL);
     105                 :            : 
     106                 :      62873 :         ret = ucl_object_tostring_forced(o);
     107                 :            : 
     108   [ +  -  +  + ]:      62873 :         if (ret && *ret == '\0')
     109                 :      13059 :                 return (NULL);
     110                 :      49814 :         return (ret);
     111                 :      62925 : }
     112                 :            : 
     113                 :            : int64_t
     114                 :      18041 : pkg_object_int(const pkg_object *o)
     115                 :            : {
     116   [ +  -  -  + ]:      18041 :         if (o == NULL || o->type != UCL_INT)
     117                 :          0 :                 return (0);
     118                 :            : 
     119                 :      18041 :         return (ucl_object_toint(o));
     120                 :      18041 : }
     121                 :            : 
     122                 :            : unsigned
     123                 :          0 : pkg_object_count(const pkg_object *o)
     124                 :            : {
     125         [ #  # ]:          0 :         return (UCL_COUNT(o));
     126                 :            : }
     127                 :            : 
     128                 :            : const pkg_object *
     129                 :          0 : pkg_object_find(const pkg_object *o, const char *key)
     130                 :            : {
     131         [ #  # ]:          0 :         if (o == NULL)
     132                 :          0 :                 return (NULL);
     133                 :            : 
     134                 :          0 :         return (ucl_object_find_key(o, key));
     135                 :          0 : }

Generated by: LCOV version 1.15