module Sdn

Constants

VERSION

Public Class Methods

DayOfWeek(p1) click to toggle source
static VALUE
sdn_DayOfWeek(VALUE obj, VALUE sdn)
{
    long isdn;
    int wd;

    isdn = NUM2LONG(sdn);
    wd = DayOfWeek(isdn);
    return INT2NUM(wd);
}
FrenchToSdn(p1, p2, p3) click to toggle source
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(p1, p2, p3) click to toggle source
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(p1, p2, p3) click to toggle source
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(p1, p2, p3) click to toggle source
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(p1) click to toggle source
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(p1) click to toggle source
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(p1) click to toggle source
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(p1) click to toggle source
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));
}