Esempio n. 1
0
World OMstatus
OMgetBigInt(OMdev dev, char **data, int *len, int *sign, OMbigIntType * format)
{
    OMtokenType type;

    OMassert(data);

    *data = NULL;
    dev->inTokenNb++;
    OMcheckStatus(OMgetType(dev, &type));
    if (type == OMtokenInt32) {
        // allow user to get a bigint (if it was a 32 bit int)
        // OPTIM build a special low level call to get the string?
        int i;
        char tmp[12];		// a 32 bit int has at most 10 chars

        OMcheckStatus((*ENCODING(dev, getInt32)) (dev, &i));
        if (i < 0) {
            *sign = -1;
            i = -i;
        }
        sprintf(tmp, "%d", i);
        *data = strdup(tmp);
        *len = strlen(tmp);
        return OMsuccess;
    }
    else {
        return (*ENCODING(dev, getBigInt)) (dev, data, len, sign, format);
    }
}
Esempio n. 2
0
/* OMgetSymbolLength
 *   Get the current token (wich is assumed to be a symbol) lengths.
 * dev: device to read from
 * clen: where to put the cd length (not counting the last '\0')
 * nlen: where to put the name length (not counting the last '\0')
 * return: 0 or some error code
 */
World OMstatus
OMgetSymbolLength(OMdev dev, int *clen, int *nlen)
{
    OMassert(dev);

    return (*ENCODING(dev, getSymbolLength)) (dev, clen, nlen);
}
Esempio n. 3
0
XPT_Do16(XPTCursor *cursor, uint16_t *u16p)
{
    union {
        uint8_t b8[2];
        uint16_t b16;
    } u;

    if (!CHECK_COUNT(cursor, 2))
        return PR_FALSE;

    if (ENCODING(cursor)) {
        u.b16 = XPT_SWAB16(*u16p);
        CURS_POINT(cursor) = u.b8[0];
        cursor->offset++;
        CURS_POINT(cursor) = u.b8[1];
    } else {
        u.b8[0] = CURS_POINT(cursor);
        cursor->offset++;
        u.b8[1] = CURS_POINT(cursor);
        *u16p = XPT_SWAB16(u.b16);
    }
    cursor->offset++;

    return PR_TRUE;
}
Esempio n. 4
0
void push_headers(HEADER *header) {
	int num;
	ADDRESS *adr;
	
	push_text("subject");		PUSH_TEXT(header->env->real_subj);
	push_text("message_id");	PUSH_TEXT(header->env->message_id);
	push_text("type"); PUSH_TEXT( TYPE(header->content) );
	push_text("subtype"); PUSH_TEXT(header->content->subtype);
	push_text("encoding"); PUSH_TEXT( ENCODING(header->content->encoding) );
	push_text("length"); push_int(header->content->length);
	
	PUSH_MAPPING_si("lines", header->lines);
	PUSH_MAPPING_si("mime", header->mime);
	PUSH_MAPPING_si("flagged", header->flagged);
	PUSH_MAPPING_si("tagged", header->tagged);
	PUSH_MAPPING_si("deleted", header->deleted);
	PUSH_MAPPING_si("replied", header->replied);
	PUSH_MAPPING_si("date_sent", header->date_sent);
	PUSH_MAPPING_si("date_received", header->received);
	push_text("env");
		PUSH_ADDRESS("from",from);
		PUSH_ADDRESS_LIST("to",to);
		PUSH_ADDRESS_LIST("cc",cc);
		PUSH_ADDRESS_LIST("bcc",bcc);
		PUSH_ADDRESS("sender",sender);
		PUSH_ADDRESS("reply_to",reply_to);
		PUSH_ADDRESS("return_path",return_path);
		f_aggregate_mapping(14);
	f_aggregate_mapping(30);
}
Esempio n. 5
0
/* OMgetLength
 *   Get the current token length.
 * dev: device to read from
 * len: where to put the token length
 *      the last '\0' for string like tokens is not counted
 *      (rem: for WCString it is the number of bytes not the number of wide chars)
 * return: 0 or some error code
 */
