core/date: Force struct date into 32bits
Three unsigned integers is overkill for handling dates. Implements #65: Date structure can be represented with a single 32bit value Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
65b547f60b
commit
d222c306e0
|
@ -5,12 +5,18 @@
|
||||||
#define OCARINA_CORE_DATE_H
|
#define OCARINA_CORE_DATE_H
|
||||||
|
|
||||||
#include <core/file.h>
|
#include <core/file.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
|
||||||
struct date {
|
struct date {
|
||||||
unsigned int d_year;
|
union {
|
||||||
unsigned int d_month;
|
struct {
|
||||||
unsigned int d_day;
|
uint16_t d_year;
|
||||||
|
uint8_t d_month;
|
||||||
|
uint8_t d_day;
|
||||||
|
};
|
||||||
|
uint32_t d_stamp;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -27,9 +27,11 @@ static inline gchar *ptos(void *p) { return g_strdup_printf("%p", p); }
|
||||||
#define tostring(x) (_Generic((x), \
|
#define tostring(x) (_Generic((x), \
|
||||||
char *: stos, \
|
char *: stos, \
|
||||||
const char *: stos, \
|
const char *: stos, \
|
||||||
|
unsigned char: utos, \
|
||||||
bool: btos, \
|
bool: btos, \
|
||||||
long unsigned int: lutos, \
|
long unsigned int: lutos, \
|
||||||
unsigned int: utos, \
|
unsigned int: utos, \
|
||||||
|
short unsigned int: utos, \
|
||||||
long int: ltos, \
|
long int: ltos, \
|
||||||
int: itos, \
|
int: itos, \
|
||||||
float:ftos, \
|
float:ftos, \
|
||||||
|
|
|
@ -29,6 +29,7 @@ void test_date()
|
||||||
test_equal(date.d_year, 1988);
|
test_equal(date.d_year, 1988);
|
||||||
test_equal(date.d_month, 6);
|
test_equal(date.d_month, 6);
|
||||||
test_equal(date.d_day, 17);
|
test_equal(date.d_day, 17);
|
||||||
|
test_equal(date.d_stamp, 285607876);
|
||||||
date_write(&f, &date);
|
date_write(&f, &date);
|
||||||
file_writef(&f, "\n");
|
file_writef(&f, "\n");
|
||||||
|
|
||||||
|
@ -45,6 +46,7 @@ void test_date()
|
||||||
test_equal(date.d_year, 1988);
|
test_equal(date.d_year, 1988);
|
||||||
test_equal(date.d_month, 6);
|
test_equal(date.d_month, 6);
|
||||||
test_equal(date.d_day, 17);
|
test_equal(date.d_day, 17);
|
||||||
|
test_equal(date.d_stamp, 285607876);
|
||||||
|
|
||||||
str = date_string(&date);
|
str = date_string(&date);
|
||||||
test_equal(str, "06/17/88");
|
test_equal(str, "06/17/88");
|
||||||
|
|
Loading…
Reference in New Issue