Skip to content

Commit

Permalink
add 32 bit number support (wide terminfo format)
Browse files Browse the repository at this point in the history
- change all external interfaces from short to int
- assert that int can store 32 bits (this is a botch, but I wanted to
  avoid int_least32_t in my interfaces)
- change internal storage from short to int
- check the magic number and parse 16 / 32 bit format, depending
- generate the wide 32 bit format if any numeric property exceeds 0x7fff
  • Loading branch information
mauke committed Feb 4, 2018
1 parent 73385ba commit 42f3cdd
Show file tree
Hide file tree
Showing 20 changed files with 185 additions and 103 deletions.
2 changes: 1 addition & 1 deletion doc/unibi_add_ext_bool.pod
Expand Up @@ -9,7 +9,7 @@ unibi_add_ext_bool, unibi_add_ext_num, unibi_add_ext_str - add extended capabili
#include <unibilium.h>

size_t unibi_add_ext_bool(unibi_term *ut, const char *t, int b);
size_t unibi_add_ext_num(unibi_term *ut, const char *t, short v);
size_t unibi_add_ext_num(unibi_term *ut, const char *t, int v);
size_t unibi_add_ext_str(unibi_term *ut, const char *t, const char *s);

=head1 DESCRIPTION
Expand Down
2 changes: 1 addition & 1 deletion doc/unibi_add_ext_num.pod
Expand Up @@ -9,7 +9,7 @@ unibi_add_ext_bool, unibi_add_ext_num, unibi_add_ext_str - add extended capabili
#include <unibilium.h>

size_t unibi_add_ext_bool(unibi_term *ut, const char *t, int b);
size_t unibi_add_ext_num(unibi_term *ut, const char *t, short v);
size_t unibi_add_ext_num(unibi_term *ut, const char *t, int v);
size_t unibi_add_ext_str(unibi_term *ut, const char *t, const char *s);

=head1 DESCRIPTION
Expand Down
2 changes: 1 addition & 1 deletion doc/unibi_add_ext_str.pod
Expand Up @@ -9,7 +9,7 @@ unibi_add_ext_bool, unibi_add_ext_num, unibi_add_ext_str - add extended capabili
#include <unibilium.h>

size_t unibi_add_ext_bool(unibi_term *ut, const char *t, int b);
size_t unibi_add_ext_num(unibi_term *ut, const char *t, short v);
size_t unibi_add_ext_num(unibi_term *ut, const char *t, int v);
size_t unibi_add_ext_str(unibi_term *ut, const char *t, const char *s);

=head1 DESCRIPTION
Expand Down
4 changes: 2 additions & 2 deletions doc/unibi_get_bool.pod
Expand Up @@ -12,8 +12,8 @@ unibi_set_str - access the capabilities of a terminal object
int unibi_get_bool(const unibi_term *ut, enum unibi_boolean b);
void unibi_set_bool(unibi_term *ut, enum unibi_boolean b, int x);

short unibi_get_num(const unibi_term *ut, enum unibi_numeric n);
void unibi_set_num(unibi_term *ut, enum unibi_numeric n, short x);
int unibi_get_num(const unibi_term *ut, enum unibi_numeric n);
void unibi_set_num(unibi_term *ut, enum unibi_numeric n, int x);

const char *unibi_get_str(const unibi_term *ut, enum unibi_string s);
void unibi_set_str(unibi_term *ut, enum unibi_string s, const char *x);
Expand Down
4 changes: 2 additions & 2 deletions doc/unibi_get_ext_bool.pod
Expand Up @@ -9,11 +9,11 @@ unibi_get_ext_bool, unibi_set_ext_bool, unibi_get_ext_num, unibi_set_ext_num, un
#include <unibilium.h>

int unibi_get_ext_bool(const unibi_term *ut, size_t i);
short unibi_get_ext_num(const unibi_term *ut, size_t i);
int unibi_get_ext_num(const unibi_term *ut, size_t i);
const char *unibi_get_ext_str(const unibi_term *ut, size_t i);

void unibi_set_ext_bool(unibi_term *ut, size_t i, int b);
void unibi_set_ext_num(unibi_term *ut, size_t i, short v);
void unibi_set_ext_num(unibi_term *ut, size_t i, int v);
void unibi_set_ext_str(unibi_term *ut, size_t i, const char *s);

