コード例 #1
0
ファイル: value_datetime.c プロジェクト: mirror/xmlrpc-c
static void
test_value_datetime_basic(void) {

    xmlrpc_value * v;
    xmlrpc_env env;
    xmlrpc_datetime dt;
    xmlrpc_datetime readBackDt;

    xmlrpc_env_init(&env);

    dt.Y = 2001;
    dt.M = 12;
    dt.D = 25;
    dt.h = 1;
    dt.m = 2;
    dt.s = 3;
    dt.u = 4;

    v = xmlrpc_datetime_new(&env, dt);

    xmlrpc_read_datetime(&env, v, &readBackDt);
    TEST_NO_FAULT(&env);
    TEST(readBackDt.Y = dt.Y);
    TEST(readBackDt.M = dt.M);
    TEST(readBackDt.D = dt.D);
    TEST(readBackDt.h = dt.h);
    TEST(readBackDt.m = dt.m);
    TEST(readBackDt.s = dt.s);
    TEST(readBackDt.u = dt.u);

    xmlrpc_env_clean(&env);
}
コード例 #2
0
ファイル: value.cpp プロジェクト: arssivka/naomech
value_datetime::operator xmlrpc_datetime() const {

    this->validateInstantiated();

    xmlrpc_datetime retval;
    env_wrap env;

    xmlrpc_read_datetime(&env.env_c, this->cValueP, &retval);
    throwIfError(env);

    return retval;
}
コード例 #3
0
ファイル: xmlrpc_datetime.c プロジェクト: arssivka/naomech
void
xmlrpc_read_datetime_8601(xmlrpc_env *const envP,
                          const xmlrpc_value *const valueP,
                          const char **const iso8601ValueP) {
/*----------------------------------------------------------------------------
  Get the datetime in ISO 8601 format.

  ISO 8601 allows a variety of representations for each datetime.
  The particular one we return is as in the following example.

     19930214T131030,250000Z

  (13:10:30.25 on February 14, 1993)

  There are always 4 digits for the year.  There are always 6 digits after the
  comma (microseconds).  Midnight is hour 0, not 24.
-----------------------------------------------------------------------------*/
    validateDatetimeType(envP, valueP);
    if (!envP->fault_occurred) {
        xmlrpc_datetime dt;

        xmlrpc_read_datetime(envP, valueP, &dt);

        if (!envP->fault_occurred) {
            if (dt.Y > 9999)
                xmlrpc_faultf(envP, "Too far in future (year %u).  "
                        "ISO 8601 cannot "
                        "represent years after AD 9999", dt.Y);
            else {
                xmlrpc_asprintf(iso8601ValueP,
                                "%04u%02u%02uT%02u%02u%02u,%06uZ",
                                dt.Y, dt.M, dt.D, dt.h, dt.m, dt.s, dt.u);

                if (xmlrpc_strnomem(*iso8601ValueP))
                    xmlrpc_faultf(envP,
                                  "Unable to allocate memory "
                                          "for datetime string");

                if (envP->fault_occurred)
                    xmlrpc_strfree(*iso8601ValueP);
            }
        }
    }
}