Ruby  2.1.10p492(2016-04-01revision54464)
Macros | Functions
date_strftime.c File Reference
#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.

Macros

#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)
 

Functions

static void upcase (char *s, size_t i)
 
static void downcase (char *s, size_t i)
 
static size_t date_strftime_with_tmx (char *s, size_t maxsize, const char *format, const struct tmx *tmx)
 
size_t date_strftime (char *s, size_t maxsize, const char *format, const struct tmx *tmx)
 

Macro Definition Documentation

◆ add

#define add (   x,
 
)    (rb_funcall((x), '+', 1, (y)))

◆ BIT_OF

#define BIT_OF (   n)    (1U<<(n))

Referenced by date_strftime_with_tmx().

◆ div

#define div (   x,
 
)    (rb_funcall((x), rb_intern("div"), 1, (y)))

◆ FILL_PADDING

#define FILL_PADDING (   i)
Value:
do { \
if (!(flags & BIT_OF(LEFT)) && precision > (i)) { \
NEEDS(precision); \
memset(s, padding ? padding : ' ', precision - (i)); \
s += precision - (i); \
} \
else { \
NEEDS(i); \
} \
} while (0);
unsigned flags
Definition: date_core.c:282
#define BIT_OF(n)
struct SimpleDateData s
Definition: date_core.c:283

Referenced by date_strftime_with_tmx().

◆ FLAG_FOUND

#define FLAG_FOUND ( )
Value:
do { \
if (precision > 0 || flags & (BIT_OF(LOCALE_E) | BIT_OF(LOCALE_O) | BIT_OF(COLONS))) \
goto unknown; \
} while (0)
unsigned flags
Definition: date_core.c:282
#define BIT_OF(n)

Referenced by date_strftime_with_tmx().

◆ FMT

#define FMT (   def_pad,
  def_prec,
  fmt,
  val 
)
Value:
do { \
int l; \
if (precision <= 0) precision = (def_prec); \
if (flags & BIT_OF(LEFT)) precision = 1; \
l = snprintf(s, endp - s, \
((padding == '0' || (!padding && (def_pad) == '0')) ? \
"%0*"fmt : "%*"fmt), \
precision, (val)); \
if (l < 0) goto err; \
s += l; \
} while (0)
if((ID)(DISPID) nameid !=nameid)
Definition: win32ole.c:770
unsigned flags
Definition: date_core.c:282
#define val
#define snprintf
Definition: subst.h:6
int err
Definition: win32.c:114
#define BIT_OF(n)
struct SimpleDateData s
Definition: date_core.c:283

Referenced by date_strftime_with_tmx().

◆ FMTV

#define FMTV (   def_pad,
  def_prec,
  fmt,
  val 
)
Value:
do { \
VALUE tmp = (val); \
if (FIXNUM_P(tmp)) { \
FMT((def_pad), (def_prec), "l"fmt, FIX2LONG(tmp)); \
} \
else { \
VALUE args[2], result; \
size_t l; \
if (precision <= 0) precision = (def_prec); \
if (flags & BIT_OF(LEFT)) precision = 1; \
args[0] = INT2FIX(precision); \
args[1] = (val); \
if (padding == '0' || (!padding && (def_pad) == '0')) \
result = rb_str_format(2, args, rb_str_new2("%0*"fmt)); \
else \
result = rb_str_format(2, args, rb_str_new2("%*"fmt)); \
l = strlcpy(s, StringValueCStr(result), endp - s); \
if ((size_t)(endp - s) <= l) \
goto err; \
s += l; \
} \
} while (0)
if((ID)(DISPID) nameid !=nameid)
Definition: win32ole.c:770
unsigned flags
Definition: date_core.c:282
#define FIXNUM_P(f)
Definition: ruby.h:347
#define val
#define rb_str_new2
Definition: intern.h:840
int err
Definition: win32.c:114
VALUE rb_str_format(int, const VALUE *, VALUE)
Definition: sprintf.c:421
static VALUE result
Definition: nkf.c:40
RUBY_EXTERN size_t strlcpy(char *, const char *, size_t)
Definition: strlcpy.c:44
#define StringValueCStr(v)
Definition: ruby.h:541
#define INT2FIX(i)
Definition: ruby.h:231
#define FIX2LONG(x)
Definition: ruby.h:345
#define BIT_OF(n)
struct SimpleDateData s
Definition: date_core.c:283

Referenced by date_strftime_with_tmx().

◆ mod

#define mod (   x,
 
)    (rb_funcall((x), '%', 1, (y)))

Definition at line 28 of file date_strftime.c.