=head1 DESCRIPTION
Expand Down
4 changes: 2 additions & 2 deletions doc/unibi_get_ext_num.pod
Expand Up @@ -9,11 +9,11 @@ unibi_get_ext_bool, unibi_set_ext_bool, unibi_get_ext_num, unibi_set_ext_num, un
#include <unibilium.h>

int unibi_get_ext_bool(const unibi_term *ut, size_t i);
short unibi_get_ext_num(const unibi_term *ut, size_t i);
int unibi_get_ext_num(const unibi_term *ut, size_t i);
const char *unibi_get_ext_str(const unibi_term *ut, size_t i);

void unibi_set_ext_bool(unibi_term *ut, size_t i, int b);
void unibi_set_ext_num(unibi_term *ut, size_t i, short v);
void unibi_set_ext_num(unibi_term *ut, size_t i, int v);
void unibi_set_ext_str(unibi_term *ut, size_t i, const char *s);

=head1 DESCRIPTION
Expand Down
4 changes: 2 additions & 2 deletions doc/unibi_get_ext_str.pod
Expand Up @@ -9,11 +9,11 @@ unibi_get_ext_bool, unibi_set_ext_bool, unibi_get_ext_num, unibi_set_ext_num, un
#include <unibilium.h>

int unibi_get_ext_bool(const unibi_term *ut, size_t i);
short unibi_get_ext_num(const unibi_term *ut, size_t i);
int unibi_get_ext_num(const unibi_term *ut, size_t i);
const char *unibi_get_ext_str(const unibi_term *ut, size_t i);

void unibi_set_ext_bool(unibi_term *ut, size_t i, int b);
void unibi_set_ext_num(unibi_term *ut, size_t i, short v);
void unibi_set_ext_num(unibi_term *ut, size_t i, int v);
void unibi_set_ext_str(unibi_term *ut, size_t i, const char *s);

=head1 DESCRIPTION
Expand Down
4 changes: 2 additions & 2 deletions doc/unibi_get_num.pod
Expand Up @@ -12,8 +12,8 @@ unibi_set_str - access the capabilities of a terminal object
int unibi_get_bool(const unibi_term *ut, enum unibi_boolean b);
void unibi_set_bool(unibi_term *ut, enum unibi_boolean b, int x);

short unibi_get_num(const unibi_term *ut, enum unibi_numeric n);
void unibi_set_num(unibi_term *ut, enum unibi_numeric n, short x);
int unibi_get_num(const unibi_term *ut, enum unibi_numeric n);
void unibi_set_num(unibi_term *ut, enum unibi_numeric n, int x);

const char *unibi_get_str(const unibi_term *ut, enum unibi_string s);
void unibi_set_str(unibi_term *ut, enum unibi_string s, const char *x);
Expand Down
4 changes: 2 additions & 2 deletions doc/unibi_get_str.pod
Expand Up @@ -12,8 +12,8 @@ unibi_set_str - access the capabilities of a terminal object
int unibi_get_bool(const unibi_term *ut, enum unibi_boolean b);
void unibi_set_bool(unibi_term *ut, enum unibi_boolean b, int x);

short unibi_get_num(const unibi_term *ut, enum unibi_numeric n);
void unibi_set_num(unibi_term *ut, enum unibi_numeric n, short x);
int unibi_get_num(const unibi_term *ut, enum unibi_numeric n);
void unibi_set_num(unibi_term *ut, enum unibi_numeric n, int x);

const char *unibi_get_str(const unibi_term *ut, enum unibi_string s);
void unibi_set_str(unibi_term *ut, enum unibi_string s, const char *x);
Expand Down
4 changes: 2 additions & 2 deletions doc/unibi_set_bool.pod
Expand Up @@ -12,8 +12,8 @@ unibi_set_str - access the capabilities of a terminal object
int unibi_get_bool(const unibi_term *ut, enum unibi_boolean b);
void unibi_set_bool(unibi_term *ut, enum unibi_boolean b, int x);

short unibi_get_num(const unibi_term *ut, enum unibi_numeric n);
void unibi_set_num(unibi_term *ut, enum unibi_numeric n, short x);
int unibi_get_num(const unibi_term *ut, enum unibi_numeric n);
void unibi_set_num(unibi_term *ut, enum unibi_numeric n, int x);

