Separated text processing functions
This commit is contained in:
parent
27c0f0c42d
commit
95153e6de0
5 changed files with 68 additions and 48 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1 +1,2 @@
|
|||
*.o
|
||||
gen_ft8
|
||||
|
|
2
Makefile
2
Makefile
|
@ -1,5 +1,5 @@
|
|||
CXXFLAGS = -std=c++14
|
||||
LDFLAGS = -lm
|
||||
|
||||
gen_ft8: gen_ft8.o encode.o pack.o
|
||||
gen_ft8: gen_ft8.o encode.o pack.o text.o
|
||||
$(CXX) $(LDFLAGS) -o $@ $^
|
||||
|
|
48
pack.cpp
48
pack.cpp
|
@ -2,57 +2,11 @@
|
|||
#include <cstdio>
|
||||
|
||||
#include "pack.h"
|
||||
|
||||
#include "text.h"
|
||||
|
||||
constexpr int32_t NBASE = 37*36*10*27*27*27L;
|
||||
constexpr int32_t NGBASE = 180*180L;
|
||||
|
||||
|
||||
// Utility functions for characters and strings
|
||||
|
||||
char to_upper(char c) {
|
||||
return (c >= 'a' && c <= 'z') ? (c - 'a' + 'A') : c;
|
||||
}
|
||||
|
||||
bool is_digit(char c) {
|
||||
return (c >= '0') && (c <= '9');
|
||||
}
|
||||
|
||||
bool is_letter(char c) {
|
||||
return ((c >= 'A') && (c <= 'Z')) || ((c >= 'a') && (c <= 'z'));
|
||||
}
|
||||
|
||||
bool is_space(char c) {
|
||||
return (c == ' ');
|
||||
}
|
||||
|
||||
bool starts_with(const char *string, const char *prefix) {
|
||||
return 0 == memcmp(string, prefix, strlen(prefix));
|
||||
}
|
||||
|
||||
bool equals(const char *string1, const char *string2) {
|
||||
return 0 == strcmp(string1, string2);
|
||||
}
|
||||
|
||||
|
||||
// Text message formatting:
|
||||
// - replaces lowercase letters with uppercase
|
||||
// - merges consecutive spaces into single space
|
||||
void fmtmsg(char *msg_out, const char *msg_in) {
|
||||
char c;
|
||||
char last_out = 0;
|
||||
while ( (c = *msg_in) ) {
|
||||
if (c != ' ' || last_out != ' ') {
|
||||
last_out = to_upper(c);
|
||||
*msg_out = last_out;
|
||||
++msg_out;
|
||||
}
|
||||
++msg_in;
|
||||
}
|
||||
*msg_out = 0; // Add zero termination
|
||||
}
|
||||
|
||||
|
||||
// Returns integer encoding of a character (number/digit/space).
|
||||
// Alphabet: "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ +-./?"
|
||||
// - Digits are encoded as 0..9
|
||||
|
|
51
text.cpp
Normal file
51
text.cpp
Normal file
|
@ -0,0 +1,51 @@
|
|||
#include "text.h"
|
||||
|
||||
#include <string.h>
|
||||
|
||||
// Utility functions for characters and strings
|
||||
|
||||
char to_upper(char c) {
|
||||
return (c >= 'a' && c <= 'z') ? (c - 'a' + 'A') : c;
|
||||
}
|
||||
|
||||
bool is_digit(char c) {
|
||||
return (c >= '0') && (c <= '9');
|
||||
}
|
||||
|
||||
bool is_letter(char c) {
|
||||
return ((c >= 'A') && (c <= 'Z')) || ((c >= 'a') && (c <= 'z'));
|
||||
}
|
||||
|
||||
bool is_space(char c) {
|
||||
return (c == ' ');
|
||||
}
|
||||
|
||||
bool in_range(char c, char min, char max) {
|
||||
return (c >= min) && (c <= max);
|
||||
}
|
||||
|
||||
bool starts_with(const char *string, const char *prefix) {
|
||||
return 0 == memcmp(string, prefix, strlen(prefix));
|
||||
}
|
||||
|
||||
bool equals(const char *string1, const char *string2) {
|
||||
return 0 == strcmp(string1, string2);
|
||||
}
|
||||
|
||||
|
||||
// Text message formatting:
|
||||
// - replaces lowercase letters with uppercase
|
||||
// - merges consecutive spaces into single space
|
||||
void fmtmsg(char *msg_out, const char *msg_in) {
|
||||
char c;
|
||||
char last_out = 0;
|
||||
while ( (c = *msg_in) ) {
|
||||
if (c != ' ' || last_out != ' ') {
|
||||
last_out = to_upper(c);
|
||||
*msg_out = last_out;
|
||||
++msg_out;
|
||||
}
|
||||
++msg_in;
|
||||
}
|
||||
*msg_out = 0; // Add zero termination
|
||||
}
|
14
text.h
Normal file
14
text.h
Normal file
|
@ -0,0 +1,14 @@
|
|||
#pragma once
|
||||
|
||||
char to_upper(char c);
|
||||
bool is_digit(char c);
|
||||
bool is_letter(char c);
|
||||
bool is_space(char c);
|
||||
bool in_range(char c, char min, char max);
|
||||
bool starts_with(const char *string, const char *prefix);
|
||||
bool equals(const char *string1, const char *string2);
|
||||
|
||||
// Text message formatting:
|
||||
// - replaces lowercase letters with uppercase
|
||||
// - merges consecutive spaces into single space
|
||||
void fmtmsg(char *msg_out, const char *msg_in);
|
Loading…
Reference in a new issue