Shortest allowed literal: containing cardinal direction > cardinal direction + degree with 3 digits no cardinal direction > degree with 3 digits
The variable "coord_start" stores the position where the coordinates start (0 or 1), so that the script can identify where each literal element begins to validate its content.
The first three characters represent the degrees and they must be numeric.
Decimal degrees are encoded with after the 3rd character with either a dot or a comma. Only one decimal separator is allowed.
Definition at line 94 of file lwgeom_in_marc21.c.
100 if(literal == NULL)
return LW_FALSE;
102 literal_length = strlen(literal);
104 POSTGIS_DEBUGF(2,
"is_literal_valid called (%s)", literal);
106 if (literal_length < 3)
return LW_FALSE;
120 if (literal[0] ==
'N' || literal[0] ==
'E' || literal[0] ==
'S' || literal[0] ==
'W' || literal[0] ==
'+' || literal[0] ==
'-') {
122 if (literal_length < 4) {
123 POSTGIS_DEBUGF(3,
" invalid literal length (%d): \"%s\"", literal_length, literal);
130 for (
int j = coord_start; j < literal_length; j++) {
132 if (!isdigit(literal[j])) {
141 POSTGIS_DEBUGF(3,
" invalid character '%c' at the degrees section: \"%s\"", literal[j], literal);
150 if (literal[j] ==
'.' || literal[j] ==
',') {
154 if (num_dec_sep > 1)
return LW_FALSE;
157 POSTGIS_DEBUGF(3,
" invalid character '%c' in %d: \"%s\"", literal[j], j, literal);
166 POSTGIS_DEBUGF(2,
"=> is_literal_valid returns LW_TRUE for \"%s\"", literal);
#define LW_TRUE
Return types for functions with status returns.
References LW_FALSE, and LW_TRUE.
Referenced by parse_marc21().