/*-------------------------------------------------------------------------
*
* c_keywords . c
* lexical token lookup for reserved words in postgres embedded SQL
*
* src / interfaces / ecpg / preproc / c_keywords . c
*
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*/
#include "postgres_fe.h"
/* ScanKeywordList lookup data for C keywords */
#include "c_kwlist_d.h"
#include "preproc_extern.h"
#include "preproc.h"
/* Token codes for C keywords */
#define PG_KEYWORD(kwname, value) value,
static const uint16 ScanCKeywordTokens[] = {
#include "c_kwlist.h"
};
#undef PG_KEYWORD
/*
* ScanCKeywordLookup - see if a given word is a keyword
*
* Returns the token value of the keyword , or - 1 if no match .
*
* Do a hash search using plain strcmp ( ) comparison . This is much like
* ScanKeywordLookup ( ) , except we want case - sensitive matching .
*/
int
ScanCKeywordLookup(const char *text)
{
size_t len;
int h;
const char *kw;
/*
* Reject immediately if too long to be any keyword . This saves useless
* hashing work on long strings .
*/
len = strlen(text);
if (len > ScanCKeywords.max_kw_len)
return -1 ;
/*
* Compute the hash function . Since it ' s a perfect hash , we need only
* match to the specific keyword it identifies .
*/
h = ScanCKeywords_hash_func(text, len);
/* An out-of-range result implies no match */
if (h < 0 || h >= ScanCKeywords.num_keywords)
return -1 ;
kw = GetScanKeyword(h, &ScanCKeywords);
if (strcmp(kw, text) == 0 )
return ScanCKeywordTokens[h];
return -1 ;
}
Messung V0.5 in Prozent C=90 H=100 G=95
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-08-07)
¤
*© Formatika GbR, Deutschland