int main() { const my_facet f(1); { std::ios ios(0); long v = 0; char str[50]; std::ios_base::iostate err = ios.goodbit; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "0"); } { std::ios ios(0); long v = 1; char str[50]; std::ios_base::iostate err = ios.goodbit; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "1"); } { std::ios ios(0); long v = -1; char str[50]; std::ios_base::iostate err = ios.goodbit; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "-1"); } { std::ios ios(0); long v = -1000; char str[50]; std::ios_base::iostate err = ios.goodbit; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "-1000"); } { std::ios ios(0); long v = 1000; char str[50]; std::ios_base::iostate err = ios.goodbit; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "1000"); } { std::ios ios(0); showpos(ios); long v = 1000; char str[50]; std::ios_base::iostate err = ios.goodbit; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "+1000"); } { std::ios ios(0); oct(ios); long v = 1000; char str[50]; std::ios_base::iostate err = ios.goodbit; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "1750"); } { std::ios ios(0); oct(ios); showbase(ios); long v = 1000; char str[50]; std::ios_base::iostate err = ios.goodbit; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "01750"); } { std::ios ios(0); hex(ios); long v = 1000; char str[50]; std::ios_base::iostate err = ios.goodbit; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "3e8"); } { std::ios ios(0); hex(ios); showbase(ios); long v = 1000; char str[50]; std::ios_base::iostate err = ios.goodbit; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "0x3e8"); } { std::ios ios(0); hex(ios); showbase(ios); uppercase(ios); long v = 1000; char str[50]; std::ios_base::iostate err = ios.goodbit; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "0X3E8"); } { std::ios ios(0); ios.imbue(std::locale(std::locale::classic(), new my_numpunct)); hex(ios); showbase(ios); uppercase(ios); long v = 1000; char str[50]; std::ios_base::iostate err = ios.goodbit; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "0X3E_8"); } { std::ios ios(0); ios.imbue(std::locale(std::locale::classic(), new my_numpunct)); hex(ios); showbase(ios); long v = 2147483647; char str[50]; std::ios_base::iostate err = ios.goodbit; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "0x7f_fff_ff_f"); } { std::ios ios(0); ios.imbue(std::locale(std::locale::classic(), new my_numpunct)); oct(ios); long v = 0123467; char str[50]; std::ios_base::iostate err = ios.goodbit; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "123_46_7"); } { std::ios ios(0); ios.imbue(std::locale(std::locale::classic(), new my_numpunct)); oct(ios); showbase(ios); long v = 0123467; char str[50]; std::ios_base::iostate err = ios.goodbit; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "0_123_46_7"); } { std::ios ios(0); ios.imbue(std::locale(std::locale::classic(), new my_numpunct)); oct(ios); showbase(ios); right(ios); ios.width(15); long v = 0123467; char str[50]; std::ios_base::iostate err = ios.goodbit; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "*****0_123_46_7"); } { std::ios ios(0); ios.imbue(std::locale(std::locale::classic(), new my_numpunct)); oct(ios); showbase(ios); left(ios); ios.width(15); long v = 0123467; char str[50]; std::ios_base::iostate err = ios.goodbit; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "0_123_46_7*****"); } { std::ios ios(0); ios.imbue(std::locale(std::locale::classic(), new my_numpunct)); oct(ios); showbase(ios); internal(ios); ios.width(15); long v = 0123467; char str[50]; std::ios_base::iostate err = ios.goodbit; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "*****0_123_46_7"); assert(ios.width() == 0); } { std::ios ios(0); ios.imbue(std::locale(std::locale::classic(), new my_numpunct)); hex(ios); showbase(ios); right(ios); ios.width(15); long v = 2147483647; char str[50]; std::ios_base::iostate err = ios.goodbit; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "**0x7f_fff_ff_f"); } { std::ios ios(0); ios.imbue(std::locale(std::locale::classic(), new my_numpunct)); hex(ios); showbase(ios); left(ios); ios.width(15); long v = 2147483647; char str[50]; std::ios_base::iostate err = ios.goodbit; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "0x7f_fff_ff_f**"); } { std::ios ios(0); ios.imbue(std::locale(std::locale::classic(), new my_numpunct)); hex(ios); showbase(ios); internal(ios); ios.width(15); long v = 2147483647; char str[50]; std::ios_base::iostate err = ios.goodbit; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "0x**7f_fff_ff_f"); assert(ios.width() == 0); } { std::ios ios(0); ios.imbue(std::locale(std::locale::classic(), new my_numpunct)); showpos(ios); long v = 1000; right(ios); ios.width(10); char str[50]; std::ios_base::iostate err = ios.goodbit; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "***+1_00_0"); assert(ios.width() == 0); } { std::ios ios(0); ios.imbue(std::locale(std::locale::classic(), new my_numpunct)); showpos(ios); long v = 1000; left(ios); ios.width(10); char str[50]; std::ios_base::iostate err = ios.goodbit; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "+1_00_0***"); assert(ios.width() == 0); } { std::ios ios(0); ios.imbue(std::locale(std::locale::classic(), new my_numpunct)); showpos(ios); long v = 1000; internal(ios); ios.width(10); char str[50]; std::ios_base::iostate err = ios.goodbit; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "+***1_00_0"); assert(ios.width() == 0); } { std::ios ios(0); ios.imbue(std::locale(std::locale::classic(), new my_numpunct)); long v = -1000; right(ios); showpos(ios); ios.width(10); char str[50]; std::ios_base::iostate err = ios.goodbit; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "***-1_00_0"); assert(ios.width() == 0); } { std::ios ios(0); ios.imbue(std::locale(std::locale::classic(), new my_numpunct)); long v = -1000; left(ios); ios.width(10); char str[50]; std::ios_base::iostate err = ios.goodbit; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "-1_00_0***"); assert(ios.width() == 0); } { std::ios ios(0); ios.imbue(std::locale(std::locale::classic(), new my_numpunct)); long v = -1000; internal(ios); ios.width(10); char str[50]; std::ios_base::iostate err = ios.goodbit; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "-***1_00_0"); assert(ios.width() == 0); } }
int main(int a, char **v) { p("Hi"); if (s3d_init(&a,&v,"test")) { printf("opsie\n"); s3d_usage(); } else { FILE * f = fopen("lastpos", "r"); if (f) { fread(&pos, 1, 4, f); fclose(f); } float mw=0.1; sw=s/2.0; px=-13*sw; py=13*s; #ifdef hfgm if (s3d_select_font("Courier new")) { printf("font not found\n"); } else { if ((txt=malloc(128*4))) { int i; float w; char buf[2]; buf[1]=0; for (i=0; (i<128); i++) { buf[0]=i; txt[i]=s3d_draw_string(buf,&w); if (txt[i]) { if (w>mw)mw=w; s3d_scale(txt[i], 5); } } px=-mw*5/2; for (i=0; (i<128); i++) s3d_translate(txt[i],px,py-4,0.00001); } } #endif sw=mw/26*5;//s/2.0; float red[12]= {1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1 }; float black[12]= {0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1 }; float teal[12]= {0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1 }; float orange[12]= {1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1 }; oo=s3d_new_object(); s3d_translate(oo, px,py,0); s3d_push_materials_a(oo,red, 1); s3d_push_materials_a(oo,teal,1); s3d_push_materials_a(oo,orange,1); s3d_flags_on(oo, S3D_OF_VISIBLE); aoo=s3d_new_object(); s3d_translate(aoo, px, py,0); s3d_push_materials_a(aoo,red, 1); s3d_flags_on(aoo, S3D_OF_VISIBLE); showpos(); loadl2("l2"); if (!l2)return 1; disp(); int b,c; for (b=0; b<26; b++) { black[0]=black[4]=black[8]=b/(float)26; for (c=0; c<26; c++) { black[1]=black[5]=black[9]=(float)c/26; int ob=s3d_new_object(); o[b][c]=ob; s3d_translate(ob, px+sw*b, py-s*c,0); s3d_push_materials_a(ob,black, 1); float vs2[12]={0,0,0,sw,0,0,sw,s,0,0,s,0}; s3d_push_vertices(ob, vs2, 4); if (0) { s3d_push_materials_a(ob,red, 1); float vs[12]={0,0,griddist,sw,0,griddist,sw,s,griddist,0,s,griddist}; s3d_push_vertices(ob, vs, 4); int ls[12]={0,1,1,1,2,1,2,3,1,3,0,1}; s3d_push_lines(ob,ls,4); int ps[8]={4,6,5,0,4,7,6,0}; s3d_push_polygons(ob, ps, 2); } else { int ps[8]={0,2,1,0,0,3,2,0}; s3d_push_polygons(ob, ps, 2); } s3d_flags_on(o[b][c], S3D_OF_VISIBLE|S3D_OF_SELECTABLE); } } space=s3d_new_object(); s3d_translate(space, px, py-s*27,0); s3d_push_materials_a(space,black, 1); float svs2[12]={0,0,0,sw*26,0,0,sw*26,s,0,0,s,0}; s3d_push_vertices(space, svs2, 4); int sps[8]={0,2,1,0,0,3,2,0}; s3d_push_polygons(space, sps, 2); s3d_flags_on(space, S3D_OF_VISIBLE|S3D_OF_SELECTABLE); s3d_set_callback(S3D_EVENT_OBJ_CLICK, click); s3d_set_callback(S3D_EVENT_QUIT, stop_quit); s3d_set_callback(S3D_EVENT_KEY, keypress); s3d_mainloop(mainloop); } }
int main() { const my_facet f(1); { std::ios ios(0); unsigned long long v = 0; char str[50]; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "0"); } { std::ios ios(0); unsigned long long v = 1; char str[50]; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "1"); } { std::ios ios(0); unsigned long long v = -1; char str[50]; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == (sizeof(unsigned long long) == 4 ? "4294967295" : "18446744073709551615")); } { std::ios ios(0); unsigned long long v = -1000; char str[50]; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "18446744073709550616"); } { std::ios ios(0); unsigned long long v = 1000; char str[50]; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "1000"); } { std::ios ios(0); showpos(ios); unsigned long long v = 1000; char str[50]; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "1000"); } { std::ios ios(0); oct(ios); unsigned long long v = 1000; char str[50]; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "1750"); } { std::ios ios(0); oct(ios); showbase(ios); unsigned long long v = 1000; char str[50]; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "01750"); } { std::ios ios(0); hex(ios); unsigned long long v = 1000; char str[50]; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "3e8"); } { std::ios ios(0); hex(ios); showbase(ios); unsigned long long v = 1000; char str[50]; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "0x3e8"); } { std::ios ios(0); hex(ios); showbase(ios); uppercase(ios); unsigned long long v = 1000; char str[50]; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "0X3E8"); } { std::ios ios(0); ios.imbue(std::locale(std::locale::classic(), new my_numpunct)); hex(ios); showbase(ios); uppercase(ios); unsigned long long v = 1000; char str[50]; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "0X3E_8"); } { std::ios ios(0); ios.imbue(std::locale(std::locale::classic(), new my_numpunct)); hex(ios); showbase(ios); unsigned long long v = 2147483647; char str[50]; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "0x7f_fff_ff_f"); } { std::ios ios(0); ios.imbue(std::locale(std::locale::classic(), new my_numpunct)); oct(ios); unsigned long long v = 0123467; char str[50]; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "123_46_7"); } { std::ios ios(0); ios.imbue(std::locale(std::locale::classic(), new my_numpunct)); oct(ios); showbase(ios); unsigned long long v = 0123467; char str[50]; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "0_123_46_7"); } { std::ios ios(0); ios.imbue(std::locale(std::locale::classic(), new my_numpunct)); oct(ios); showbase(ios); right(ios); ios.width(15); unsigned long long v = 0123467; char str[50]; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "*****0_123_46_7"); } { std::ios ios(0); ios.imbue(std::locale(std::locale::classic(), new my_numpunct)); oct(ios); showbase(ios); left(ios); ios.width(15); unsigned long long v = 0123467; char str[50]; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "0_123_46_7*****"); } { std::ios ios(0); ios.imbue(std::locale(std::locale::classic(), new my_numpunct)); oct(ios); showbase(ios); internal(ios); ios.width(15); unsigned long long v = 0123467; char str[50]; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "*****0_123_46_7"); assert(ios.width() == 0); } { std::ios ios(0); ios.imbue(std::locale(std::locale::classic(), new my_numpunct)); hex(ios); showbase(ios); right(ios); ios.width(15); unsigned long long v = 2147483647; char str[50]; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "**0x7f_fff_ff_f"); } { std::ios ios(0); ios.imbue(std::locale(std::locale::classic(), new my_numpunct)); hex(ios); showbase(ios); left(ios); ios.width(15); unsigned long long v = 2147483647; char str[50]; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "0x7f_fff_ff_f**"); } { std::ios ios(0); ios.imbue(std::locale(std::locale::classic(), new my_numpunct)); hex(ios); showbase(ios); internal(ios); ios.width(15); unsigned long long v = 2147483647; char str[50]; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "0x**7f_fff_ff_f"); assert(ios.width() == 0); } { std::ios ios(0); ios.imbue(std::locale(std::locale::classic(), new my_numpunct)); showpos(ios); unsigned long long v = 1000; right(ios); ios.width(10); char str[50]; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "****1_00_0"); assert(ios.width() == 0); } { std::ios ios(0); ios.imbue(std::locale(std::locale::classic(), new my_numpunct)); showpos(ios); unsigned long long v = 1000; left(ios); ios.width(10); char str[50]; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "1_00_0****"); assert(ios.width() == 0); } { std::ios ios(0); ios.imbue(std::locale(std::locale::classic(), new my_numpunct)); showpos(ios); unsigned long long v = 1000; internal(ios); ios.width(10); char str[50]; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "****1_00_0"); assert(ios.width() == 0); } { std::ios ios(0); ios.imbue(std::locale(std::locale::classic(), new my_numpunct)); unsigned long long v = -1000; right(ios); showpos(ios); ios.width(10); char str[50]; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "18_446_744_073_709_550_61_6"); assert(ios.width() == 0); } { std::ios ios(0); ios.imbue(std::locale(std::locale::classic(), new my_numpunct)); unsigned long long v = -1000; left(ios); ios.width(10); char str[50]; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "18_446_744_073_709_550_61_6"); assert(ios.width() == 0); } { std::ios ios(0); ios.imbue(std::locale(std::locale::classic(), new my_numpunct)); unsigned long long v = -1000; internal(ios); ios.width(10); char str[50]; output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v); std::string ex(str, iter.base()); assert(ex == "18_446_744_073_709_550_61_6"); assert(ios.width() == 0); } }
void disp(void) { if (pos<0)pos=l2numitems-1; if (pos==l2numitems)pos=0; if (aim<-1)aim=0; showaim(); showpos(); if (popl) { s3d_pop_line(oo, popl); printf("pop line\n"); } if (popv) { s3d_pop_vertex(oo, popv); printf("pop vert\n"); } if (apopl||apopv) { s3d_pop_line(aoo, apopl); s3d_pop_vertex(aoo, apopv); } apopl=apopv=0; popl=popv=0; #ifdef hfgm if (ltxt!=-1) s3d_flags_off(ltxt, S3D_OF_VISIBLE); if (txt&&(pos<128)&&txt[pos]) { ltxt=txt[pos]; s3d_flags_on(txt[pos], S3D_OF_VISIBLE); } #endif char *x=l2[pos]; printf("editoing %c (%x)\n",pos,pos); if (toocomplex(x)) { donoob(0); return; } int c=0; while ((x[c])) { float ptx=x[c++]-'a'; float pty=x[c++]-'a'; if (x[c-2]!=' ') { s3d_push_vertex(oo, sw*ptx+0.5*sw,-s*pty+0.5*s,0.1); popv++; if ((popv-1==aim)||(!x[c]&&(aim>popv-1))) dispaim(ptx,pty); if ((popv>1)&&!(x[c-1]==' ')&&!((c>2)&&x[c-3]==' ')) { s3d_push_line(oo, popv-2, popv-1,1 ); popl++; } } } if (!popv) donoob(2); }