Referenced by absint_numwords_generic(), absint_numwords_small(), add_modules(), autoload_data(), autoload_defined_p(), autoload_delete(), BigDecimal_div2(), BigDecimal_divmod(), BigDecimal_DoDivmod(), BigDecimal_mod(), bigdivmod(), check_autoload_required(), check_definition(), class_instance_method_list(), date_strftime_with_tmx(), fix_divmod(), fix_mod(), fixdivmod(), flo_divmod(), flodivmod(), iseq_specialized_instruction(), mod_cvar_at(), mod_cvar_of(), mSyslogMacros_included(), original_method_entry(), rb_ary_flatten(), rb_ary_flatten_bang(), rb_autoload(), rb_autoload_load(), rb_autoload_p(), rb_autoloading_value(), rb_big_divmod(), rb_class_inherited_p(), rb_class_instance_methods(), rb_class_private_instance_methods(), rb_class_protected_instance_methods(), rb_class_public_instance_methods(), rb_const_remove(), rb_define_notimplement_method_id(), rb_local_constants(), rb_mod_alias_method(), rb_mod_ancestors(), rb_mod_autoload(), rb_mod_autoload_p(), rb_mod_class_variables(), rb_mod_cmp(), rb_mod_const_at(), rb_mod_const_defined(), rb_mod_const_get(), rb_mod_const_of(), rb_mod_const_set(), rb_mod_constants(), rb_mod_define_method(), rb_mod_eqq(), rb_mod_extend_object(), rb_mod_freeze(), rb_mod_ge(), rb_mod_gt(), rb_mod_include_p(), rb_mod_included_modules(), rb_mod_instance_method(), rb_mod_lt(), rb_mod_method_arity(), rb_mod_method_defined(), rb_mod_method_location(), rb_mod_module_eval(), rb_mod_module_exec(), rb_mod_name(), rb_mod_private_method_defined(), rb_mod_protected_method_defined(), rb_mod_public_instance_method(), rb_mod_public_method_defined(), rb_mod_remove_const(), rb_mod_remove_cvar(), rb_mod_remove_method(), rb_mod_s_constants(), rb_mod_sys_fail(), rb_mod_sys_fail_str(), rb_mod_syserr_fail(), rb_mod_syserr_fail_str(), rb_mod_undef_method(), rb_module_s_alloc(), rb_str_sum(), ruby_float_mod(), and set_const_visibility().

◆ mul

#define mul (   x,
 
)    (rb_funcall((x), '*', 1, (y)))

Definition at line 25 of file date_strftime.c.

Referenced by date_strftime_with_tmx(), enum_cycle_size(), and rb_ary_cycle_size().

◆ NEEDS

#define NEEDS (   n)    do if (s >= endp || (n) >= endp - s - 1) goto err; while (0)

Referenced by date_strftime_with_tmx().

◆ quo

#define quo (   x,
 
)    (rb_funcall((x), rb_intern("quo"), 1, (y)))

Definition at line 26 of file date_strftime.c.

◆ range

#define range (   low,
  item,
  hi 
)    (item)

◆ STRFTIME

#define STRFTIME (   fmt)
Value:
do { \
i = date_strftime_with_tmx(s, endp - s, (fmt), tmx); \
if (!i) return 0; \
if (flags & BIT_OF(UPPER)) \
upcase(s, i); \
if (!(flags & BIT_OF(LEFT)) && precision > i) { \
if (start + maxsize < s + precision) { \
errno = ERANGE; \
return 0; \
} \
memmove(s + precision - i, s, i); \
memset(s, padding ? padding : ' ', precision - i); \
s += precision; \
} \
else s += i; \
} while (0)
Definition: date_tmx.h:24
static size_t date_strftime_with_tmx(char *s, size_t maxsize, const char *format, const struct tmx *tmx)
Definition: date_strftime.c:51
unsigned flags
Definition: date_core.c:282
#define BIT_OF(n)
struct SimpleDateData s
Definition: date_core.c:283

Referenced by date_strftime_with_tmx().

◆ sub

#define sub (   x,
 
)    (rb_funcall((x), '-', 1, (y)))

Function Documentation

◆ date_strftime()

size_t date_strftime ( char *  s,
size_t  maxsize,
const char *  format,
const struct tmx tmx 
)

Definition at line 623 of file date_strftime.c.

References date_strftime_with_tmx().

Referenced by date_strftime_alloc().

◆ date_strftime_with_tmx()

static size_t date_strftime_with_tmx ( char *  s,
size_t  maxsize,
const char *  format,
const struct tmx tmx 
)
static

◆ downcase()

static void downcase ( char *  s,
size_t  i 
)
static

Definition at line 40 of file date_strftime.c.

References ISUPPER, and TOLOWER.

Referenced by date_strftime_with_tmx().

◆ upcase()

static void upcase ( char *  s,
size_t  i 
)
static

Definition at line 31 of file date_strftime.c.

References ISLOWER, and TOUPPER.

Referenced by date_strftime_with_tmx().