(b76ad15ed0da636161de0243c547ee1e6fc95681)
#include "ruby/ruby.h"
#include "date_tmx.h"
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <errno.h>
Go to the source code of this file.
|
#define | range(low, item, hi) (item) |
|
#define | add(x, y) (rb_funcall((x), '+', 1, (y))) |
|
#define | sub(x, y) (rb_funcall((x), '-', 1, (y))) |
|
#define | mul(x, y) (rb_funcall((x), '*', 1, (y))) |
|
#define | quo(x, y) (rb_funcall((x), rb_intern("quo"), 1, (y))) |
|
#define | div(x, y) (rb_funcall((x), rb_intern("div"), 1, (y))) |
|
#define | mod(x, y) (rb_funcall((x), '%', 1, (y))) |
|
#define | BIT_OF(n) (1U<<(n)) |
|
#define | FLAG_FOUND() |
|
#define | NEEDS(n) do if (s >= endp || (n) >= endp - s - 1) goto err; while (0) |
|
#define | FILL_PADDING(i) |
|
#define | FMT(def_pad, def_prec, fmt, val) |
|
#define | STRFTIME(fmt) |
|
#define | FMTV(def_pad, def_prec, fmt, val) |
|
◆ add
◆ BIT_OF
#define BIT_OF |
( |
|
n | ) |
(1U<<(n)) |
◆ div
◆ FILL_PADDING
#define FILL_PADDING |
( |
|
i | ) |
|
Value: do { \
NEEDS(precision); \
memset(
s, padding ? padding :
' ', precision - (i)); \
s += precision - (i); \
} \
else { \
NEEDS(i); \
} \
} while (0);
◆ FLAG_FOUND
Value: do { \
goto unknown; \
} while (0)
◆ FMT
#define FMT |
( |
|
def_pad, |
|
|
|
def_prec, |
|
|
|
fmt, |
|
|
|
val |
|
) |
| |
Value: do { \
int l; \
if (precision <= 0) precision = (def_prec); \
((padding == '0' || (!padding && (def_pad) == '0')) ? \
"%0*"fmt : "%*"fmt), \
precision, (val)); \
} while (0)
◆ FMTV
#define FMTV |
( |
|
def_pad, |
|
|
|
def_prec, |
|
|
|
fmt, |
|
|
|
val |
|
) |
| |
Value: do { \
VALUE tmp = (val); \
FMT((def_pad), (def_prec),
"l"fmt,
FIX2LONG(tmp)); \
} \
else { \
VALUE args[2], result; \
size_t l; \
if (precision <= 0) precision = (def_prec); \
args[1] = (val); \
if (padding == '0' || (!padding && (def_pad) == '0')) \
else \
if ((
size_t)(endp -
s) <= l) \
} \
} while (0)
◆ mod
◆ mul
◆ NEEDS
#define NEEDS |
( |
|
n | ) |
do if (s >= endp || (n) >= endp - s - 1) goto err; while (0) |
◆ quo
◆ range
#define range |
( |
|
low, |
|
|
|
item, |
|
|
|
hi |
|
) |
| (item) |
◆ STRFTIME
Value: do { \
i = date_strftime_with_tmx(
s, endp -
s, (fmt),
tmx); \
if (!i) return 0; \
if (start + maxsize <
s + precision) { \
errno = ERANGE; \
return 0; \
} \
memmove(
s + precision - i,
s, i); \
memset(
s, padding ? padding :
' ', precision - i); \
s += precision; \
} \
} while (0)
◆ sub
◆ date_strftime()
size_t date_strftime |
( |
char * |
s, |
|
|
size_t |
maxsize, |
|
|
const char * |
format, |
|
|
const struct tmx * |
tmx |
|
) |
| |