const char *unibi_get_str(const unibi_term *ut, enum unibi_string s);
void unibi_set_str(unibi_term *ut, enum unibi_string s, const char *x);
Expand Down
4 changes: 2 additions & 2 deletions doc/unibi_set_ext_bool.pod
Expand Up @@ -9,11 +9,11 @@ unibi_get_ext_bool, unibi_set_ext_bool, unibi_get_ext_num, unibi_set_ext_num, un
#include <unibilium.h>

int unibi_get_ext_bool(const unibi_term *ut, size_t i);
short unibi_get_ext_num(const unibi_term *ut, size_t i);
int unibi_get_ext_num(const unibi_term *ut, size_t i);
const char *unibi_get_ext_str(const unibi_term *ut, size_t i);

void unibi_set_ext_bool(unibi_term *ut, size_t i, int b);
void unibi_set_ext_num(unibi_term *ut, size_t i, short v);
void unibi_set_ext_num(unibi_term *ut, size_t i, int v);
void unibi_set_ext_str(unibi_term *ut, size_t i, const char *s);

=head1 DESCRIPTION
Expand Down
4 changes: 2 additions & 2 deletions doc/unibi_set_ext_num.pod
Expand Up @@ -9,11 +9,11 @@ unibi_get_ext_bool, unibi_set_ext_bool, unibi_get_ext_num, unibi_set_ext_num, un
#include <unibilium.h>

int unibi_get_ext_bool(const unibi_term *ut, size_t i);
short unibi_get_ext_num(const unibi_term *ut, size_t i);
int unibi_get_ext_num(const unibi_term *ut, size_t i);
const char *unibi_get_ext_str(const unibi_term *ut, size_t i);

void unibi_set_ext_bool(unibi_term *ut, size_t i, int b);
void unibi_set_ext_num(unibi_term *ut, size_t i, short v);
void unibi_set_ext_num(unibi_term *ut, size_t i, int v);
void unibi_set_ext_str(unibi_term *ut, size_t i, const char *s);

=head1 DESCRIPTION
Expand Down
4 changes: 2 additions & 2 deletions doc/unibi_set_ext_str.pod
Expand Up @@ -9,11 +9,11 @@ unibi_get_ext_bool, unibi_set_ext_bool, unibi_get_ext_num, unibi_set_ext_num, un
#include <unibilium.h>

int unibi_get_ext_bool(const unibi_term *ut, size_t i);
short unibi_get_ext_num(const unibi_term *ut, size_t i);
int unibi_get_ext_num(const unibi_term *ut, size_t i);
const char *unibi_get_ext_str(const unibi_term *ut, size_t i);

void unibi_set_ext_bool(unibi_term *ut, size_t i, int b);
void unibi_set_ext_num(unibi_term *ut, size_t i, short v);
void unibi_set_ext_num(unibi_term *ut, size_t i, int v);
void unibi_set_ext_str(unibi_term *ut, size_t i, const char *s);

=head1 DESCRIPTION
Expand Down
4 changes: 2 additions & 2 deletions doc/unibi_set_num.pod
Expand Up @@ -12,8 +12,8 @@ unibi_set_str - access the capabilities of a terminal object
int unibi_get_bool(const unibi_term *ut, enum unibi_boolean b);
void unibi_set_bool(unibi_term *ut, enum unibi_boolean b, int x);

short unibi_get_num(const unibi_term *ut, enum unibi_numeric n);
void unibi_set_num(unibi_term *ut, enum unibi_numeric n, short x);
int unibi_get_num(const unibi_term *ut, enum unibi_numeric n);
void unibi_set_num(unibi_term *ut, enum unibi_numeric n, int x);

const char *unibi_get_str(const unibi_term *ut, enum unibi_string s);
void unibi_set_str(unibi_term *ut, enum unibi_string s, const char *x);
Expand Down
4 changes: 2 additions & 2 deletions doc/unibi_set_str.pod
Expand Up @@ -12,8 +12,8 @@ unibi_set_str - access the capabilities of a terminal object
int unibi_get_bool(const unibi_term *ut, enum unibi_boolean b);
void unibi_set_bool(unibi_term *ut, enum unibi_boolean b, int x);

