Beispiel #1
0
void Dict__get(caStack* stack)
{
    caValue* dict = circa_input(stack, 0);
    const char* key = circa_string_input(stack, 1);

    copy(dict_get(dict, key), circa_output(stack, 0));
}
Beispiel #2
0
void Dict__set(caStack* stack)
{
    caValue* dict = circa_output(stack, 0);
    copy(circa_input(stack, 0), dict);

    const char* key = circa_string_input(stack, 1);
    caValue* value = circa_input(stack, 2);

    copy(value, dict_insert(dict, key));
}
void Branch__find_term(caStack* stack)
{
    Branch* branch = as_branch(circa_input(stack, 0));
    if (branch == NULL)
        return circa_output_error(stack, "NULL branch");

    Term* term = branch->get(circa_string_input(stack, 1));

    set_term_ref(circa_output(stack, 0), term);
}
Beispiel #4
0
void String__to_camel_case(caStack* stack)
{
    const char* in = circa_string_input(stack, 0);
    set_string(circa_output(stack, 0), in);

    char* out = (char*) as_cstring(circa_output(stack, 0));
    if (out[0] == 0)
        return;

    out[0] = character_to_lower(out[0]);
}
Beispiel #5
0
void call_actor_func(caStack* stack)
{
#if 0 // actorList disabled
    const char* actorSymbol = circa_string_input(stack, 0);
    caValue* msg = circa_input(stack, 1);

    if (stack->world == NULL) {
        circa_output_error(stack, "Stack was not created with World");
        return;
    }

    circa_actor_run_message(stack->world, actorName, msg);
#endif
}
void Term__property(caStack* stack)
{
    Term* t = as_term_ref(circa_input(stack, 0));
    if (t == NULL)
        return circa_output_error(stack, "NULL reference");

    const char* key = circa_string_input(stack, 1);

    caValue* value = term_get_property(t, key);

    if (value == NULL)
        set_null(circa_output(stack, 0));
    else
        circa::copy(value, circa_output(stack, 0));
}
Beispiel #7
0
void String__to_upper(caStack* stack)
{
    const char* in = circa_string_input(stack, 0);
    int len = (int) strlen(in);

    set_string(circa_output(stack, 0), in);
    char* out = (char*) as_cstring(circa_output(stack, 0));

    for (int i=0; i < len; i++) {
        char c = in[i];

        if (c >= 'a' && c <= 'z')
            c = c + 'A' - 'a';
        out[i] = c;
    }
}
Beispiel #8
0
void String__char_at(caStack* stack)
{
    const char* str = circa_string_input(stack, 0);
    int index = circa_int_input(stack, 1);

    if (index < 0) {
        circa_output_error(stack, "negative index");
        return;
    }

    if ((unsigned) index >= strlen(str)) {
        set_string(circa_output(stack, 0), "");
        return;
    }

    char output[1];
    output[0] = str[index];
    set_string(circa_output(stack, 0), output, 1);
}
Beispiel #9
0
void send_func(caStack* stack)
{
#if 0 // actorList disabled
    const char* actorSymbol = circa_string_input(stack, 0);
    caValue* msg = circa_input(stack, 1);

    if (stack->world == NULL) {
        circa_output_error(stack, "Stack was not created with World");
        return;
    }

    ListData* actor = find_actor(stack->world, actorName);

    if (actor == NULL) {
        std::string msg = "Actor not found: ";
        msg += actorName;
        circa_output_error(stack, msg.c_str());
        return;
    }

    actor_send_message(actor, msg);
#endif
}
Beispiel #10
0
void file__read_text(caStack* stack)
{
    circa_read_file(circa_string_input(stack, 0), circa_output(stack, 0));
}
Beispiel #11
0
void file__version(caStack* stack)
{
    set_int(circa_output(stack, 0), circa_file_get_version(circa_string_input(stack, 0)));
}
Beispiel #12
0
void String__length(caStack* stack)
{
    const char* str = circa_string_input(stack, 0);
    set_int(circa_output(stack, 0), (int) strlen(str));
}
Beispiel #13
0
void from_string(caStack* stack)
{
    parse_string_repr(circa_string_input(stack, 0), circa_output(stack, 0));
}