World OMstatus
OMgetLength(OMdev dev, int *len)
{
    OMassert(dev);

    return (*ENCODING(dev, getLength)) (dev, len);
}
Esempio n. 6
0
XPT_Do32(XPTCursor *cursor, uint32_t *u32p)
{
    union {
        uint8_t b8[4];
        uint32_t b32;
    } u;

    if (!CHECK_COUNT(cursor, 4))
        return PR_FALSE;

    if (ENCODING(cursor)) {
        u.b32 = XPT_SWAB32(*u32p);
        CURS_POINT(cursor) = u.b8[0];
        cursor->offset++;
        CURS_POINT(cursor) = u.b8[1];
        cursor->offset++;
        CURS_POINT(cursor) = u.b8[2];
        cursor->offset++;
        CURS_POINT(cursor) = u.b8[3];
    } else {
        u.b8[0] = CURS_POINT(cursor);
        cursor->offset++;
        u.b8[1] = CURS_POINT(cursor);
        cursor->offset++;
        u.b8[2] = CURS_POINT(cursor);
        cursor->offset++;
        u.b8[3] = CURS_POINT(cursor);
        *u32p = XPT_SWAB32(u.b32);
    }
    cursor->offset++;
    return PR_TRUE;
}
Esempio n. 7
0
/* OMgetType
 *   Get the type of the current token on device <dev>/
 * dev: device to look at.
 * type: where to store returned type.
 * return: 0 or some error code
 */
World OMstatus
OMgetType(OMdev dev, OMtokenType * type)
{
    OMassert(dev);

    return (*ENCODING(dev, getType)) (dev, type);
}
Esempio n. 8
0
World OMstatus
OMgetByteArrayN(OMdev dev, char *data, int len)
{
    OMassert(dev);

    dev->inTokenNb++;
    return (*ENCODING(dev, getByteArray)) (dev, &data, &len);
}
Esempio n. 9
0
World OMstatus
OMputVar(OMdev dev, const char *var)
{
    OMassert(dev);

    dev->outTokenNb++;
    return (*ENCODING(dev, putVar)) (dev, var, strlen(var));
}
Esempio n. 10
0
World OMstatus
OMputVarN(OMdev dev, const char *var, int len)
{
    OMassert(dev);

    dev->outTokenNb++;
    return (*ENCODING(dev, putVar)) (dev, var, len);
}
Esempio n. 11
0
World OMstatus
OMputStringN(OMdev dev, const char *str, int len)
{
    OMassert(dev);

    dev->outTokenNb++;
    return (*ENCODING(dev, putString)) (dev, str, len);
}
Esempio n. 12
0
World OMstatus
OMputSymbolN(OMdev dev, const char *cd, int clen, const char *name, int nlen)
{
    OMassert(dev);

    dev->outTokenNb++;
    return (*ENCODING(dev, putSymbol)) (dev, cd, clen, name, nlen);
}
Esempio n. 13
0
World OMstatus
OMputByteArray(OMdev dev, const char *data, int len)
{
    OMassert(dev);

    dev->outTokenNb++;
    return (*ENCODING(dev, putByteArray)) (dev, data, len);
}
Esempio n. 14
0
World OMstatus
OMputCommentN(OMdev dev, const char *comment, int len)
{
    OMassert(dev);

    dev->outTokenNb++;
    return (*ENCODING(dev, putComment)) (dev, comment, len);
}
Esempio n. 15
0
World OMstatus
OMputError(OMdev dev)
{
    OMassert(dev);

    dev->outTokenNb++;
    return (*ENCODING(dev, putTokenTag)) (dev, OMtokenError);
}
Esempio n. 16
0
/* OMPut* functions.
 *    They all take a device <dev> to put token to.
 *    Some of them need more parameters to define the token content.
 *    They are thoroughly documented in OpenMath Specification shiped with the library.
 * return: a status that reflect the operation success.
 */
