Acme-ExtUtils-XSOne-Test-Calculator
view release on metacpan or search on metacpan
lib/Acme/ExtUtils/XSOne/Test/Calculator/Memory.xs view on Meta::CPAN
return sum;
}
static void mem_add_to_slot(int slot, double value) {
if (mem_is_valid_slot(slot)) {
memory_slots[slot] += value;
}
}
MODULE = Acme::ExtUtils::XSOne::Test::Calculator PACKAGE = Acme::ExtUtils::XSOne::Test::Calculator::Memory
PROTOTYPES: DISABLE
int
store(slot, value)
int slot
double value
CODE:
RETVAL = store_memory(slot, value);
if (!RETVAL) {
warn("Invalid memory slot %d (valid: 0-%d)", slot, MAX_MEMORY_SLOTS - 1);
}
OUTPUT:
RETVAL
double
recall(slot)
int slot
CODE:
if (slot < 0 || slot >= MAX_MEMORY_SLOTS) {
warn("Invalid memory slot %d (valid: 0-%d)", slot, MAX_MEMORY_SLOTS - 1);
RETVAL = 0.0;
} else {
RETVAL = recall_memory(slot);
}
OUTPUT:
RETVAL
void
clear()
CODE:
clear_all_memory();
double
ans()
CODE:
RETVAL = get_last_result();
OUTPUT:
RETVAL
int
history_count()
CODE:
RETVAL = history_count;
OUTPUT:
RETVAL
void
get_history_entry(index)
int index
PPCODE:
if (index < 0 || index >= history_count) {
croak("Invalid history index %d (valid: 0-%d)", index, history_count - 1);
}
EXTEND(SP, 4);
PUSHs(sv_2mortal(newSVpvf("%c", history[index].operation)));
PUSHs(sv_2mortal(newSVnv(history[index].operand1)));
PUSHs(sv_2mortal(newSVnv(history[index].operand2)));
PUSHs(sv_2mortal(newSVnv(history[index].result)));
int
max_memory_slots()
CODE:
RETVAL = MAX_MEMORY_SLOTS;
OUTPUT:
RETVAL
int
max_history_entries()
CODE:
RETVAL = MAX_HISTORY;
OUTPUT:
RETVAL
int
is_valid_slot(slot)
int slot
CODE:
RETVAL = mem_is_valid_slot(slot);
OUTPUT:
RETVAL
int
used_slots()
CODE:
RETVAL = mem_get_used_slots();
OUTPUT:
RETVAL
double
sum_all_slots()
CODE:
RETVAL = mem_sum_all();
OUTPUT:
RETVAL
void
add_to(slot, value)
int slot
double value
CODE:
mem_add_to_slot(slot, value);
void
import(...)
CODE:
{
static const char *memory_exports[] = {
"store", "recall", "clear", "ans",
"history_count", "get_history_entry",
"max_memory_slots", "max_history_entries",
( run in 0.664 second using v1.01-cache-2.11-cpan-71847e10f99 )