LCOV - code coverage report
Current view: top level - libsystemd/sd-bus - bus-type.c (source / functions) Hit Total Coverage
Test: main_coverage.info Lines: 24 30 80.0 %
Date: 2019-08-22 15:41:25 Functions: 6 6 100.0 %

          Line data    Source code
       1             : /* SPDX-License-Identifier: LGPL-2.1+ */
       2             : 
       3             : #include <errno.h>
       4             : 
       5             : #include "sd-bus.h"
       6             : 
       7             : #include "bus-type.h"
       8             : 
       9           5 : bool bus_type_is_valid(char c) {
      10             :         static const char valid[] = {
      11             :                 SD_BUS_TYPE_BYTE,
      12             :                 SD_BUS_TYPE_BOOLEAN,
      13             :                 SD_BUS_TYPE_INT16,
      14             :                 SD_BUS_TYPE_UINT16,
      15             :                 SD_BUS_TYPE_INT32,
      16             :                 SD_BUS_TYPE_UINT32,
      17             :                 SD_BUS_TYPE_INT64,
      18             :                 SD_BUS_TYPE_UINT64,
      19             :                 SD_BUS_TYPE_DOUBLE,
      20             :                 SD_BUS_TYPE_STRING,
      21             :                 SD_BUS_TYPE_OBJECT_PATH,
      22             :                 SD_BUS_TYPE_SIGNATURE,
      23             :                 SD_BUS_TYPE_ARRAY,
      24             :                 SD_BUS_TYPE_VARIANT,
      25             :                 SD_BUS_TYPE_STRUCT,
      26             :                 SD_BUS_TYPE_DICT_ENTRY,
      27             :                 SD_BUS_TYPE_UNIX_FD
      28             :         };
      29             : 
      30           5 :         return !!memchr(valid, c, sizeof(valid));
      31             : }
      32             : 
      33        7440 : bool bus_type_is_basic(char c) {
      34             :         static const char valid[] = {
      35             :                 SD_BUS_TYPE_BYTE,
      36             :                 SD_BUS_TYPE_BOOLEAN,
      37             :                 SD_BUS_TYPE_INT16,
      38             :                 SD_BUS_TYPE_UINT16,
      39             :                 SD_BUS_TYPE_INT32,
      40             :                 SD_BUS_TYPE_UINT32,
      41             :                 SD_BUS_TYPE_INT64,
      42             :                 SD_BUS_TYPE_UINT64,
      43             :                 SD_BUS_TYPE_DOUBLE,
      44             :                 SD_BUS_TYPE_STRING,
      45             :                 SD_BUS_TYPE_OBJECT_PATH,
      46             :                 SD_BUS_TYPE_SIGNATURE,
      47             :                 SD_BUS_TYPE_UNIX_FD
      48             :         };
      49             : 
      50        7440 :         return !!memchr(valid, c, sizeof(valid));
      51             : }
      52             : 
      53           6 : bool bus_type_is_trivial(char c) {
      54             :         static const char valid[] = {
      55             :                 SD_BUS_TYPE_BYTE,
      56             :                 SD_BUS_TYPE_BOOLEAN,
      57             :                 SD_BUS_TYPE_INT16,
      58             :                 SD_BUS_TYPE_UINT16,
      59             :                 SD_BUS_TYPE_INT32,
      60             :                 SD_BUS_TYPE_UINT32,
      61             :                 SD_BUS_TYPE_INT64,
      62             :                 SD_BUS_TYPE_UINT64,
      63             :                 SD_BUS_TYPE_DOUBLE
      64             :         };
      65             : 
      66           6 :         return !!memchr(valid, c, sizeof(valid));
      67             : }
      68             : 
      69         625 : bool bus_type_is_container(char c) {
      70             :         static const char valid[] = {
      71             :                 SD_BUS_TYPE_ARRAY,
      72             :                 SD_BUS_TYPE_VARIANT,
      73             :                 SD_BUS_TYPE_STRUCT,
      74             :                 SD_BUS_TYPE_DICT_ENTRY
      75             :         };
      76             : 
      77         625 :         return !!memchr(valid, c, sizeof(valid));
      78             : }
      79             : 
      80         318 : int bus_type_get_alignment(char c) {
      81             : 
      82         318 :         switch (c) {
      83          70 :         case SD_BUS_TYPE_BYTE:
      84             :         case SD_BUS_TYPE_SIGNATURE:
      85             :         case SD_BUS_TYPE_VARIANT:
      86          70 :                 return 1;
      87             : 
      88           0 :         case SD_BUS_TYPE_INT16:
      89             :         case SD_BUS_TYPE_UINT16:
      90           0 :                 return 2;
      91             : 
      92         117 :         case SD_BUS_TYPE_BOOLEAN:
      93             :         case SD_BUS_TYPE_INT32:
      94             :         case SD_BUS_TYPE_UINT32:
      95             :         case SD_BUS_TYPE_STRING:
      96             :         case SD_BUS_TYPE_OBJECT_PATH:
      97             :         case SD_BUS_TYPE_ARRAY:
      98             :         case SD_BUS_TYPE_UNIX_FD:
      99         117 :                 return 4;
     100             : 
     101         131 :         case SD_BUS_TYPE_INT64:
     102             :         case SD_BUS_TYPE_UINT64:
     103             :         case SD_BUS_TYPE_DOUBLE:
     104             :         case SD_BUS_TYPE_STRUCT:
     105             :         case SD_BUS_TYPE_STRUCT_BEGIN:
     106             :         case SD_BUS_TYPE_DICT_ENTRY:
     107             :         case SD_BUS_TYPE_DICT_ENTRY_BEGIN:
     108         131 :                 return 8;
     109             :         }
     110             : 
     111           0 :         return -EINVAL;
     112             : }
     113             : 
     114         164 : int bus_type_get_size(char c) {
     115             : 
     116         164 :         switch (c) {
     117          70 :         case SD_BUS_TYPE_BYTE:
     118          70 :                 return 1;
     119             : 
     120           0 :         case SD_BUS_TYPE_INT16:
     121             :         case SD_BUS_TYPE_UINT16:
     122           0 :                 return 2;
     123             : 
     124          56 :         case SD_BUS_TYPE_BOOLEAN:
     125             :         case SD_BUS_TYPE_INT32:
     126             :         case SD_BUS_TYPE_UINT32:
     127             :         case SD_BUS_TYPE_UNIX_FD:
     128          56 :                 return 4;
     129             : 
     130          38 :         case SD_BUS_TYPE_INT64:
     131             :         case SD_BUS_TYPE_UINT64:
     132             :         case SD_BUS_TYPE_DOUBLE:
     133          38 :                 return 8;
     134             :         }
     135             : 
     136           0 :         return -EINVAL;
     137             : }

Generated by: LCOV version 1.14