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)); }
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); }
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]); }
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)); }
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; } }
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); }
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 }
void file__read_text(caStack* stack) { circa_read_file(circa_string_input(stack, 0), circa_output(stack, 0)); }
void file__version(caStack* stack) { set_int(circa_output(stack, 0), circa_file_get_version(circa_string_input(stack, 0))); }
void String__length(caStack* stack) { const char* str = circa_string_input(stack, 0); set_int(circa_output(stack, 0), (int) strlen(str)); }
void from_string(caStack* stack) { parse_string_repr(circa_string_input(stack, 0), circa_output(stack, 0)); }