LCOV - code coverage report
Current view: top level - external/hash - str_set.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 3 3 100.0 %
Date: 2016-11-30 13:12:14 Functions: 2 11 18.2 %
Branches: 1 2 50.0 %

           Branch data     Line data    Source code
       1                 :            : /*
       2                 :            :  * The MIT License (MIT)
       3                 :            :  *
       4                 :            :  * Copyright (c) 2015 Mikkel F. Jørgensen, dvide.com
       5                 :            :  *
       6                 :            :  * Permission is hereby granted, free of charge, to any person obtaining a copy
       7                 :            :  * of this software and associated documentation files (the "Software"), to deal
       8                 :            :  * in the Software without restriction, including without limitation the rights
       9                 :            :  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
      10                 :            :  * copies of the Software, and to permit persons to whom the Software is
      11                 :            :  * furnished to do so, subject to the following conditions:
      12                 :            :  *
      13                 :            :  * The above copyright notice and this permission notice shall be included in all
      14                 :            :  * copies or substantial portions of the Software.
      15                 :            :  *
      16                 :            :  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
      17                 :            :  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
      18                 :            :  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
      19                 :            :  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
      20                 :            :  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
      21                 :            :  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
      22                 :            :  * SOFTWARE.
      23                 :            :  */
      24                 :            : 
      25                 :            : #include <string.h>
      26                 :            : 
      27                 :            : #include "str_set.h"
      28                 :            : #include "hash_table_def.h"
      29         [ +  - ]:        615 : DEFINE_HASH_TABLE(str_set)
      30                 :            : #if defined(STR_SET_SRH)
      31                 :            : #include "hash_table_impl_rh.h"
      32                 :            : #elif defined(STR_SET_SRH)
      33                 :            : #include "hash_table_impl_srh.h"
      34                 :            : #else
      35                 :            : #include "hash_table_impl.h"
      36                 :            : #endif
      37                 :            : 
      38                 :            : /*
      39                 :            :  * Simple default implementation of a hash set. The stored items are
      40                 :            :  * zero-terminated strings. The hash table does not manage the
      41                 :            :  * allocation of the strings, like it doesn't manage any stored items.
      42                 :            :  * However, it items are created with, say, strndup, a destructor can be
      43                 :            :  * provided to free each item when clearing the table. The remove
      44                 :            :  * operation also returns the removed item so it can be deallocated by
      45                 :            :  * callee.
      46                 :            :  *
      47                 :            :  * In general, the key and the item are different, but here they are the
      48                 :            :  * same. Normally the key would be referenced by the item.
      49                 :            :  */
      50                 :            : static inline int ht_match(const void *key, size_t len, str_set_item_t item)
      51                 :            : {
      52                 :         69 :     return strncmp(key, item, len) == 0;
      53                 :            : }
      54                 :            : 
      55                 :            : static inline const void *ht_key(str_set_item_t item)
      56                 :            : {
      57                 :            :     return (const void *)item;
      58                 :            : }
      59                 :            : 
      60                 :            : static inline size_t ht_key_len(str_set_item_t item)
      61                 :            : {
      62                 :        238 :     return strlen(item);
      63                 :            : }

Generated by: LCOV version 1.12