int run_command_line(caWorld* world, int argc, const char* args[]) { Value args_v; set_list(&args_v, 0); for (int i=1; i < argc; i++) circa_set_string(circa_append(&args_v), args[i]); return run_command_line(world, &args_v); }
void Block__statements(VM* vm) { Block* block = (Block*) circa_block(vm->input(0)); if (block == NULL) return vm->throw_str("NULL block"); Value* out = vm->output(); circa_set_list(out, 0); for (int i=0; i < block->length(); i++) if (is_statement(block->get(i))) circa_set_term(circa_append(out), (caTerm*) block->get(i)); }
void Block__list_configs(VM* vm) { Block* block = as_block(vm->input(0)); if (block == NULL) return vm->throw_str("NULL block"); Value* output = vm->output(); for (int i=0; i < block->length(); i++) { Term* term = block->get(i); if (is_considered_config(term)) set_term_ref(circa_append(output), term); } }
void Branch__statements(caStack* stack) { Branch* branch = (Branch*) circa_branch(circa_input(stack, 0)); if (branch == NULL) return circa_output_error(stack, "NULL branch"); caValue* out = circa_output(stack, 0); circa_set_list(out, 0); for (int i=0; i < branch->length(); i++) if (is_statement(branch->get(i))) circa_set_term(circa_append(out), (caTerm*) branch->get(i)); }
void Branch__list_configs(caStack* stack) { Branch* branch = as_branch(circa_input(stack, 0)); if (branch == NULL) return circa_output_error(stack, "NULL branch"); caValue* output = circa_output(stack, 0); for (int i=0; i < branch->length(); i++) { Term* term = branch->get(i); if (is_considered_config(term)) set_term_ref(circa_append(output), term); } }
static void try_parse(Value* str, Value* msgList) { int msgStart = 0; for (int i=0; i < circa_string_length(str); i++) { if (circa_string(str)[i] == 0) { if (i > msgStart) { Value* msg = circa_append(msgList); circa_parse_string_len(circa_string(str), i - msgStart, msg); } msgStart = i + 1; } } if (msgStart > 0) string_slice(str, msgStart, -1); }
static void server_on_connect(uv_stream_t *uv_server, int status) { Server* server = (Server*) uv_server->data; if (status == -1) { printf("server_on_connect failed\n"); return; } Connection* connection = new Connection(); connection->server = server; uv_tcp_init(uv_server->loop, &connection->uv_tcp); connection->uv_tcp.data = connection; switch (connection->server->serverType) { case WEBSOCK: http_parser_init(&connection->parser, HTTP_REQUEST); circa_set_map(&connection->httpHeaders); connection->parser.data = connection; connection->state = WEBSOCK_NEGOTIATE_STATE; break; case TCP: connection->state = TCP_STATE; break; } if (uv_accept(uv_server, (uv_stream_t*) &connection->uv_tcp) != 0) internal_error("uv_accept error\n"); if (uv_read_start((uv_stream_t*) &connection->uv_tcp, alloc_buffer, on_read) != 0) internal_error("uv_read_start error\n"); Value* wrapped = circa_append(&server->connections); circa_set_list(wrapped, 1); circa_set_native_ptr(circa_index(wrapped, 0), connection, ConnectionRelease); printf("on new connection\n"); }
void ImprovWindow::mainLoop() { // Main loop. while (true) { // Handle events. SDL_Event sdlEvent; while (SDL_PollEvent(&sdlEvent)) { switch (sdlEvent.type) { case SDL_QUIT: printf("received SDL_QUIT\n"); return; case SDL_KEYDOWN: { #ifndef NACL // Quit on Escape key if (sdlEvent.key.keysym.sym == SDLK_ESCAPE) return; #if 0 // Fullscreen on command-F if (sdlEvent.key.keysym.sym == SDLK_f && (sdlEvent.key.keysym.mod & KMOD_CTRL)) toggleFullscreen(); #endif #endif caValue* event = circa_append(_inputEvents); circa_set_list(event, 2); circa_set_symbol(circa_index(event, 0), "down"); sdl_key_to_symbol(sdlEvent.key.keysym.sym, circa_index(event, 1)); break; } case SDL_KEYUP: { caValue* event = circa_append(_inputEvents); circa_set_list(event, 2); circa_set_symbol(circa_index(event, 0), "up"); sdl_key_to_symbol(sdlEvent.key.keysym.sym, circa_index(event, 1)); break; } case SDL_MOUSEBUTTONDOWN: { double mouseX = sdlEvent.button.x; double mouseY = sdlEvent.button.y; caValue* event = circa_append(_inputEvents); circa_set_list(event, 3); circa_set_symbol(circa_index(event, 0), "down"); if (sdlEvent.button.button == SDL_BUTTON_LEFT) circa_set_symbol(circa_index(event, 1), "left_mouse"); else circa_set_symbol(circa_index(event, 1), "right_mouse"); circa_set_vec2(circa_index(event, 2), mouseX, mouseY); break; } case SDL_MOUSEBUTTONUP: { double mouseX = sdlEvent.button.x; double mouseY = sdlEvent.button.y; caValue* event = circa_append(_inputEvents); circa_set_list(event, 3); circa_set_symbol(circa_index(event, 0), "up"); if (sdlEvent.button.button == SDL_BUTTON_LEFT) circa_set_symbol(circa_index(event, 1), "left_mouse"); else circa_set_symbol(circa_index(event, 1), "right_mouse"); circa_set_vec2(circa_index(event, 2), mouseX, mouseY); break; } case SDL_MOUSEWHEEL: { caValue* event = circa_append(_inputEvents); circa_set_list(event, 3); circa_set_symbol(circa_index(event, 0), "mouse_wheel"); circa_set_vec2(circa_index(event, 1), sdlEvent.wheel.x, sdlEvent.wheel.y); break; } case SDL_WINDOWEVENT: { switch (sdlEvent.window.event) { case SDL_WINDOWEVENT_RESIZED: int width = sdlEvent.window.data1; int height = sdlEvent.window.data2; setSize(width, height); break; } break; } } } // Done handling events. Redraw screen. _elapsedTime = SDL_GetTicks() / 1000.0; int mouseX, mouseY; SDL_GetMouseState(&mouseX, &mouseY); _mouseX = mouseX; _mouseY = mouseY; redraw(); SDL_GL_SwapWindow(_sdl_window); SDL_Delay(1); } }