PostgreSQL Source Code  git master
segdata.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  SEG
 

Typedefs

typedef struct SEG SEG
 

Functions

int significant_digits (const char *s)
 
int seg_yylex (void)
 
void seg_yyerror (SEG *result, struct Node *escontext, const char *message)
 
void seg_scanner_init (const char *str)
 
void seg_scanner_finish (void)
 
int seg_yyparse (SEG *result, struct Node *escontext)
 

Typedef Documentation

◆ SEG

typedef struct SEG SEG

Function Documentation

◆ seg_scanner_finish()

void seg_scanner_finish ( void  )

Referenced by seg_in().

◆ seg_scanner_init()

void seg_scanner_init ( const char *  str)

Referenced by seg_in().

◆ seg_yyerror()

void seg_yyerror ( SEG result,
struct Node escontext,
const char *  message 
)

Referenced by seg_in().

◆ seg_yylex()

int seg_yylex ( void  )

◆ seg_yyparse()

int seg_yyparse ( SEG result,
struct Node escontext 
)

Referenced by seg_in().

◆ significant_digits()

int significant_digits ( const char *  s)

Definition at line 1064 of file seg.c.

1065 {
1066  const char *p = s;
1067  int n,
1068  c,
1069  zeroes;
1070 
1071  zeroes = 1;
1072  /* skip leading zeroes and sign */
1073  for (c = *p; (c == '0' || c == '+' || c == '-') && c != 0; c = *(++p));
1074 
1075  /* skip decimal point and following zeroes */
1076  for (c = *p; (c == '0' || c == '.') && c != 0; c = *(++p))
1077  {
1078  if (c != '.')
1079  zeroes++;
1080  }
1081 
1082  /* count significant digits (n) */
1083  for (c = *p, n = 0; c != 0; c = *(++p))
1084  {
1085  if (!((c >= '0' && c <= '9') || (c == '.')))
1086  break;
1087  if (c != '.')
1088  n++;
1089  }
1090 
1091  if (!n)
1092  return zeroes;
1093 
1094  return n;
1095 }
char * c