LCOV - code coverage report
Current view: top level - src/interfaces/ecpg/preproc - c_keywords.c (source / functions) Coverage Total Hit
Test: Code coverage Lines: 0.0 % 15 0
Test Date: 2026-01-26 10:56:24 Functions: 0.0 % 1 0
Legend: Lines:     hit not hit

            Line data    Source code
       1              : /*-------------------------------------------------------------------------
       2              :  *
       3              :  * c_keywords.c
       4              :  *        lexical token lookup for reserved words in postgres embedded SQL
       5              :  *
       6              :  * src/interfaces/ecpg/preproc/c_keywords.c
       7              :  *
       8              :  *-------------------------------------------------------------------------
       9              :  */
      10              : #include "postgres_fe.h"
      11              : 
      12              : /* ScanKeywordList lookup data for C keywords */
      13              : #include "c_kwlist_d.h"
      14              : #include "preproc_extern.h"
      15              : #include "preproc.h"
      16              : 
      17              : /* Token codes for C keywords */
      18              : #define PG_KEYWORD(kwname, value) value,
      19              : 
      20              : static const uint16 ScanCKeywordTokens[] = {
      21              : #include "c_kwlist.h"
      22              : };
      23              : 
      24              : #undef PG_KEYWORD
      25              : 
      26              : 
      27              : /*
      28              :  * ScanCKeywordLookup - see if a given word is a keyword
      29              :  *
      30              :  * Returns the token value of the keyword, or -1 if no match.
      31              :  *
      32              :  * Do a hash search using plain strcmp() comparison.  This is much like
      33              :  * ScanKeywordLookup(), except we want case-sensitive matching.
      34              :  */
      35              : int
      36            0 : ScanCKeywordLookup(const char *text)
      37              : {
      38            0 :         size_t          len;
      39            0 :         int                     h;
      40            0 :         const char *kw;
      41              : 
      42              :         /*
      43              :          * Reject immediately if too long to be any keyword.  This saves useless
      44              :          * hashing work on long strings.
      45              :          */
      46            0 :         len = strlen(text);
      47            0 :         if (len > ScanCKeywords.max_kw_len)
      48            0 :                 return -1;
      49              : 
      50              :         /*
      51              :          * Compute the hash function.  Since it's a perfect hash, we need only
      52              :          * match to the specific keyword it identifies.
      53              :          */
      54            0 :         h = ScanCKeywords_hash_func(text, len);
      55              : 
      56              :         /* An out-of-range result implies no match */
      57            0 :         if (h < 0 || h >= ScanCKeywords.num_keywords)
      58            0 :                 return -1;
      59              : 
      60            0 :         kw = GetScanKeyword(h, &ScanCKeywords);
      61              : 
      62            0 :         if (strcmp(kw, text) == 0)
      63            0 :                 return ScanCKeywordTokens[h];
      64              : 
      65            0 :         return -1;
      66            0 : }
        

Generated by: LCOV version 2.3.2-1