World OMstatus
OMputInt32(OMdev dev, int n)
{
    OMassert(dev);

    dev->outTokenNb++;
    return (*ENCODING(dev, putInt32)) (dev, n);
}
Esempio n. 17
0
World OMstatus
OMgetStringN(OMdev dev, char *str, int len)
{
    OMassert(dev);

    dev->inTokenNb++;
    return (*ENCODING(dev, getString)) (dev, &str, &len);
}
Esempio n. 18
0
World OMstatus
OMgetSymbolN(OMdev dev, char *cd, int clen, char *name, int nlen)
{
    OMassert(dev);

    dev->inTokenNb++;
    return (*ENCODING(dev, getSymbol)) (dev, &cd, &clen, &name, &nlen);
}
Esempio n. 19
0
/* BEWARE: the <len> is suposed to be the length in bytes for the preallocated buffer <wcstr> (not the length in number of wide chars)
 */
World OMstatus
OMgetWCStringN(OMdev dev, OMUCS2 * wcstr, int len)
{
    OMassert(dev);

    dev->inTokenNb++;
    return (*ENCODING(dev, getWCString)) (dev, &wcstr, &len);
}
Esempio n. 20
0
World OMstatus
OMgetEndError(OMdev dev)
{
    OMassert(dev);

    dev->inTokenNb++;
    return (*ENCODING(dev, getTokenTag)) (dev, OMtokenEndError);
}
Esempio n. 21
0
World OMstatus
OMgetVarN(OMdev dev, char *var, int len)
{
    OMassert(dev);

    dev->inTokenNb++;
    return (*ENCODING(dev, getVar)) (dev, &var, &len);
}
Esempio n. 22
0
World OMstatus
OMputSymbol(OMdev dev, const char *cd, const char *name)
{
    OMassert(dev);

    dev->outTokenNb++;
    return (*ENCODING(dev, putSymbol)) (dev, cd, strlen(cd), name, strlen(name));
}
Esempio n. 23
0
World OMstatus
OMgetObject(OMdev dev)
{
    OMassert(dev);

    dev->inTokenNb++;
    return (*ENCODING(dev, getTokenTag)) (dev, OMtokenObject);
}
Esempio n. 24
0
World OMstatus
OMgetInt32(OMdev dev, int *i)
{
    OMassert(dev);

    dev->inTokenNb++;
    return (*ENCODING(dev, getInt32)) (dev, i);
}
Esempio n. 25
0
World OMstatus
OMgetCommentN(OMdev dev, char *comment, int len)
{
    OMassert(dev);

    dev->inTokenNb++;
    return (*ENCODING(dev, getComment)) (dev, &comment, &len);
}
Esempio n. 26
0
World OMstatus
OMgetFloat64(OMdev dev, double *d)
{
    OMassert(dev);

    dev->inTokenNb++;
    return (*ENCODING(dev, getFloat64)) (dev, d);
}
Esempio n. 27
0
World OMstatus
OMputBigInt(OMdev dev, const char *data, int len, int sign, OMbigIntType format)
{
    OMassert(dev);

    dev->outTokenNb++;
    return (*ENCODING(dev, putBigInt)) (dev, data, len, sign, format);
}
Esempio n. 28
0
/* OMputWCString
 *   If you are using wide char strings you need to output them
 *   with that function rather than with OMputString.
 *   (It takes endianess into account)
 */
World OMstatus
OMputWCString(OMdev dev, const OMUCS2 * wcstr)
{
    OMassert(dev);

    dev->outTokenNb++;
    return (*ENCODING(dev, putWCString)) (dev, wcstr, OMWCStrLen(wcstr));
}
Esempio n. 29
0
World OMstatus
OMputObject(OMdev dev)
{
    OMassert(dev);

    OMbeginObject(dev);
    dev->outTokenNb++;
    return (*ENCODING(dev, putTokenTag)) (dev, OMtokenObject);
}
Esempio n. 30
0
World OMstatus
OMgetByteArray(OMdev dev, char **data, int *len)
{
    OMassert(data);

    *data = NULL;
    dev->inTokenNb++;
    return (*ENCODING(dev, getByteArray)) (dev, data, len);
}