From d6f8eef352dc1c38eef69f093f93dd82bfda91fe Mon Sep 17 00:00:00 2001 From: JAJames Date: Fri, 29 Jan 2016 21:32:32 -0500 Subject: [PATCH] Moved HTTP::QueryString to header to solve linker issues. --- Jupiter/HTTP_QueryString.cpp | 80 -------------------------------- Jupiter/HTTP_QueryString.h | 64 +++++++++++++++++++++++-- Jupiter/Jupiter.vcxproj | 1 - Jupiter/Jupiter.vcxproj.filters | 3 -- Release/Jupiter.lib | Bin 303860 -> 299992 bytes 5 files changed, 61 insertions(+), 87 deletions(-) delete mode 100644 Jupiter/HTTP_QueryString.cpp diff --git a/Jupiter/HTTP_QueryString.cpp b/Jupiter/HTTP_QueryString.cpp deleted file mode 100644 index 6770d91..0000000 --- a/Jupiter/HTTP_QueryString.cpp +++ /dev/null @@ -1,80 +0,0 @@ -/** - * Copyright (C) 2016 Jessica James. - * - * 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. - * - * THE 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. - * - * Written by Jessica James - */ - -#include "HTTP_QueryString.h" - -Jupiter::HTTP::QueryString::QueryString(const Jupiter::ReadableString ¶meters) : QueryString(parameters.ptr(), parameters.size()) -{ -} - -Jupiter::HTTP::QueryString::QueryString(const char *ptr, size_t str_size) : Jupiter::StringS(str_size) -{ - if (str_size < 3) // not enough room for "%XX", therefore no parameters to parse - { - Jupiter::StringType::length = str_size; - switch (str_size) - { - case 2: - str[1] = ptr[1]; - case 1: - *str = *ptr; - case 0: - // nothing to copy - return; - } - } - - const char *end = ptr + str_size - 2; - char *buf = str; - int val; - - while (ptr != end) - { - if (*ptr == '%') - { - if ((val = Jupiter_getHex(*++ptr)) != -1) - { - *buf = static_cast(val) << 4; - if ((val = Jupiter_getHex(*++ptr)) != -1) - *buf |= val; - - ++buf, ++ptr; - if (ptr > end) - { - if (ptr == end + 1) // copy 1 remaining character - { - *buf = *ptr; - ++buf; - } - Jupiter::StringType::length = buf - Jupiter::StringType::str; - return; - } - } - } - else // Copy character - { - *buf = *ptr; - ++buf, ++ptr; - } - } - - // copy last 2 characters - *buf = *ptr; - *++buf = *++ptr; - Jupiter::StringType::length = buf + 1 - str; -} \ No newline at end of file diff --git a/Jupiter/HTTP_QueryString.h b/Jupiter/HTTP_QueryString.h index 30749a7..dcf2be6 100644 --- a/Jupiter/HTTP_QueryString.h +++ b/Jupiter/HTTP_QueryString.h @@ -33,14 +33,72 @@ namespace Jupiter /** * @brief Provides parsing for HTTP Query Strings. */ - class JUPITER_API QueryString : public Jupiter::StringS + class QueryString : public Jupiter::StringS { public: QueryString() = delete; - QueryString(const Jupiter::ReadableString ¶meters); - QueryString(const char *ptr, size_t str_size); + inline QueryString(const Jupiter::ReadableString ¶meters) : QueryString(parameters.ptr(), parameters.size()) {} + inline QueryString(const char *ptr, size_t str_size); }; } } +/** Implementation */ +inline Jupiter::HTTP::QueryString::QueryString(const char *ptr, size_t str_size) : Jupiter::StringS(str_size) +{ + if (str_size < 3) // not enough room for "%XX", therefore no parameters to parse + { + Jupiter::StringType::length = str_size; + switch (str_size) + { + case 2: + str[1] = ptr[1]; + case 1: + *str = *ptr; + case 0: + // nothing to copy + return; + } + } + + const char *end = ptr + str_size - 2; + char *buf = str; + int val; + + while (ptr != end) + { + if (*ptr == '%') + { + if ((val = Jupiter_getHex(*++ptr)) != -1) + { + *buf = static_cast(val) << 4; + if ((val = Jupiter_getHex(*++ptr)) != -1) + *buf |= val; + + ++buf, ++ptr; + if (ptr > end) + { + if (ptr == end + 1) // copy 1 remaining character + { + *buf = *ptr; + ++buf; + } + Jupiter::StringType::length = buf - Jupiter::StringType::str; + return; + } + } + } + else // Copy character + { + *buf = *ptr; + ++buf, ++ptr; + } + } + + // copy last 2 characters + *buf = *ptr; + *++buf = *++ptr; + Jupiter::StringType::length = buf + 1 - str; +} + #endif // _HTTP_QUERYSTRING_H_HEADER \ No newline at end of file diff --git a/Jupiter/Jupiter.vcxproj b/Jupiter/Jupiter.vcxproj index 9740265..a4914c8 100644 --- a/Jupiter/Jupiter.vcxproj +++ b/Jupiter/Jupiter.vcxproj @@ -185,7 +185,6 @@ - diff --git a/Jupiter/Jupiter.vcxproj.filters b/Jupiter/Jupiter.vcxproj.filters index 9f8a0d5..5b23d21 100644 --- a/Jupiter/Jupiter.vcxproj.filters +++ b/Jupiter/Jupiter.vcxproj.filters @@ -138,9 +138,6 @@ Source Files\HTTP - - Header Files\HTTP - diff --git a/Release/Jupiter.lib b/Release/Jupiter.lib index 89f8d456178cefbd04c7cc28bca593443c62914e..f0a653b5918fd544f5d0a1ec9f18349d60addfe5 100644 GIT binary patch delta 38625 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 bh_v63LF2m&!&}0WjlFx?Eu!A@Stb4#Zz2^c