genesis/
genesis/bin/
genesis/doc/
genesis/etc/
genesis/microsoft/coldcc/
genesis/microsoft/crypt/
genesis/microsoft/data/
genesis/microsoft/db/
genesis/microsoft/genesis/
genesis/microsoft/io/
genesis/microsoft/misc/
genesis/microsoft/mod/
genesis/microsoft/ndbm/
genesis/microsoft/ops/
genesis/microsoft/pcode/
genesis/test/
/*
// Full copyright information is available in the file ../doc/CREDITS
*/

#define NATIVE_MODULE "$integer"

#include "cdc.h"

NATIVE_METHOD(and) {
    Int val;

    INIT_2_ARGS(INTEGER, INTEGER);

    val = (Int) INT1 & INT2;

    CLEAN_RETURN_INTEGER(val);
}

NATIVE_METHOD(or) {
    Int val;

    INIT_2_ARGS(INTEGER, INTEGER);

    val = (Int) INT1 | INT2;

    CLEAN_RETURN_INTEGER(val);
}

NATIVE_METHOD(xor) {
    Int val;

    INIT_2_ARGS(INTEGER, INTEGER);

    val = (Int) INT1 ^ INT2;

    CLEAN_RETURN_INTEGER(val);
}

NATIVE_METHOD(shleft) {
    Int val;

    INIT_2_ARGS(INTEGER, INTEGER);

    val = (Int) INT1 << INT2;

    CLEAN_RETURN_INTEGER(val);
}

NATIVE_METHOD(shright) {
    Int val;

    INIT_2_ARGS(INTEGER, INTEGER);

    val = (Int) INT1 >> INT2;

    CLEAN_RETURN_INTEGER(val);
}

NATIVE_METHOD(not) {
    Int val;

    INIT_1_ARG(INTEGER);

    val = (Int) ~ INT1;

    CLEAN_RETURN_INTEGER(val);
}