diff --git a/c/qrcodegen.c b/c/qrcodegen.c index bf30444..c7df95d 100644 --- a/c/qrcodegen.c +++ b/c/qrcodegen.c @@ -25,6 +25,7 @@ #include #include #include +#include "qrcodegen.h" /*---- Forward declarations for private functions ----*/ @@ -37,6 +38,41 @@ static uint8_t finiteFieldMultiply(uint8_t x, uint8_t y); /*---- Function implementations ----*/ +bool qrcodegen_isAlphanumeric(const char *text) { + for (; *text != '\0'; text++) { + char c = *text; + if (('0' <= c && c <= '9') || ('A' <= c && c <= 'Z')) + continue; + else switch (c) { + case ' ': + case '$': + case '%': + case '*': + case '+': + case '-': + case '.': + case '/': + case ':': + continue; + default: + return false; + } + return false; + } + return true; +} + + +bool qrcodegen_isNumeric(const char *text) { + for (; *text != '\0'; text++) { + char c = *text; + if (c < '0' || c > '9') + return false; + } + return true; +} + + // Calculates the Reed-Solomon generator polynomial of the given degree, storing in result[0 : degree]. static void calcReedSolomonGenerator(int degree, uint8_t result[]) { // Start with the monomial x^0 diff --git a/c/qrcodegen.h b/c/qrcodegen.h new file mode 100644 index 0000000..c85765f --- /dev/null +++ b/c/qrcodegen.h @@ -0,0 +1,39 @@ +/* + * QR Code generator library (C) + * + * Copyright (c) Project Nayuki + * https://www.nayuki.io/page/qr-code-generator-library + * + * (MIT License) + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * - The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * - The Software is provided "as is", without warranty of any kind, express or + * implied, including but not limited to the warranties of merchantability, + * fitness for a particular purpose and noninfringement. In no event shall the + * authors or copyright holders be liable for any claim, damages or other + * liability, whether in an action of contract, tort or otherwise, arising from, + * out of or in connection with the Software or the use or other dealings in the + * Software. + */ + +#pragma once + +#include + + +/* + * Tests whether the given string can be encoded in alphanumeric mode. + */ +bool qrcodegen_isAlphanumeric(const char *text); + + +/* + * Tests whether the given string can be encoded in numeric mode. + */ +bool qrcodegen_isNumeric(const char *text);