Module: Sdn

Defined in:
ext/sdn/sdnmodule.c

Constant Summary collapse

VERSION =
rb_obj_freeze(rb_str_new2("$Revision: 1.7 $"))

Class Method Summary collapse

Class Method Details

.DayOfWeek(sdn) ⇒ Object



142
143
144
145
146
147
148
149
150
151
# File 'ext/sdn/sdnmodule.c', line 142

static VALUE
sdn_DayOfWeek(VALUE obj, VALUE sdn)
{
    long isdn;
    int wd;

    isdn = NUM2LONG(sdn);
    wd = DayOfWeek(isdn);
    return INT2NUM(wd);
}

.FrenchToSdn(y, m, md) ⇒ Object



125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# File 'ext/sdn/sdnmodule.c', line 125

static VALUE
sdn_FrenchToSdn(VALUE obj, VALUE y, VALUE m, VALUE md)
{
    int iy, im, imd, iy2, im2, imd2;
    long sdn;

    iy = NUM2INT(y); CHECK_DOMAIN(iy, 1);
    im = NUM2INT(m); CHECK_DOMAIN2(im, 1, 13);
    imd = NUM2INT(md); CHECK_DOMAIN2(imd, 1, 30);
    sdn = FrenchToSdn(iy, im, imd);
    CHECK_RANGE(sdn, 1);
    SdnToFrench(sdn, &iy2, &im2, &imd2);
    if (iy != iy2 || im != im2 || imd != imd2)
	rb_raise(rb_eArgError, "invalid date");
    return INT2NUM(sdn);
}

.GregorianToSdn(y, m, md) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'ext/sdn/sdnmodule.c', line 41

static VALUE
sdn_GregorianToSdn(VALUE obj, VALUE y, VALUE m, VALUE md)
{
    int iy, im, imd, iy2, im2, imd2;
    long sdn;

    iy = NUM2INT(y); CHECK_DOMAIN(iy, -4714);
    im = NUM2INT(m); CHECK_DOMAIN2(im, 1, 12);
    imd = NUM2INT(md); CHECK_DOMAIN2(imd, 1, 31);
    sdn = GregorianToSdn(iy, im, imd);
    CHECK_RANGE(sdn, 1);
    SdnToGregorian(sdn, &iy2, &im2, &imd2);
    if (iy != iy2 || im != im2 || imd != imd2)
	rb_raise(rb_eArgError, "invalid date");
    return INT2NUM(sdn);
}

.JewishToSdn(y, m, md) ⇒ Object



97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# File 'ext/sdn/sdnmodule.c', line 97

static VALUE
sdn_JewishToSdn(VALUE obj, VALUE y, VALUE m, VALUE md)
{
    int iy, im, imd, iy2, im2, imd2;
    long sdn;

    iy = NUM2INT(y); CHECK_DOMAIN(iy, 1);
    im = NUM2INT(m); CHECK_DOMAIN2(im, 1, 13);
    imd = NUM2INT(md); CHECK_DOMAIN2(imd, 1, 30);
    sdn = JewishToSdn(iy, im, imd);
    CHECK_RANGE(sdn, 1); /* 347998 */
    SdnToJewish(sdn, &iy2, &im2, &imd2);
    if (iy != iy2 || im != im2 || imd != imd2)
	rb_raise(rb_eArgError, "invalid date");
    return INT2NUM(sdn);
}

.JulianToSdn(y, m, md) ⇒ Object



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'ext/sdn/sdnmodule.c', line 69

static VALUE
sdn_JulianToSdn(VALUE obj, VALUE y, VALUE m, VALUE md)
{
    int iy, im, imd, iy2, im2, imd2;
    long sdn;

    iy = NUM2INT(y); CHECK_DOMAIN(iy, -4713);
    im = NUM2INT(m); CHECK_DOMAIN2(im, 1, 12);
    imd = NUM2INT(md); CHECK_DOMAIN2(imd, 1, 31);
    sdn = JulianToSdn(iy, im, imd);
    CHECK_RANGE(sdn, 1);
    SdnToJulian(sdn, &iy2, &im2, &imd2);
    if (iy != iy2 || im != im2 || imd != imd2)
	rb_raise(rb_eArgError, "invalid date");
    return INT2NUM(sdn);
}

.SdnToFrench(sdn) ⇒ Object



114
115
116
117
118
119
120
121
122
123
# File 'ext/sdn/sdnmodule.c', line 114

static VALUE
sdn_SdnToFrench(VALUE obj, VALUE sdn)
{
    int y, m, md;
    long isdn;

    isdn = NUM2LONG(sdn); CHECK_DOMAIN2(isdn, 2375840, 2380952);
    SdnToFrench(isdn, &y, &m, &md);
    return rb_ary_new3(3, INT2NUM(y), INT2NUM(m), INT2NUM(md));
}

.SdnToGregorian(sdn) ⇒ Object



30
31
32
33
34
35
36
37
38
39
# File 'ext/sdn/sdnmodule.c', line 30

static VALUE
sdn_SdnToGregorian(VALUE obj, VALUE sdn)
{
    int y, m, md;
    long isdn;

    isdn = NUM2LONG(sdn); CHECK_DOMAIN(isdn, 1);
    SdnToGregorian(isdn, &y, &m, &md);
    return rb_ary_new3(3, INT2NUM(y), INT2NUM(m), INT2NUM(md));
}

.SdnToJewish(sdn) ⇒ Object



86
87
88
89
90
91
92
93
94
95
# File 'ext/sdn/sdnmodule.c', line 86

static VALUE
sdn_SdnToJewish(VALUE obj, VALUE sdn)
{
    int y, m, md;
    long isdn;

    isdn = NUM2LONG(sdn); CHECK_DOMAIN(isdn, 347998);
    SdnToJewish(NUM2INT(sdn), &y, &m, &md);
    return rb_ary_new3(3, INT2NUM(y), INT2NUM(m), INT2NUM(md));
}

.SdnToJulian(sdn) ⇒ Object



58
59
60
61
62
63
64
65
66
67
# File 'ext/sdn/sdnmodule.c', line 58

static VALUE
sdn_SdnToJulian(VALUE obj, VALUE sdn)
{
    int y, m, md;
    long isdn;

    isdn = NUM2LONG(sdn); CHECK_DOMAIN(isdn, 1);
    SdnToJulian(isdn, &y, &m, &md);
    return rb_ary_new3(3, INT2NUM(y), INT2NUM(m), INT2NUM(md));
}