|
Ruby
1.9.3p448(2013-06-27revision41675)
|
#include "ruby/ruby.h"#include "date_tmx.h"#include <stdio.h>#include <ctype.h>#include <string.h>#include <time.h>#include <sys/types.h>#include <errno.h>#include <math.h>Go to the source code of this file.
Defines | |
| #define | SYSV_EXT 1 /* stuff in System V ascftime routine */ |
| #define | SUNOS_EXT 1 /* stuff in SunOS strftime routine */ |
| #define | POSIX2_DATE 1 /* stuff in Posix 1003.2 date command */ |
| #define | VMS_EXT 1 /* include %v for VMS date format */ |
| #define | MAILHEADER_EXT 1 /* add %z for HHMM format */ |
| #define | ISO_DATE_EXT 1 /* %G and %g for year of ISO week */ |
| #define | adddecl(stuff) stuff |
| #define | range(low, item, hi) max((low), min((item), (hi))) |
| #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 | |
| void * | malloc () |
| void * | realloc () |
| char * | getenv () |
| char * | strchr () |
| static int | min (int a, int b) |
| static int | max (int a, int b) |
| 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) |
| #define add | ( | x, | |
| y | |||
| ) | (rb_funcall((x), '+', 1, (y))) |
Definition at line 163 of file date_strftime.c.
Referenced by add_heap_slots(), onig_chain_link_add(), and rb_str_associate().
| #define adddecl | ( | stuff | ) | stuff |
Definition at line 93 of file date_strftime.c.
| #define BIT_OF | ( | n | ) | (1U<<(n)) |
Referenced by date_strftime_with_tmx(), and rb_strftime_with_timespec().
| #define div | ( | x, | |
| y | |||
| ) | (rb_funcall((x), rb_intern("div"), 1, (y))) |
Definition at line 167 of file date_strftime.c.
Referenced by BigDecimal_div(), BigDecimal_div2(), BigDecimal_divmod(), BigDecimal_mod(), date_strftime_with_tmx(), fix_divide(), fix_divmod(), fixdivmod(), flo_divmod(), flodivmod(), rb_big_divide(), rb_big_divmod(), VpMidRound(), and VpVtoD().
| #define FILL_PADDING | ( | i | ) |
do { \ if (!(flags & BIT_OF(LEFT)) && precision > (i)) { \ NEEDS(precision); \ memset(s, padding ? padding : ' ', precision - (i)); \ s += precision - (i); \ } \ else { \ NEEDS(i); \ } \ } while (0);
Referenced by date_strftime_with_tmx(), and rb_strftime_with_timespec().
| #define FLAG_FOUND | ( | ) |
do { \ if (precision > 0 || flags & (BIT_OF(LOCALE_E)|BIT_OF(LOCALE_O))) \ goto unknown; \ } while (0)
Referenced by date_strftime_with_tmx(), and rb_strftime_with_timespec().
| #define FMT | ( | def_pad, | |
| def_prec, | |||
| fmt, | |||
| val | |||
| ) |
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)
Referenced by date_strftime_with_tmx(), and rb_strftime_with_timespec().
| #define FMTV | ( | def_pad, | |
| def_prec, | |||
| fmt, | |||
| val | |||
| ) |
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)
Referenced by date_strftime_with_tmx(), and rb_strftime_with_timespec().
| #define ISO_DATE_EXT 1 /* %G and %g for year of ISO week */ |
Definition at line 75 of file date_strftime.c.
| #define MAILHEADER_EXT 1 /* add %z for HHMM format */ |
Definition at line 74 of file date_strftime.c.
| #define mod | ( | x, | |
| y | |||
| ) | (rb_funcall((x), '%', 1, (y))) |
Definition at line 168 of file date_strftime.c.
Referenced by BigDecimal_div2(), BigDecimal_divmod(), BigDecimal_mod(), bigdivmod(), class_instance_method_list(), date_strftime_with_tmx(), fix_divmod(), fix_mod(), fixdivmod(), flo_divmod(), flodivmod(), rb_ary_flatten(), rb_ary_flatten_bang(), rb_big_divmod(), rb_class_inherited_p(), rb_mod_alias_method(), rb_mod_const_of(), rb_mod_define_method(), rb_mod_remove_method(), rb_mod_undef_method(), rb_module_s_alloc(), rb_str_sum(), and ruby_float_mod().
| #define mul | ( | x, | |
| y | |||
| ) | (rb_funcall((x), '*', 1, (y))) |
Definition at line 165 of file date_strftime.c.
Referenced by date_strftime_with_tmx().
Referenced by date_strftime_with_tmx(), and rb_strftime_with_timespec().
| #define POSIX2_DATE 1 /* stuff in Posix 1003.2 date command */ |
Definition at line 72 of file date_strftime.c.
| #define quo | ( | x, | |
| y | |||
| ) | (rb_funcall((x), rb_intern("quo"), 1, (y))) |
Definition at line 166 of file date_strftime.c.
Definition at line 125 of file date_strftime.c.
Referenced by date_strftime_with_tmx(), enc_succ_alnum_char(), iso2022jp_check_conv(), onig_search(), range_each(), range_loader(), range_step(), rb_range_new(), rb_reg_adjust_startpos(), rb_reg_search(), and rb_strftime_with_timespec().
| #define STRFTIME | ( | fmt | ) |
do { \ i = date_strftime_with_tmx(s, endp - s, (fmt), tmx); \ if (!i) return 0; \ if (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)
Referenced by date_strftime_with_tmx(), and rb_strftime_with_timespec().
| #define sub | ( | x, | |
| y | |||
| ) | (rb_funcall((x), '-', 1, (y))) |
Definition at line 164 of file date_strftime.c.
Referenced by rb_str_index_m(), rb_str_rindex_m(), and rb_str_substr().
| #define SUNOS_EXT 1 /* stuff in SunOS strftime routine */ |
Definition at line 71 of file date_strftime.c.
| #define SYSV_EXT 1 /* stuff in System V ascftime routine */ |
Definition at line 70 of file date_strftime.c.
| #define VMS_EXT 1 /* include %v for VMS date format */ |
Definition at line 73 of file date_strftime.c.
| size_t date_strftime | ( | char * | s, |
| size_t | maxsize, | ||
| const char * | format, | ||
| const struct tmx * | tmx | ||
| ) |
Definition at line 807 of file date_strftime.c.
References date_strftime_with_tmx().
Referenced by date_strftime_alloc().
| static size_t date_strftime_with_tmx | ( | char * | s, |
| size_t | maxsize, | ||
| const char * | format, | ||
| const struct tmx * | tmx | ||
| ) | [static] |
Definition at line 173 of file date_strftime.c.
References args, BIT_OF, div, err, errno, FILL_PADDING, FIX2LONG, FIXNUM_P, FLAG_FOUND, FMT, FMTV, INT2FIX, ISLOWER, ISUPPER, mod, mul, NEEDS, NULL, NUM2INT, NUM2LONG(), range, rb_funcall(), rb_intern, rb_str_format(), rb_str_new2(), result, snprintf, strchr(), STRFTIME, StringValueCStr, strlcpy(), strlen(), tmx_cwday, tmx_cweek, tmx_cwyear, tmx_hour, tmx_mday, tmx_min, tmx_mon, tmx_msecs, tmx_offset, tmx_sec, tmx_sec_fraction, tmx_secs, tmx_wday, tmx_wnum0, tmx_wnum1, tmx_yday, tmx_year, tmx_zone, TOLOWER, and TOUPPER.
Referenced by date_strftime().
| char* getenv | ( | ) |
| void* malloc | ( | ) |
Referenced by allocate_sorted_heaps(), assign_heap_slot(), cbsubst_table_setup(), cmdglob(), Init_BareVM(), init_heap(), insert(), mbstr_to_wstr(), nkf_xmalloc(), open_ifs_socket(), rb_objspace_alloc(), rb_w32_cmdvector(), rb_w32_conv_from_wstr(), rb_w32_get_environ(), rb_w32_getcwd(), readline_attempted_completion_function(), ruby_setenv(), run_exec_dup2(), sdbm_open(), sdbm_prep(), sip_hash_final(), sip_hash_new(), stack_chunk_alloc(), th_init(), vm_xmalloc(), and wstr_to_mbstr().
| static int max | ( | int | a, |
| int | b | ||
| ) | [inline, static] |
Definition at line 149 of file date_strftime.c.
Referenced by ary_join_0(), econv_putback(), fdset2array(), get_max_match_length(), old_thread_select(), optimize_node_left(), rand_int(), rand_range(), random_rand(), ruby_setenv(), set_mml(), and tr_trans().
| static int min | ( | int | a, |
| int | b | ||
| ) | [inline, static] |
Definition at line 133 of file date_strftime.c.
Referenced by ary_double_capa(), c_valid_time_p(), date_zone_to_diff(), datetime_s_civil(), datetime_s_commercial(), datetime_s_jd(), datetime_s_now(), datetime_s_ordinal(), get_c_civil(), get_c_time(), get_min_match_length(), mktime_do(), optimize_node_left(), parse_time2_cb(), rand_range(), rb_enc_mbclen(), rb_w32_fd_copy(), rb_w32_write(), rt_rewrite_frags(), set_mml(), subexp_inf_recursive_check(), time_to_datetime(), and vtm_add_offset().
| void* realloc | ( | ) |
Referenced by allocate_sorted_heaps(), enc_table_expand(), nkf_xrealloc(), opendir_internal(), stub_sysinit(), and vm_xrealloc().
| char* strchr | ( | ) |
1.7.6.1