From 2bb0250be8297cc950d0036915ecdf61ab6f3700 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sat, 31 Jul 2021 16:43:50 -0400 Subject: Factor out and expose prefixed name predicates Towards using these in the writer to escape names more precisely. --- src/turtle.h | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 src/turtle.h (limited to 'src/turtle.h') diff --git a/src/turtle.h b/src/turtle.h new file mode 100644 index 00000000..c521713e --- /dev/null +++ b/src/turtle.h @@ -0,0 +1,45 @@ +/* + Copyright 2011-2020 David Robillard + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ + +#ifndef SERD_TURTLE_H +#define SERD_TURTLE_H + +#include "ntriples.h" +#include "string_utils.h" + +#include +#include + +static inline bool +is_PN_CHARS_U(const int c) +{ + return c == '_' || is_PN_CHARS_BASE(c); +} + +static inline bool +is_PN_CHARS(const int c) +{ + return (is_PN_CHARS_U(c) || c == '-' || in_range(c, '0', '9') || c == 0xB7 || + (c >= 0x0300 && c <= 0x036F) || (c >= 0x203F && c <= 0x2040)); +} + +static inline bool +is_PN_LOCAL_ESC(const int c) +{ + return strchr("!#$%&\'()*+,-./;=?@_~", c) != NULL; +} + +#endif // SERD_TURTLE_H -- cgit v1.2.1