short unibi_get_num(const unibi_term *ut, enum unibi_numeric n);
void unibi_set_num(unibi_term *ut, enum unibi_numeric n, short x);
int unibi_get_num(const unibi_term *ut, enum unibi_numeric n);
void unibi_set_num(unibi_term *ut, enum unibi_numeric n, int x);

const char *unibi_get_str(const unibi_term *ut, enum unibi_string s);
void unibi_set_str(unibi_term *ut, enum unibi_string s, const char *x);
Expand Down
12 changes: 6 additions & 6 deletions tools/gen-static-test.c
Expand Up @@ -171,12 +171,12 @@ int main(int argc, char **argv) {
say("");
say(" note(\"numeric capabilities\");");
for (enum unibi_numeric i = unibi_numeric_begin_ + 1; i < unibi_numeric_end_; i++) {
short v = unibi_get_num(ut, i);
int v = unibi_get_num(ut, i);
const char *c = unibi_name_num(i);
printf(" ok(unibi_get_num(ut, unibi_%s) == %hd, \"%s = %hd\");\n", c, v, c, v);
printf(" ok(unibi_get_num(ut, unibi_%s) == %d, \"%s = %d\");\n", c, v, c, v);
test_counter++;
if (v >= 0) {
printf(" unibi_set_num(dt, unibi_%s, %hd);\n", c, v);
printf(" unibi_set_num(dt, unibi_%s, %d);\n", c, v);
}
}
say("");
Expand Down Expand Up @@ -236,9 +236,9 @@ int main(int argc, char **argv) {
test_counter++;

for (size_t i = 0; i < n_ext; i++) {
short v = unibi_get_ext_num(ut, i);
int v = unibi_get_ext_num(ut, i);
const char *c = unibi_get_ext_num_name(ut, i);
printf(" ok(%zu < n_ext && unibi_get_ext_num(ut, %zu) == %hd, \"ext_num[%zu].value = %hd\");\n", i, i, v, i, v);
printf(" ok(%zu < n_ext && unibi_get_ext_num(ut, %zu) == %d, \"ext_num[%zu].value = %d\");\n", i, i, v, i, v);
test_counter++;
printf(" ok(%zu < n_ext && strcmp(unibi_get_ext_num_name(ut, %zu), \"", i, i);
test_counter++;
Expand All @@ -248,7 +248,7 @@ int main(int argc, char **argv) {
printf("\");\n");
printf(" unibi_add_ext_num(dt, \"");
print_str_esc(c, 0);
printf("\", %hd);\n", v);
printf("\", %d);\n", v);
}
say(" }");
}
Expand Down
6 changes: 3 additions & 3 deletions tools/unibi-dump.c
Expand Up @@ -108,9 +108,9 @@ int main(int argc, char **argv) {

printf("Numeric capabilities:\n");
for (enum unibi_numeric i = unibi_numeric_begin_ + 1; i < unibi_numeric_end_; i++) {
short n = unibi_get_num(ut, i);
int n = unibi_get_num(ut, i);
if (n != -1) {
printf(" %-25s / %-10s = %hd\n", unibi_name_num(i), unibi_short_name_num(i), n);
printf(" %-25s / %-10s = %d\n", unibi_name_num(i), unibi_short_name_num(i), n);
}
}
printf("\n");
Expand Down Expand Up @@ -138,7 +138,7 @@ int main(int argc, char **argv) {
if (unibi_count_ext_num(ut)) {
printf("Extended numeric capabilities:\n");
for (size_t i = 0; i < unibi_count_ext_num(ut); i++) {
printf(" %-25s = %hd\n", unibi_get_ext_num_name(ut, i), unibi_get_ext_num(ut, i));
printf(" %-25s = %d\n", unibi_get_ext_num_name(ut, i), unibi_get_ext_num(ut, i));
}
printf("\n");
}
Expand Down
2 changes: 1 addition & 1 deletion tools/unibi-put.c
Expand Up @@ -66,7 +66,7 @@ int main(int argc, char **argv) {
strcmp(argv[1], unibi_name_num(i)) == 0 ||
strcmp(argv[1], unibi_short_name_num(i)) == 0
) {
printf("%hd\n", unibi_get_num(t, i));
printf("%d\n", unibi_get_num(t, i));
return 0;
}
}
Expand Down

0 comments on commit 42f3cdd

Please sign in to comment.