static void sd_v_test(void) { sdbuild b; sd_buildinit(&b); t( sd_buildbegin(&b, &st_r.r, 1, 0, 0) == 0); int i = 7; int j = 8; addv(&b, &st_r.r, 3, 0, &i); addv(&b, &st_r.r, 4, 0, &j); sd_buildend(&b, &st_r.r); ssbuf buf; ss_bufinit(&buf); ssbuf xfbuf; ss_bufinit(&xfbuf); t( ss_bufensure(&xfbuf, &st_r.a, 1024) == 0 ); t( sd_commitpage(&b, &st_r.r, &buf) == 0 ); sdpageheader *h = (sdpageheader*)buf.s; sdpage page; sd_pageinit(&page, h); ssiter it; ss_iterinit(sd_pageiter, &it); ss_iteropen(sd_pageiter, &it, &st_r.r, &xfbuf, &page, SS_GTE, NULL, 0); t( ss_iteratorhas(&it) != 0 ); sv *v = ss_iteratorof(&it); t( v != NULL ); t( *(int*)sv_key(v, &st_r.r, 0) == i ); t( sv_lsn(v) == 3 ); t( sv_flags(v) == 0 ); ss_iteratornext(&it); t( ss_iteratorhas(&it) != 0 ); v = ss_iteratorof(&it); t( v != NULL ); t( *(int*)sv_key(v, &st_r.r, 0) == j ); t( sv_lsn(v) == 4 ); t( sv_flags(v) == 0 ); ss_iteratornext(&it); v = ss_iteratorof(&it); t( v == NULL ); sd_buildfree(&b, &st_r.r); ss_buffree(&buf, &st_r.a); ss_buffree(&xfbuf, &st_r.a); }
/* * Funzione utilizzata per riceve un pacchetto dal client. * Restituisce: * 0 se esiste gia' un pacchetto con quel nome o il numero di versione e inferiore * -1 se raggiunta la quantita' massima di pacchetti * -2 se non e' stato effettuato il login */ int receive_pkg(int mode) { writebuf("(receive)\t %d Ricevo il pacchetto %s\n", req.pid, req.pkg.nome); req.tipo = req.pid; if (check_auth(req.pid, req.pwd) || is_auth(req.pid) != -1) { //Controllo l'autorizzazione con la funzione breve o con la ricerca if (mode == M_ADD) { req.todo = addv(req.pkg.nome, req.pkg.ver); if (req.todo == -1) writebuf("(add)\t\t %d Raggiunta la quantita' massima di pacchetti. %s non inserito [ERRORE]\n", req.pid, req.pkg.nome); else if (req.todo == 0) writebuf("(add)\t\t %d %s Esiste gia' nel server. [ERRORE] \n", req.pid, req.pkg.nome); else { writebuf("(add)\t\t %d %s aggiunto correttamente\n", req.pid, req.pkg.nome); avvisa_push(); //Invio un segnale ai client push } } else { req.todo = update(req.pkg.nome, req.pkg.ver); if (req.todo == -1) writebuf("(update)\t %d %s non e' presente sul server [ERRORE]\n",req.pid, req.pkg.nome); else if (req.todo == 0) writebuf("(update)\t %d %s ver. %d appena inviato e' meno aggiornato di quello nel server [ERRORE]\n", req.pid, req.pkg.nome, req.pkg.ver); else { writebuf("(update)\t %d %s aggiornato correttamente\n", req.pid, req.pkg.nome); avvisa_push(); //Invio un segnale ai client push } } } else { req.todo = -2; writebuf("(receive)\t %d Non autenticato [ERRORE]\n", req.pid); } //Invio il messaggio di risposta msg_send(&req, msgl, msgid); writebuf("(receive)\t %d Report inviato\n", req.pid); return req.todo; }
int main() { int a,b,res,ch; res = 0; clrscr(); printf("\nPress any key to step through during execution!.."); printf("\n\nValue of res in main() before any processing: %d",res); getche(); printf("\n\nEnter first number: "); scanf("%d",&a); printf("Enter second number: "); scanf("%d",&b); printf("\n\n1. Press 1 for Addition using pass by value."); printf("\n\n2. Press 2 for Addition using pass by reference.\n\nChoice?: "); scanf("%d",&ch); clrscr(); switch(ch) { case 1 : { printf("\n\nAddition using pass by value!\n"); printf("============================"); getche(); printf("\n\nPassing your input as value to add function..."); addv(a,b,res); //call by value printf("\n\nBack in main!\n"); getche(); printf("\nValue of res in main(): %d\t(Unchanged)",res); getche(); printf("\n\nConclusion: Pass by value operates on local copies of variables \nand hence does not change the actual variables in main()."); break; } case 2 : { printf("\n\nAddition using pass by reference!\n"); printf("================================"); getche(); printf("\n\nPassing your input as a reference to add function..."); addr(&a,&b,&res); //call by reference printf("\n\nBack in main!\n"); getche(); printf("\nValue of res in main(): %d\t(Changed)",res); getche(); printf("\n\nConclusion: Pass by ref operates directly on the addresses of the \npassed variable and hence actual/original variables in main() are changed."); break; } } getche(); return 0; }
void SpriteBatch::addq(Quad * quad, float x, float y, float a, float sx, float sy, float ox, float oy, float kx, float ky) { // Only do this if there's a free slot. if(next < size) { // Needed for colors. memcpy(sprite, quad->getVertices(), sizeof(vertex)*4); // Transform. Matrix t; t.setTransformation(x, y, a, sx, sy, ox, oy, kx, ky); t.transform(sprite, sprite, 4); if (color) setColorv(sprite, *color); addv(sprite); // Increment counter. next++; } }
int SpriteBatch::add(float x, float y, float a, float sx, float sy, float ox, float oy, float kx, float ky, int index /*= -1*/) { // Only do this if there's a free slot. if ((index == -1 && next >= size) || index < -1 || index >= size) return -1; // Needed for colors. memcpy(sprite, image->getVertices(), sizeof(vertex)*4); // Transform. Matrix t; t.setTransformation(x, y, a, sx, sy, ox, oy, kx, ky); t.transform(sprite, sprite, 4); if (color) setColorv(sprite, *color); addv(sprite, (index == -1 ? next : index)); // Increment counter. if (index == -1) return next++; return index; }
int main(int argc, char* argv[]){ // parsing the arguments if(argc < 3) error_exit("Syntax error : Incorrect arguments, use : input_file output_file [-v] [-m filename].\r\n\r\n"); bool use_verbatim = false; FILE* matlab_file = NULL; FILE* input_file = fopen(argv[1],"r"); FILE* output_file = fopen(argv[2],"w+"); if( input_file == NULL || output_file == NULL) error_exit("Runtime error : could not open required i/o files.\r\n\r\n"); for(int i=3 ; i < argc; i++){ if( argv[i][0] != '-' ) error_exit("Syntax error : Unknown parameter : %s\r\n\r\n",argv[i]); switch(argv[i][1]){ case 'v' : use_verbatim = true; break; case 'm' : if(i+1 >= argc) error_exit("Syntax error : Filename required with -m option\r\n\r\n"); matlab_file = fopen(argv[i+1], "w+"); if(matlab_file == NULL) error_exit("Runtime error : Cannot open file '%s' for matlab output.\r\n\r\n",argv[i+1]); i++; break; } } // positions and speed at time n-1 (0) and n (1). vector p10,p20,v1,v2,p11,p21; // masses long double m1,m2; // discretization parameters long double dt, t_final, dt_output; fscanf(input_file, "%Lf\r\n%Lf %Lf %Lf\r\n%Lf %Lf %Lf\r\n%Lf\r\n%Lf %Lf %Lf\r\n%Lf %Lf %Lf\r\n%Lf\r\n%Lf\r\n%Lf", &m1, &(p10.x), &(p10.y), &(p10.z), &(v1.x), &(v1.y), &(v1.z), &m2, &(p20.x), &(p20.y), &(p20.z), &(v2.x), &(v2.y), &(v2.z), &dt, &t_final, &dt_output ); // Initial values determination p11 = addv(scalev(v1, dt), p10); p21 = addv(scalev(v2, dt), p20); write_init(output_file, matlab_file, use_verbatim, m1, p10, v1, m2, p20, v2, dt, t_final, dt_output); write_output(output_file, matlab_file, use_verbatim, 0, p10, p20); if(dt_output <= dt + DOUBLE_EPSILON) write_output(output_file, matlab_file, use_verbatim, dt, p11, p21); long double next_out = dt_output; for(long double t = dt * 2 ; t <= t_final ; t+= dt ){ vector dp = subv(p21,p11); long double norm = normv(dp); // compute F vector f = scalev(dp, - m1 * m2 * CONST_G / (norm * norm * norm)); // compute positions at time t vector new_p1 = addv(subv(scalev(f, - dt * dt / m1), p10) , scalev(p11, 2)); vector new_p2 = addv(subv(scalev(f, dt * dt / m2), p20) , scalev(p21, 2)); p10 = p11; p20 = p21; p11 = new_p1; p21 = new_p2; if(t + dt - DOUBLE_EPSILON >= next_out){ write_output(output_file, matlab_file, use_verbatim, t, p11, p21); next_out +=dt_output; } } write_end(output_file, matlab_file, use_verbatim); fclose(input_file); fclose(output_file); return EXIT_SUCCESS; }
static void sd_read_gt0(void) { sdbuild b; sd_buildinit(&b); t( sd_buildbegin(&b, &st_r.r, 1, 0, 0, 0, NULL) == 0); int key = 7; addv(&b, &st_r.r, 3, 0, &key); key = 8; addv(&b, &st_r.r, 4, 0, &key); key = 9; addv(&b, &st_r.r, 5, 0, &key); sd_buildend(&b, &st_r.r); sdindex index; sd_indexinit(&index); t( sd_indexbegin(&index, &st_r.r) == 0 ); int rc; rc = sd_indexadd(&index, &st_r.r, &b, sizeof(sdseal)); t( rc == 0 ); sdid id; memset(&id, 0, sizeof(id)); ssfile f; ss_fileinit(&f, &st_r.vfs); t( ss_filenew(&f, "./0000.db") == 0 ); t( sd_writeseal(&st_r.r, &f, NULL) == 0 ); t( sd_writepage(&st_r.r, &f, NULL, &b) == 0 ); t( sd_indexcommit(&index, &st_r.r, &id, NULL, f.size) == 0 ); t( sd_writeindex(&st_r.r, &f, NULL, &index) == 0 ); t( sd_seal(&st_r.r, &f, NULL, &index, 0) == 0 ); ssmmap map; t( ss_vfsmmap(&st_r.vfs, &map, f.fd, f.size, 1) == 0 ); ssbuf buf; ss_bufinit(&buf); ssbuf xfbuf; ss_bufinit(&xfbuf); t( ss_bufensure(&xfbuf, &st_r.a, 1024) == 0 ); ssiter index_iter; ssiter page_iter; sdreadarg arg = { .index = &index, .buf = &buf, .buf_xf = &xfbuf, .buf_read = NULL, .index_iter = &index_iter, .page_iter = &page_iter, .mmap = &map, .memory = NULL, .file = NULL, .o = SS_GT, .use_memory = 0, .use_mmap = 1, .use_mmap_copy = 0, .use_compression = 0, .compression_if = NULL, .has = 0, .has_vlsn = 0, .r = &st_r.r }; ssiter it; ss_iterinit(sd_read, &it); ss_iteropen(sd_read, &it, &arg, NULL, 0); t( ss_iteratorhas(&it) == 1 ); sv *v = ss_iteratorof(&it); t( *(int*)sv_field(v, &st_r.r, 0, NULL) == 7); ss_iteratornext(&it); v = ss_iteratorof(&it); t( *(int*)sv_field(v, &st_r.r, 0, NULL) == 8); ss_iteratornext(&it); v = ss_iteratorof(&it); t( *(int*)sv_field(v, &st_r.r, 0, NULL) == 9); ss_iteratornext(&it); t( ss_iteratorhas(&it) == 0 ); ss_iteratorclose(&it); ss_fileclose(&f); t( ss_vfsmunmap(&st_r.vfs, &map) == 0 ); t( ss_vfsunlink(&st_r.vfs, "./0000.db") == 0 ); sd_indexfree(&index, &st_r.r); sd_buildfree(&b, &st_r.r); ss_buffree(&xfbuf, &st_r.a); ss_buffree(&buf, &st_r.a); } static void sd_read_gt1(void) { ssfile f; ss_fileinit(&f, &st_r.vfs); t( ss_filenew(&f, "./0000.db") == 0 ); t( sd_writeseal(&st_r.r, &f, NULL) == 0 ); sdbuild b; sd_buildinit(&b); t( sd_buildbegin(&b, &st_r.r, 1, 0, 0, 0, NULL) == 0); int key = 7; addv(&b, &st_r.r, 3, 0, &key); key = 8; addv(&b, &st_r.r, 4, 0, &key); key = 9; addv(&b, &st_r.r, 5, 0, &key); sd_buildend(&b, &st_r.r); uint64_t poff = f.size; t( sd_writepage(&st_r.r, &f, NULL, &b) == 0 ); sdindex index; sd_indexinit(&index); t( sd_indexbegin(&index, &st_r.r) == 0 ); int rc; rc = sd_indexadd(&index, &st_r.r, &b, poff); t( rc == 0 ); t( sd_buildcommit(&b, &st_r.r) == 0 ); t( sd_buildbegin(&b, &st_r.r, 1, 0, 0, 0, NULL) == 0); key = 10; addv(&b, &st_r.r, 6, 0, &key); key = 11; addv(&b, &st_r.r, 7, 0, &key); key = 13; addv(&b, &st_r.r, 8, 0, &key); sd_buildend(&b, &st_r.r); poff = f.size; t( sd_writepage(&st_r.r, &f, NULL, &b) == 0 ); rc = sd_indexadd(&index, &st_r.r, &b, poff); t( rc == 0 ); t( sd_buildcommit(&b, &st_r.r) == 0 ); t( sd_buildbegin(&b, &st_r.r, 1, 0, 0, 0, NULL) == 0); key = 15; addv(&b, &st_r.r, 9, 0, &key); key = 18; addv(&b, &st_r.r, 10, 0, &key); key = 20; addv(&b, &st_r.r, 11, 0, &key); sd_buildend(&b, &st_r.r); poff = f.size; t( sd_writepage(&st_r.r, &f, NULL, &b) == 0 ); rc = sd_indexadd(&index, &st_r.r, &b, poff); t( rc == 0 ); t( sd_buildcommit(&b, &st_r.r) == 0 ); sdid id; memset(&id, 0, sizeof(id)); t( sd_indexcommit(&index, &st_r.r, &id, NULL, f.size) == 0 ); t( sd_writeindex(&st_r.r, &f, NULL, &index) == 0 ); t( sd_seal(&st_r.r, &f, NULL, &index, 0) == 0 ); ssmmap map; t( ss_vfsmmap(&st_r.vfs, &map, f.fd, f.size, 1) == 0 ); ssbuf buf; ss_bufinit(&buf); ssbuf xfbuf; ss_bufinit(&xfbuf); t( ss_bufensure(&xfbuf, &st_r.a, 1024) == 0 ); ssiter index_iter; ssiter page_iter; sdreadarg arg = { .index = &index, .buf = &buf, .buf_xf = &xfbuf, .buf_read = NULL, .index_iter = &index_iter, .page_iter = &page_iter, .mmap = &map, .memory = NULL, .file = NULL, .o = SS_GT, .use_memory = 0, .use_mmap = 1, .use_mmap_copy = 0, .use_compression = 0, .compression_if = NULL, .has = 0, .has_vlsn = 0, .r = &st_r.r }; ssiter it; ss_iterinit(sd_read, &it); ss_iteropen(sd_read, &it, &arg, NULL, 0); t( ss_iteratorhas(&it) == 1 ); /* page 0 */ t( ss_iteratorhas(&it) != 0 ); sv *v = ss_iteratorof(&it); t( *(int*)sv_field(v, &st_r.r, 0, NULL) == 7); ss_iteratornext(&it); v = ss_iteratorof(&it); t( *(int*)sv_field(v, &st_r.r, 0, NULL) == 8); ss_iteratornext(&it); v = ss_iteratorof(&it); t( *(int*)sv_field(v, &st_r.r, 0, NULL) == 9); ss_iteratornext(&it); /* page 1 */ v = ss_iteratorof(&it); t( *(int*)sv_field(v, &st_r.r, 0, NULL) == 10); ss_iteratornext(&it); v = ss_iteratorof(&it); t( *(int*)sv_field(v, &st_r.r, 0, NULL) == 11); ss_iteratornext(&it); v = ss_iteratorof(&it); t( *(int*)sv_field(v, &st_r.r, 0, NULL) == 13); ss_iteratornext(&it); /* page 2 */ v = ss_iteratorof(&it); t( *(int*)sv_field(v, &st_r.r, 0, NULL) == 15); ss_iteratornext(&it); v = ss_iteratorof(&it); t( *(int*)sv_field(v, &st_r.r, 0, NULL) == 18); ss_iteratornext(&it); v = ss_iteratorof(&it); t( *(int*)sv_field(v, &st_r.r, 0, NULL) == 20); ss_iteratornext(&it); t( ss_iteratorhas(&it) == 0 ); ss_iteratorclose(&it); ss_fileclose(&f); t( ss_vfsmunmap(&st_r.vfs, &map) == 0 ); t( ss_vfsunlink(&st_r.vfs, "./0000.db") == 0 ); sd_indexfree(&index, &st_r.r); sd_buildfree(&b, &st_r.r); ss_buffree(&xfbuf, &st_r.a); ss_buffree(&buf, &st_r.a); } static void sd_read_gt0_compression_zstd(void) { ssa a; ss_aopen(&a, &ss_stda); ssa aref; ss_aopen(&aref, &ss_stda); ssvfs vfs; ss_vfsinit(&vfs, &ss_stdvfs); sfscheme cmp; sf_schemeinit(&cmp); sffield *field = sf_fieldnew(&a, "key"); t( sf_fieldoptions(field, &a, "u32,key(0)") == 0 ); t( sf_schemeadd(&cmp, &a, field) == 0 ); field = sf_fieldnew(&a, "value"); t( sf_fieldoptions(field, &a, "string") == 0 ); t( sf_schemeadd(&cmp, &a, field) == 0 ); t( sf_schemevalidate(&cmp, &a) == 0 ); ssinjection ij; memset(&ij, 0, sizeof(ij)); srstat stat; memset(&stat, 0, sizeof(stat)); srerror error; sr_errorinit(&error); srseq seq; sr_seqinit(&seq); sscrcf crc = ss_crc32c_function(); sr r; sr_init(&r, NULL, &error, &a, &aref, &vfs, NULL, NULL, &seq, SF_RAW, NULL, &cmp, &ij, &stat, crc); sdbuild b; sd_buildinit(&b); t( sd_buildbegin(&b, &r, 1, 0, 0, 1, &ss_zstdfilter) == 0); int key = 7; addv(&b, &r, 3, 0, &key); key = 8; addv(&b, &r, 4, 0, &key); key = 9; addv(&b, &r, 5, 0, &key); t( sd_buildend(&b, &r) == 0 ); sdindex index; sd_indexinit(&index); t( sd_indexbegin(&index, &r) == 0 ); int rc; rc = sd_indexadd(&index, &r, &b, sizeof(sdseal)); t( rc == 0 ); sdid id; memset(&id, 0, sizeof(id)); ssfile f; ss_fileinit(&f, &vfs); t( ss_filenew(&f, "./0000.db") == 0 ); t( sd_writeseal(&r, &f, NULL) == 0 ); t( sd_writepage(&r, &f, NULL, &b) == 0 ); t( sd_indexcommit(&index, &r, &id, NULL, f.size) == 0 ); t( sd_writeindex(&r, &f, NULL, &index) == 0 ); t( sd_seal(&r, &f, NULL, &index, 0) == 0 ); t( sd_buildcommit(&b, &r) == 0 ); ssmmap map; t( ss_vfsmmap(&st_r.vfs, &map, f.fd, f.size, 1) == 0 ); ssbuf buf; ss_bufinit(&buf); ssbuf xfbuf; ss_bufinit(&xfbuf); t( ss_bufensure(&xfbuf, &a, 1024) == 0 ); ssiter index_iter; ssiter page_iter; sdreadarg arg = { .index = &index, .buf = &buf, .buf_xf = &xfbuf, .buf_read = NULL, .index_iter = &index_iter, .page_iter = &page_iter, .mmap = &map, .memory = NULL, .file = NULL, .o = SS_GT, .use_memory = 0, .use_mmap = 1, .use_mmap_copy = 0, .use_compression = 1, .compression_if = &ss_zstdfilter, .has = 0, .has_vlsn = 0, .r = &r }; ssiter it; ss_iterinit(sd_read, &it); ss_iteropen(sd_read, &it, &arg, NULL, 0); t( ss_iteratorhas(&it) == 1 ); sv *v = ss_iteratorof(&it); t( *(int*)sv_field(v, &r, 0, NULL) == 7); ss_iteratornext(&it); v = ss_iteratorof(&it); t( *(int*)sv_field(v, &r, 0, NULL) == 8); ss_iteratornext(&it); v = ss_iteratorof(&it); t( *(int*)sv_field(v, &r, 0, NULL) == 9); ss_iteratornext(&it); t( ss_iteratorhas(&it) == 0 ); ss_iteratorclose(&it); ss_fileclose(&f); t( ss_vfsmunmap(&st_r.vfs, &map) == 0 ); t( ss_vfsunlink(&vfs, "./0000.db") == 0 ); sd_indexfree(&index, &r); sd_buildfree(&b, &r); ss_buffree(&xfbuf, &a); ss_buffree(&buf, &a); sf_schemefree(&cmp, &a); } static void sd_read_gt0_compression_lz4(void) { ssa a; ss_aopen(&a, &ss_stda); ssa aref; ss_aopen(&aref, &ss_stda); ssvfs vfs; ss_vfsinit(&vfs, &ss_stdvfs); sfscheme cmp; sf_schemeinit(&cmp); sffield *field = sf_fieldnew(&a, "key"); t( sf_fieldoptions(field, &a, "u32,key(0)") == 0 ); t( sf_schemeadd(&cmp, &a, field) == 0 ); field = sf_fieldnew(&a, "value"); t( sf_fieldoptions(field, &a, "string") == 0 ); t( sf_schemeadd(&cmp, &a, field) == 0 ); t( sf_schemevalidate(&cmp, &a) == 0 ); ssinjection ij; memset(&ij, 0, sizeof(ij)); srstat stat; memset(&stat, 0, sizeof(stat)); srerror error; sr_errorinit(&error); srseq seq; sr_seqinit(&seq); sscrcf crc = ss_crc32c_function(); sr r; sr_init(&r, NULL, &error, &a, &aref, &vfs, NULL, NULL, &seq, SF_RAW, NULL, &cmp, &ij, &stat, crc); sdbuild b; sd_buildinit(&b); t( sd_buildbegin(&b, &r, 1, 0, 0, 1, &ss_lz4filter) == 0); int key = 7; addv(&b, &r, 3, 0, &key); key = 8; addv(&b, &r, 4, 0, &key); key = 9; addv(&b, &r, 5, 0, &key); t( sd_buildend(&b, &r) == 0 ); sdindex index; sd_indexinit(&index); t( sd_indexbegin(&index, &r) == 0 ); int rc; rc = sd_indexadd(&index, &r, &b, sizeof(sdseal)); t( rc == 0 ); sdid id; memset(&id, 0, sizeof(id)); t( sd_indexcommit(&index, &r, &id, NULL, 0) == 0 ); ssfile f; ss_fileinit(&f, &vfs); t( ss_filenew(&f, "./0000.db") == 0 ); t( sd_writeseal(&r, &f, NULL) == 0 ); t( sd_writepage(&r, &f, NULL, &b) == 0 ); t( sd_indexcommit(&index, &r, &id, NULL, f.size) == 0 ); t( sd_writeindex(&r, &f, NULL, &index) == 0 ); t( sd_seal(&r, &f, NULL, &index, 0) == 0 ); ssmmap map; t( ss_vfsmmap(&st_r.vfs, &map, f.fd, f.size, 1) == 0 ); t( sd_buildcommit(&b, &r) == 0 ); ssbuf buf; ss_bufinit(&buf); ssbuf xfbuf; ss_bufinit(&xfbuf); t( ss_bufensure(&xfbuf, &a, 1024) == 0 ); ssiter index_iter; ssiter page_iter; sdreadarg arg = { .index = &index, .buf = &buf, .buf_xf = &xfbuf, .buf_read = NULL, .index_iter = &index_iter, .page_iter = &page_iter, .mmap = &map, .memory = NULL, .file = NULL, .o = SS_GT, .use_memory = 0, .use_mmap = 1, .use_mmap_copy = 0, .use_compression = 1, .compression_if = &ss_lz4filter, .has = 0, .has_vlsn = 0, .r = &r }; ssiter it; ss_iterinit(sd_read, &it); ss_iteropen(sd_read, &it, &arg, NULL, 0); t( ss_iteratorhas(&it) == 1 ); sv *v = ss_iteratorof(&it); t( *(int*)sv_field(v, &r, 0, NULL) == 7); ss_iteratornext(&it); v = ss_iteratorof(&it); t( *(int*)sv_field(v, &r, 0, NULL) == 8); ss_iteratornext(&it); v = ss_iteratorof(&it); t( *(int*)sv_field(v, &r, 0, NULL) == 9); ss_iteratornext(&it); t( ss_iteratorhas(&it) == 0 ); ss_iteratorclose(&it); ss_fileclose(&f); t( ss_vfsmunmap(&st_r.vfs, &map) == 0 ); t( ss_vfsunlink(&vfs, "./0000.db") == 0 ); sd_indexfree(&index, &r); sd_buildfree(&b, &r); ss_buffree(&xfbuf, &a); ss_buffree(&buf, &a); sf_schemefree(&cmp, &a); } static void sd_read_gt1_compression_zstd(void) { ssa a; ss_aopen(&a, &ss_stda); ssa aref; ss_aopen(&aref, &ss_stda); ssvfs vfs; ss_vfsinit(&vfs, &ss_stdvfs); sfscheme cmp; sf_schemeinit(&cmp); sffield *field = sf_fieldnew(&a, "key"); t( sf_fieldoptions(field, &a, "u32,key(0)") == 0 ); t( sf_schemeadd(&cmp, &a, field) == 0 ); field = sf_fieldnew(&a, "value"); t( sf_fieldoptions(field, &a, "string") == 0 ); t( sf_schemeadd(&cmp, &a, field) == 0 ); t( sf_schemevalidate(&cmp, &a) == 0 ); ssinjection ij; memset(&ij, 0, sizeof(ij)); srstat stat; memset(&stat, 0, sizeof(stat)); srerror error; sr_errorinit(&error); srseq seq; sr_seqinit(&seq); sscrcf crc = ss_crc32c_function(); sr r; sr_init(&r, NULL, &error, &a, &aref, &vfs, NULL, NULL, &seq, SF_RAW, NULL, &cmp, &ij, &stat, crc); ssfile f; ss_fileinit(&f, &vfs); t( ss_filenew(&f, "./0000.db") == 0 ); t( sd_writeseal(&r, &f, NULL) == 0 ); sdbuild b; sd_buildinit(&b); t( sd_buildbegin(&b, &r, 1, 0, 0, 1, &ss_zstdfilter) == 0); int key = 7; addv(&b, &r, 3, 0, &key); key = 8; addv(&b, &r, 4, 0, &key); key = 9; addv(&b, &r, 5, 0, &key); sd_buildend(&b, &r); uint64_t poff = f.size; t( sd_writepage(&r, &f, NULL, &b) == 0 ); sdindex index; sd_indexinit(&index); t( sd_indexbegin(&index, &r) == 0 ); int rc; rc = sd_indexadd(&index, &r, &b, poff); t( rc == 0 ); t( sd_buildcommit(&b, &r) == 0 ); sd_buildreset(&b, &r); t( sd_buildbegin(&b, &r, 1, 0, 0, 1, &ss_zstdfilter) == 0); key = 10; addv(&b, &r, 6, 0, &key); key = 11; addv(&b, &r, 7, 0, &key); key = 13; addv(&b, &r, 8, 0, &key); sd_buildend(&b, &r); poff = f.size; t( sd_writepage(&r, &f, NULL, &b) == 0 ); rc = sd_indexadd(&index, &r, &b, poff); t( rc == 0 ); t( sd_buildcommit(&b, &r) == 0 ); sd_buildreset(&b, &r); t( sd_buildbegin(&b, &r, 1, 0, 0, 1, &ss_zstdfilter) == 0); key = 15; addv(&b, &r, 9, 0, &key); key = 18; addv(&b, &r, 10, 0, &key); key = 20; addv(&b, &r, 11, 0, &key); sd_buildend(&b, &r); poff = f.size; t( sd_writepage(&r, &f, NULL, &b) == 0 ); rc = sd_indexadd(&index, &r, &b, poff); t( rc == 0 ); t( sd_buildcommit(&b, &r) == 0 ); sdid id; memset(&id, 0, sizeof(id)); t( sd_indexcommit(&index, &r, &id, NULL, f.size) == 0 ); t( sd_writeindex(&r, &f, NULL, &index) == 0 ); t( sd_seal(&r, &f, NULL, &index, 0) == 0 ); ssmmap map; t( ss_vfsmmap(&st_r.vfs, &map, f.fd, f.size, 1) == 0 ); ssbuf buf; ss_bufinit(&buf); ssbuf xfbuf; ss_bufinit(&xfbuf); t( ss_bufensure(&xfbuf, &a, 1024) == 0 ); ssiter index_iter; ssiter page_iter; sdreadarg arg = { .index = &index, .buf = &buf, .buf_xf = &xfbuf, .buf_read = NULL, .index_iter = &index_iter, .page_iter = &page_iter, .mmap = &map, .memory = NULL, .file = NULL, .o = SS_GT, .use_memory = 0, .use_mmap = 1, .use_mmap_copy = 0, .use_compression = 1, .compression_if = &ss_zstdfilter, .has = 0, .has_vlsn = 0, .r = &r }; ssiter it; ss_iterinit(sd_read, &it); ss_iteropen(sd_read, &it, &arg, NULL, 0); t( ss_iteratorhas(&it) == 1 ); /* page 0 */ t( ss_iteratorhas(&it) != 0 ); sv *v = ss_iteratorof(&it); t( *(int*)sv_field(v, &r, 0, NULL) == 7); ss_iteratornext(&it); v = ss_iteratorof(&it); t( *(int*)sv_field(v, &r, 0, NULL) == 8); ss_iteratornext(&it); v = ss_iteratorof(&it); t( *(int*)sv_field(v, &r, 0, NULL) == 9); ss_iteratornext(&it); /* page 1 */ v = ss_iteratorof(&it); t( *(int*)sv_field(v, &r, 0, NULL) == 10); ss_iteratornext(&it); v = ss_iteratorof(&it); t( *(int*)sv_field(v, &r, 0, NULL) == 11); ss_iteratornext(&it); v = ss_iteratorof(&it); t( *(int*)sv_field(v, &r, 0, NULL) == 13); ss_iteratornext(&it); /* page 2 */ v = ss_iteratorof(&it); t( *(int*)sv_field(v, &r, 0, NULL) == 15); ss_iteratornext(&it); v = ss_iteratorof(&it); t( *(int*)sv_field(v, &r, 0, NULL) == 18); ss_iteratornext(&it); v = ss_iteratorof(&it); t( *(int*)sv_field(v, &r, 0, NULL) == 20); ss_iteratornext(&it); t( ss_iteratorhas(&it) == 0 ); ss_iteratorclose(&it); ss_fileclose(&f); t( ss_vfsmunmap(&st_r.vfs, &map) == 0 ); t( ss_vfsunlink(&vfs, "./0000.db") == 0 ); sd_indexfree(&index, &r); sd_buildfree(&b, &r); ss_buffree(&buf, &a); ss_buffree(&xfbuf, &a); sf_schemefree(&cmp, &a); } static void sd_read_gt1_compression_lz4(void) { ssa a; ss_aopen(&a, &ss_stda); ssa aref; ss_aopen(&aref, &ss_stda); ssvfs vfs; ss_vfsinit(&vfs, &ss_stdvfs); sfscheme cmp; sf_schemeinit(&cmp); sffield *field = sf_fieldnew(&a, "key"); t( sf_fieldoptions(field, &a, "u32,key(0)") == 0 ); t( sf_schemeadd(&cmp, &a, field) == 0 ); field = sf_fieldnew(&a, "value"); t( sf_fieldoptions(field, &a, "string") == 0 ); t( sf_schemeadd(&cmp, &a, field) == 0 ); t( sf_schemevalidate(&cmp, &a) == 0 ); ssinjection ij; memset(&ij, 0, sizeof(ij)); srstat stat; memset(&stat, 0, sizeof(stat)); srerror error; sr_errorinit(&error); srseq seq; sr_seqinit(&seq); sscrcf crc = ss_crc32c_function(); sr r; sr_init(&r, NULL, &error, &a, &aref, &vfs, NULL, NULL, &seq, SF_RAW, NULL, &cmp, &ij, &stat, crc); ssfile f; ss_fileinit(&f, &vfs); t( ss_filenew(&f, "./0000.db") == 0 ); t( sd_writeseal(&r, &f, NULL) == 0 ); sdbuild b; sd_buildinit(&b); t( sd_buildbegin(&b, &r, 1, 0, 0, 1, &ss_lz4filter) == 0); int key = 7; addv(&b, &r, 3, 0, &key); key = 8; addv(&b, &r, 4, 0, &key); key = 9; addv(&b, &r, 5, 0, &key); sd_buildend(&b, &r); uint64_t poff = f.size; t( sd_writepage(&r, &f, NULL, &b) == 0 ); sdindex index; sd_indexinit(&index); t( sd_indexbegin(&index, &r) == 0 ); int rc; rc = sd_indexadd(&index, &r, &b, poff); t( rc == 0 ); t( sd_buildcommit(&b, &r) == 0 ); sd_buildreset(&b, &r); t( sd_buildbegin(&b, &r, 1, 0, 0, 1, &ss_lz4filter) == 0); key = 10; addv(&b, &r, 6, 0, &key); key = 11; addv(&b, &r, 7, 0, &key); key = 13; addv(&b, &r, 8, 0, &key); sd_buildend(&b, &r); poff = f.size; t( sd_writepage(&r, &f, NULL, &b) == 0 ); rc = sd_indexadd(&index, &r, &b, poff); t( rc == 0 ); t( sd_buildcommit(&b, &r) == 0 ); sd_buildreset(&b, &r); t( sd_buildbegin(&b, &r, 1, 0, 0, 1, &ss_lz4filter) == 0); key = 15; addv(&b, &r, 9, 0, &key); key = 18; addv(&b, &r, 10, 0, &key); key = 20; addv(&b, &r, 11, 0, &key); sd_buildend(&b, &r); poff = f.size; t( sd_writepage(&r, &f, NULL, &b) == 0 ); rc = sd_indexadd(&index, &r, &b, poff); t( rc == 0 ); t( sd_buildcommit(&b, &r) == 0 ); sdid id; memset(&id, 0, sizeof(id)); t( sd_indexcommit(&index, &r, &id, NULL, f.size) == 0 ); t( sd_writeindex(&r, &f, NULL, &index) == 0 ); t( sd_seal(&r, &f, NULL, &index, 0) == 0 ); ssmmap map; t( ss_vfsmmap(&st_r.vfs, &map, f.fd, f.size, 1) == 0 ); ssbuf buf; ss_bufinit(&buf); ssbuf xfbuf; ss_bufinit(&xfbuf); t( ss_bufensure(&xfbuf, &a, 1024) == 0 ); ssiter index_iter; ssiter page_iter; sdreadarg arg = { .index = &index, .buf = &buf, .buf_xf = &xfbuf, .buf_read = NULL, .index_iter = &index_iter, .page_iter = &page_iter, .mmap = &map, .memory = NULL, .file = NULL, .o = SS_GT, .use_memory = 0, .use_mmap = 1, .use_mmap_copy = 0, .use_compression = 1, .compression_if = &ss_lz4filter, .has = 0, .has_vlsn = 0, .r = &r }; ssiter it; ss_iterinit(sd_read, &it); ss_iteropen(sd_read, &it, &arg, NULL, 0); t( ss_iteratorhas(&it) == 1 ); /* page 0 */ t( ss_iteratorhas(&it) != 0 ); sv *v = ss_iteratorof(&it); t( *(int*)sv_field(v, &r, 0, NULL) == 7); ss_iteratornext(&it); v = ss_iteratorof(&it); t( *(int*)sv_field(v, &r, 0, NULL) == 8); ss_iteratornext(&it); v = ss_iteratorof(&it); t( *(int*)sv_field(v, &r, 0, NULL) == 9); ss_iteratornext(&it); /* page 1 */ v = ss_iteratorof(&it); t( *(int*)sv_field(v, &r, 0, NULL) == 10); ss_iteratornext(&it); v = ss_iteratorof(&it); t( *(int*)sv_field(v, &r, 0, NULL) == 11); ss_iteratornext(&it); v = ss_iteratorof(&it); t( *(int*)sv_field(v, &r, 0, NULL) == 13); ss_iteratornext(&it); /* page 2 */ v = ss_iteratorof(&it); t( *(int*)sv_field(v, &r, 0, NULL) == 15); ss_iteratornext(&it); v = ss_iteratorof(&it); t( *(int*)sv_field(v, &r, 0, NULL) == 18); ss_iteratornext(&it); v = ss_iteratorof(&it); t( *(int*)sv_field(v, &r, 0, NULL) == 20); ss_iteratornext(&it); t( ss_iteratorhas(&it) == 0 ); ss_iteratorclose(&it); ss_fileclose(&f); t( ss_vfsmunmap(&st_r.vfs, &map) == 0 ); t( ss_vfsunlink(&vfs, "./0000.db") == 0 ); sd_indexfree(&index, &r); sd_buildfree(&b, &r); ss_buffree(&buf, &a); ss_buffree(&xfbuf, &a); sf_schemefree(&cmp, &a); } stgroup *sd_read_group(void) { stgroup *group = st_group("sdread"); st_groupadd(group, st_test("gt0", sd_read_gt0)); st_groupadd(group, st_test("gt1", sd_read_gt1)); st_groupadd(group, st_test("gt0_compression_zstd", sd_read_gt0_compression_zstd)); st_groupadd(group, st_test("gt0_compression_lz4", sd_read_gt0_compression_lz4)); st_groupadd(group, st_test("gt1_compression_zstd", sd_read_gt1_compression_zstd)); st_groupadd(group, st_test("gt1_compression_lz4", sd_read_gt1_compression_lz4)); return group; }
void control(int b) { struct vector u; // Left button if (! map_mode) switch (selected_weapon) { case 0: if ((enable_mouse && button_read(SDL_BUTTON_LEFT)) || kread(gkeys[kc_fire].kc)) bot[b].but.canon=1; break; case 1: if ((enable_mouse && button_reset(SDL_BUTTON_LEFT)) || kreset(gkeys[kc_fire].kc)) bot[b].but.bomb=1; break; } else if ((enable_mouse && button_read(SDL_BUTTON_LEFT)) || kread(gkeys[kc_fire].kc)) { bot[b].u.x = ((xmouse-win_center_x)*(MAP_LEN/2)*TILE_LEN)/zoom+map_x*TILE_LEN; bot[b].u.y = ((win_center_y-ymouse)*(MAP_LEN/2)*TILE_LEN)/zoom+map_y*TILE_LEN; bot[b].u.z = z_ground(bot[b].u.x, bot[b].u.y, true); } // Right button if ((enable_mouse && button_reset(SDL_BUTTON_RIGHT)) || kreset(gkeys[kc_weapon].kc)) { if (abs(xmouse) < 2 && abs(ymouse) < 2) { if (! prompt_quit) prompt_quit = true; else quit_game = true; } selected_weapon ^= 1; } // Esc if (prompt_quit) { if (kreset(gkeys[kc_yes].kc)) quit_game = true; if (kreset(gkeys[kc_no].kc)) prompt_quit = false; } else if (kreset(gkeys[kc_esc].kc) && (bot[controlled_bot].camp!=-1 || !enable_resurrection || !resurrect())) { prompt_quit = true; } // Engine # define INCR .02 if (kread(gkeys[kc_motormore].kc) && bot[b].thrust <= 1.-INCR) bot[b].thrust += INCR; if (kread(gkeys[kc_motorless].kc) && bot[b].thrust >= INCR) bot[b].thrust -= INCR; # undef INCR // Views if (kreset(gkeys[kc_externview].kc)) { map_mode = false; view = next_external_view(view); snd_thrust=-1; } if (kreset(gkeys[kc_internview].kc)) { map_mode = false; if (view == VIEW_IN_PLANE) { view = VIEW_DOGFIGHT; } else { view = VIEW_IN_PLANE; snd_thrust=-1; } } if (kreset(gkeys[kc_travelview].kc)) { float zs; map_mode = false; view = VIEW_STANDING; copyv(&obj[0].pos,&obj[bot[viewed_bot].vion].rot.x); mulv(&obj[0].pos,300+drand48()*600+extcam_dist); copyv(&u,&obj[bot[viewed_bot].vion].rot.y); mulv(&u,(drand48()-.5)*600); addv(&obj[0].pos,&u); copyv(&u,&obj[bot[viewed_bot].vion].rot.z); mulv(&u,(drand48()-.5)*600); addv(&obj[0].pos,&u); addv(&obj[0].pos,&obj[bot[viewed_bot].vion].pos); if (obj[0].pos.z<(zs=z_ground(obj[0].pos.x,obj[0].pos.y, false)+100)) obj[0].pos.z=zs; snd_thrust=-1; } if (kreset(gkeys[kc_nextbot].kc)) { if (view == VIEW_ANYTHING_CHEAT) { if (++viewed_obj >= nb_obj) viewed_obj = 0; } else if (view == VIEW_DOGFIGHT) { next_dog_bot(); } else { do { if (++viewed_bot>=NBBOT) viewed_bot=0; } while (!enable_view_enemy && bot[viewed_bot].camp!=camp); // pas controlled_bot.camp car peut etre tue snd_thrust=-1; if (bot[viewed_bot].camp==-1) playsound(VOICE_MOTOR, SAMPLE_FEU, 1., &voices_in_my_head, true, true); } } if (kreset(gkeys[kc_prevbot].kc)) { if (view == VIEW_ANYTHING_CHEAT) { if (--viewed_obj<0) viewed_obj = nb_obj-1; } else if (view == VIEW_DOGFIGHT) { prev_dog_bot(); } else { do { if (--viewed_bot<0) viewed_bot=NBBOT-1; } while (!enable_view_enemy && bot[viewed_bot].camp!=camp); snd_thrust=-1; if (bot[viewed_bot].camp==-1) playsound(VOICE_MOTOR, SAMPLE_FEU, 1., &voices_in_my_head, true, true); } } if (kreset(gkeys[kc_mybot].kc)) { if (view != VIEW_DOGFIGHT) { viewed_bot = b; snd_thrust = -1; } else { float d; int DBi, DBm; next_dog_bot(); d=DogBotDist; DBi=DogBot; DBm=DogBot; do { next_dog_bot(); if (DogBotDist<d && bot[DogBot].camp!=bot[controlled_bot].camp) { d=DogBotDist; DBm=DogBot; } } while (DogBot!=DBi); DogBot=DBm; DogBotDist=d; } } if (!accelerated_mode || frame_count > 64) { if (kread(gkeys[kc_zoomout].kc)) { if (! map_mode) extcam_dist += 10.; else zoom += win_center_x/6; } if (kread(gkeys[kc_zoomin].kc)) { if (! map_mode && extcam_dist > 10.) extcam_dist -= 10.; else if ((zoom -= win_center_x/6) < win_center_x) zoom = win_center_x; } if (kread(gkeys[kc_riseview].kc)) { if (! map_mode) { if ((sight_teta -= .2) < -M_PI) sight_teta += 2*M_PI; } else if ((map_y += 1 + (3*win_width)/zoom) > MAP_LEN/2) { map_y = MAP_LEN/2; } } if (kread(gkeys[kc_lowerview].kc)) { if (! map_mode) { if ((sight_teta += .2) > M_PI) sight_teta -= 2*M_PI; } else if ((map_y -= 1 + (3*win_width)/zoom) < -MAP_LEN/2) { map_y = -MAP_LEN/2; } } if (kread(gkeys[kc_rightenview].kc)) { if (! map_mode) { if ((sight_phi -= .2) < -M_PI) sight_phi += 2*M_PI; } else if ((map_x += 1 + (3*win_width)/zoom) > MAP_LEN/2) { map_x = MAP_LEN/2; } } if (kread(gkeys[kc_leftenview].kc)) { if (! map_mode) { if ((sight_phi += .2) > M_PI) sight_phi -= 2*M_PI; } else if ((map_x -= 1 + (3*win_width)/zoom) < -MAP_LEN/2) { map_x = -MAP_LEN/2; } } } if (view != VIEW_DOGFIGHT) { if (kreset(gkeys[kc_towardview].kc)) { sight_teta = sight_phi = 0; } if (kreset(gkeys[kc_backview].kc)) { sight_teta = 0; sight_phi = M_PI; } if (kreset(gkeys[kc_leftview].kc)) { sight_teta = 0; sight_phi = M_PI*.5; } if (kreset(gkeys[kc_rightview].kc)) { sight_teta = 0; sight_phi = -M_PI*.5; } if (kreset(gkeys[kc_upview].kc)) { sight_teta = -M_PI/2; sight_phi = 0; } } else { view_predef = false; if (kread(gkeys[kc_towardview].kc)) { view_predef = true; sight_teta = sight_phi = 0; } if (kread(gkeys[kc_backview].kc)) { view_predef = true; sight_teta = 0; sight_phi = M_PI; } if (kread(gkeys[kc_leftview].kc)) { view_predef = true; sight_teta = 0; sight_phi = M_PI*.5; } if (kread(gkeys[kc_rightview].kc)) { view_predef = true; sight_teta = 0; sight_phi = -M_PI*.5; } if (kread(gkeys[kc_upview].kc)) { view_predef = true; sight_teta = -M_PI/2; sight_phi = 0; } if (! view_predef) sight_teta = sight_phi = 0; } view_instruments = kread(gkeys[kc_movetowardview].kc); // Commands if (kreset(gkeys[kc_gear].kc)) bot[b].but.gear^=1; if (kreset(gkeys[kc_flaps].kc)) { bot[b].but.flap^=1; playsound(VOICE_GEAR, SAMPLE_BIPBIP, 1., &obj[bot[b].vion].pos, false, false); } bot[b].but.brakes=kread(gkeys[kc_brakes].kc); if (kreset(gkeys[kc_business].kc)) bot[b].but.business = 1; if (kreset(gkeys[kc_autopilot].kc)) { autopilot = ! autopilot; playsound(VOICE_GEAR, SAMPLE_BIPBIP, 1., &obj[bot[b].vion].pos, false, false); if (autopilot) { bot[controlled_bot].target_speed = BEST_SPEED_FOR_CONTROL; bot[controlled_bot].target_rel_alt = 100. * ONE_METER; } } // Game control if (kreset(gkeys[kc_pause].kc)) { gtime_toggle(); game_paused = ! game_paused; } draw_high_scores = kread(gkeys[kc_highscores].kc); if (kreset(gkeys[kc_accelmode].kc)) { accelerated_mode = ! accelerated_mode; frame_count&=63; } if (kreset(gkeys[kc_basenav].kc)) { bot[b].u = obj[bot[b].babase].pos; } if (kreset(gkeys[kc_mapmode].kc)) { map_mode = ! map_mode; playsound(VOICE_GEAR, SAMPLE_BIPBIP3, 1., &voices_in_my_head, true, false); } if (kreset(gkeys[kc_suicide].kc) && bot[controlled_bot].camp!=-1) explode(bot[viewed_bot].vion, 0, "commited suicide"); if (kreset(gkeys[kc_markpos].kc)) bot[b].but.mark=1; // Cheats if (cheat_mode && kread(gkeys[kc_alti].kc)) { obj[bot[viewed_bot].vion].pos.z += 500; bot[viewed_bot].vionvit.z = 0; } if (cheat_mode && kreset(gkeys[kc_gunned].kc)) bot[viewed_bot].gunned=controlled_bot; if (!autopilot && !map_mode) { if (enable_mouse) { bot[b].xctl = ((xmouse-win_center_x)/(double)win_center_x); bot[b].yctl = ((ymouse-win_center_y)/(double)win_center_y); } else { int i=0; i=kread(gkeys[kc_left].kc); i+=kread(gkeys[kc_right].kc)<<1; i+=kread(gkeys[kc_down].kc)<<2; i+=kread(gkeys[kc_up].kc)<<3; if (i) { CtlSensActu += CtlSensitiv; if (i&1) bot[b].xctl-=CtlSensActu; if (i&2) bot[b].xctl+=CtlSensActu; if (i&4) bot[b].yctl-=CtlSensActu; if (i&8) bot[b].yctl+=CtlSensActu; } else CtlSensActu=0; if (bot[b].xctl<-1 || bot[b].xctl>1 || bot[b].yctl<-1 || bot[b].yctl>1) CtlSensActu=0; if (!(i&3)) bot[b].xctl*=CtlAmortis; if (!(i&12)) bot[b].yctl=CtlYequ+(bot[b].yctl-CtlYequ)*CtlAmortis; if (kread(gkeys[kc_center].kc)) { bot[b].xctl=0; bot[b].yctl=CtlYequ; if (kread(gkeys[kc_down].kc) && CtlYequ>-1) CtlYequ-=.02; if (kread(gkeys[kc_up].kc) && CtlYequ<1) CtlYequ+=.02; } } } else { // autopilot or map_mode if (autopilot) { robot_autopilot(b); } else { robot_safe(b, SAFE_LOW_ALT); } } CLAMP(bot[b].xctl, 1.); CLAMP(bot[b].yctl, 1.); }
int main() { int v=8,j; int name='r'; GHEAD* graph1[10]; for(j=0; j<v; j++) graph1[j]=createGraphList(name++); addv(graph1[0],'s'); addv(graph1[0],'v'); addv(graph1[1],'w'); addv(graph1[2],'u'); addv(graph1[2],'x'); addv(graph1[2],'w'); addv(graph1[3],'t'); addv(graph1[3],'x'); addv(graph1[3],'y'); addv(graph1[4],'r'); addv(graph1[5],'s'); addv(graph1[5],'t'); addv(graph1[5],'x'); addv(graph1[6],'w'); addv(graph1[6],'t'); addv(graph1[6],'u'); addv(graph1[6],'y'); addv(graph1[7],'x'); addv(graph1[7],'u'); printGraph(graph1,v); return 0; }