int main() /* テスト (ごく一部) */ { double x, y; complex z; printf("x, y ? "); scanf("%lf%lf", &x, &y); z = c_conv(x, y); printf("z = %s\n", c_string(z)); z = c_exp(z); printf("exp(z) = %s\n", c_string(z)); z = c_log(z); printf("log(exp(z)) = %s\n", c_string(z)); return EXIT_SUCCESS; }
void initialize_id_list(SVG_XML *svg) { Interned_String id_key = intern(&svg->xml.string_table, c_string("id")); svg_walk_xml(svg, svg->xml.root, id_key); qsort(svg->ids.data, svg->ids.count, sizeof(*svg->ids.data), compare_id_to_xml); }
mcstring *reverse_string(mcstring *string) { int x; mcchar *buffer = c_string(string); mcchar tmp; for(x = 0; x < string->size / 2; x++) { tmp = buffer[x]; buffer[x] = buffer[string->size - x - 1]; buffer[string->size - x - 1] = tmp; } return wrap_string(buffer); }
int render_entity_avatar(World *world, U32 id, char *buffer) { char *ptr = buffer; Dwarf *dwarf = 0; for (U32 i = 0; i < Count(world->dwarves); i++) { if (world->dwarves[i].id == id) { dwarf = &world->dwarves[i]; break; } } if (!dwarf) { sprintf(buffer, "Entity not found with ID #%u", id); return 404; } ptr += sprintf(ptr, "<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\"" " width=\"60\" height=\"60\" overflow=\"hidden\">\n"); Printer p; p.pos = ptr; p.end = ptr + 10000; Random_Series series = series_from_seed32(dwarf->seed); const char *parts[] = { "base", "beard", "eyes", }; for (size_t i = 0; i < Count(parts); i++) { char name[64]; sprintf(name, "face-%s%02d", parts[i], 1 + next(&series, 3)); XML_Node *node = svg_find_by_id(&world->assets->faces, c_string(name)); if (!print_xml(&p, node)) return 500; } ptr = p.pos; ptr += sprintf(ptr, "</svg>\n"); return 200; }
void set_variants_from_options(void) { int which; const char *varname; Obj *varrest, *varset; /* Only the host of a networked game can set variants. */ if (option_game_to_join != NULL) { if (variant_settings != lispnil || option_width > 0) fprintf(stderr, "Not the host, ignoring variant settings\n"); return; } if (option_width > 0) { which = find_variant_from_name(mainmodule, keyword_name(K_WORLD_SIZE)); if (which >= 0) net_set_variant_value(which, option_width, option_height, option_circumference); else fprintf(stderr, "World size variant not available, -M ignored\n"); } /* Set the real-time variant if any times were supplied. */ if (option_total_game_time != 0 || option_per_side_time != 0 || option_per_turn_time != 0) { which = find_variant_from_name(mainmodule, keyword_name(K_REAL_TIME)); if (which >= 0) net_set_variant_value(which, option_total_game_time, option_per_side_time, option_per_turn_time); else fprintf(stderr, "Real time variants not available, ignored\n"); } for_all_list(variant_settings, varrest) { varset = car(varrest); varname = c_string(car(varset)); which = find_variant_from_name(mainmodule, varname); if (which >= 0) net_set_variant_value(which, c_number(cadr(varset)), 0, 0); else fprintf(stderr, "No variant `%s' known, ignored\n", varname); }
static void game_usage_info(void) { int i, wid, hgt, circumf, lat, lon, pergame, perside, perturn; const char *varid; char buf[BUFSIZE]; Variant *var; Obj *vardflt; printf("\nGame variant options"); if (mainmodule == NULL) { printf(":\n\n No game loaded, no information available.\n\n"); return; } printf(" for \"%s\":\n\n", mainmodule->name); if (mainmodule->variants == NULL) { printf(" No variants available.\n\n"); return; } for (i = 0; mainmodule->variants[i].id != lispnil; ++i) { var = &(mainmodule->variants[i]); varid = c_string(var->id); vardflt = var->dflt; switch (keyword_code(varid)) { case K_SEE_ALL: printf(" -V\t\t\t%s (default %s)\n", var->help, (vardflt == lispnil ? "true" : (c_number(eval(vardflt)) ? "true" : "false"))); break; case K_SEQUENTIAL: printf(" -seq\t\t%s (default %s)\n", var->help, (vardflt == lispnil ? "false" : (c_number(eval(vardflt)) ? "false" : "true"))); printf(" -sim\t\tSides move simultaneously (opposite of -seq)\n"); break; case K_WORLD_SEEN: printf(" -v\t\t\t%s (default %s)\n", var->help, (vardflt == lispnil ? "true" : (c_number(eval(vardflt)) ? "true" : "false"))); break; case K_WORLD_SIZE: printf(" -M wid[xhgt][Wcircumf][+lat][+long]\tset world size (default "); /* Note that if the game definition sets these values directly using world or area forms, this is misleading; but that's the fault of the game designer for including both preset values and a variant whose defaults don't match those presets. */ circumf = DEFAULTCIRCUMFERENCE; wid = DEFAULTWIDTH; hgt = DEFAULTHEIGHT; lat = lon = 0; /* Pick the width and height out of the list. */ if (vardflt != lispnil) { wid = c_number(eval(car(vardflt))); vardflt = cdr(vardflt); } if (vardflt != lispnil) { hgt = c_number(eval(car(vardflt))); vardflt = cdr(vardflt); } else { hgt = wid; } /* Pick up a circumference etc if given. */ if (vardflt != lispnil) { circumf = c_number(eval(car(vardflt))); vardflt = cdr(vardflt); } if (vardflt != lispnil) { lat = c_number(eval(car(vardflt))); vardflt = cdr(vardflt); } if (vardflt != lispnil) { lon = c_number(eval(car(vardflt))); } printf("%dx%dW%d", wid, hgt, circumf); if (lat != 0 || lon != 0) printf("+%d+%d", lat, lon); printf(")\n"); break; case K_REAL_TIME: pergame = perside = perturn = 0; if (vardflt != lispnil) { pergame = c_number(eval(car(vardflt))); vardflt = cdr(vardflt); } if (vardflt != lispnil) { perside = c_number(eval(car(vardflt))); vardflt = cdr(vardflt); } if (vardflt != lispnil) { perturn = c_number(eval(car(vardflt))); } printf(" -tgame mins\t\tlimit game time to <mins> minutes (default %d)\n", pergame); printf(" -tside mins\t\tlimit each player <mins> minutes in all (default %d)\n", perside); printf(" -tturn mins\t\tlimit each turn to <mins> minutes (default %d)\n", perturn); break; default: printf(" -v%s[=value]\t%s (default ", varid, var->help); if (vardflt == lispnil || (numberp(vardflt) && c_number(vardflt) == 0)) { printf("false"); } else if (numberp(vardflt) && c_number(vardflt) == 1) { printf("true"); } else { sprintlisp(buf, vardflt, BUFSIZE); printf("%s", buf); } printf(")\n"); break; } } }
// convert value to string represenatation. inline std::ustring to_string(HVM vm,value v) { return c_string(ni()->to_string(vm,v)); }