From 2eec748dbf865725d414dbbd57454e1cd6db87e7 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Fri, 4 Nov 2011 14:52:18 +0000 Subject: Move serd_strlen and serd_strerror to string.c and document both in "String Utilities" section. git-svn-id: http://svn.drobilla.net/serd/trunk@229 490d8e77-9747-427b-9fa3-0b8f29cee8a0 --- serd/serd.h | 19 ++++++++++++++----- src/error.c | 33 --------------------------------- src/node.c | 26 -------------------------- src/string.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ wscript | 2 +- 5 files changed, 73 insertions(+), 65 deletions(-) delete mode 100644 src/error.c create mode 100644 src/string.c diff --git a/serd/serd.h b/serd/serd.h index 005f2a73..79f164ea 100644 --- a/serd/serd.h +++ b/serd/serd.h @@ -91,10 +91,6 @@ typedef enum { SERD_ERR_NOT_FOUND /**< Not found */ } SerdStatus; -SERD_API -const uint8_t* -serd_strerror(SerdStatus status); - /** RDF syntax type. */ @@ -247,7 +243,19 @@ typedef enum { } SerdStyle; /** - UTF-8 strlen. + @name String Utilities + @{ +*/ + +/** + Return a string describing a status code. +*/ +SERD_API +const uint8_t* +serd_strerror(SerdStatus status); + +/** + Measure a UTF-8 string. @return Length of @c str in characters (except NULL). @param str A null-terminated UTF-8 string. @param n_bytes (Output) Set to the size of @c str in bytes (except NULL). @@ -258,6 +266,7 @@ size_t serd_strlen(const uint8_t* str, size_t* n_bytes, SerdNodeFlags* flags); /** + @} @name URI @{ */ diff --git a/src/error.c b/src/error.c deleted file mode 100644 index cfab5a77..00000000 --- a/src/error.c +++ /dev/null @@ -1,33 +0,0 @@ -/* - Copyright 2011 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. -*/ - -#include "serd_internal.h" - -SERD_API -const uint8_t* -serd_strerror(SerdStatus st) -{ - switch (st) { - case SERD_SUCCESS: return (const uint8_t*)"Success"; - case SERD_FAILURE: return (const uint8_t*)"Non-fatal failure"; - case SERD_ERR_UNKNOWN: return (const uint8_t*)"Unknown error"; - case SERD_ERR_BAD_SYNTAX: return (const uint8_t*)"Invalid syntax"; - case SERD_ERR_BAD_ARG: return (const uint8_t*)"Invalid argument"; - case SERD_ERR_NOT_FOUND: return (const uint8_t*)"Not found"; - } - return (const uint8_t*)"Success"; // never reached -} - diff --git a/src/node.c b/src/node.c index 2e908c69..224bf407 100644 --- a/src/node.c +++ b/src/node.c @@ -19,32 +19,6 @@ #include "serd_internal.h" -SERD_API -size_t -serd_strlen(const uint8_t* str, size_t* n_bytes, SerdNodeFlags* flags) -{ - size_t n_chars = 0; - size_t i = 0; - for (; str[i]; ++i) { - if ((str[i] & 0xC0) != 0x80) { - // Does not start with `10', start of a new character - ++n_chars; - switch (str[i]) { - case '\r': - case '\n': - *flags |= SERD_HAS_NEWLINE; - break; - case '"': - *flags |= SERD_HAS_QUOTE; - } - } - } - if (n_bytes) { - *n_bytes = i; - } - return n_chars; -} - SERD_API SerdNode serd_node_from_string(SerdType type, const uint8_t* buf) diff --git a/src/string.c b/src/string.c new file mode 100644 index 00000000..f747c530 --- /dev/null +++ b/src/string.c @@ -0,0 +1,58 @@ +/* + Copyright 2011 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. +*/ + +#include "serd_internal.h" + +SERD_API +const uint8_t* +serd_strerror(SerdStatus st) +{ + switch (st) { + case SERD_SUCCESS: return (const uint8_t*)"Success"; + case SERD_FAILURE: return (const uint8_t*)"Non-fatal failure"; + case SERD_ERR_UNKNOWN: return (const uint8_t*)"Unknown error"; + case SERD_ERR_BAD_SYNTAX: return (const uint8_t*)"Invalid syntax"; + case SERD_ERR_BAD_ARG: return (const uint8_t*)"Invalid argument"; + case SERD_ERR_NOT_FOUND: return (const uint8_t*)"Not found"; + } + return (const uint8_t*)"Success"; // never reached +} + +SERD_API +size_t +serd_strlen(const uint8_t* str, size_t* n_bytes, SerdNodeFlags* flags) +{ + size_t n_chars = 0; + size_t i = 0; + for (; str[i]; ++i) { + if ((str[i] & 0xC0) != 0x80) { + // Does not start with `10', start of a new character + ++n_chars; + switch (str[i]) { + case '\r': + case '\n': + *flags |= SERD_HAS_NEWLINE; + break; + case '"': + *flags |= SERD_HAS_QUOTE; + } + } + } + if (n_bytes) { + *n_bytes = i; + } + return n_chars; +} diff --git a/wscript b/wscript index 53eda860..dcbc711d 100644 --- a/wscript +++ b/wscript @@ -77,9 +77,9 @@ def build(bld): lib_source = ''' src/env.c - src/error.c src/node.c src/reader.c + src/string.c src/uri.c src/writer.c ''' -- cgit v1.2.1