// Now, lets see how long it takes to use these implementations int main(int argc, char** argv) { struct cstruct cs; // chars struct sstruct ss; // shorts struct lstruct ls; // longs struct btype b; // bits char csa[32]; short ssa[32]; long lsa[32]; long count; long i; // For timing, we can vary the number of iterations run Assert(argc == 2, "Usage: flags <number_of_iterations>"); count = atol(argv[1]); cs.pos[0] = true; ss.pos[0] = true; ls.pos[0] = true; csa[0] = true; ssa[0] = true; lsa[0] = true; b.f0 = true; // For each interation, we are going to test the time to read and write // the values by doing a copy from one array position to another. // To cut down on the overhead of the outer loop, we do 120 assignements // within the loop body. Settime(); for (i=0; i<count; i++) { csa[1] = csa[0]; csa[2] = csa[1]; csa[3] = csa[2]; csa[4] = csa[3]; csa[5] = csa[4]; csa[6] = csa[5]; csa[7] = csa[6]; csa[8] = csa[7]; csa[9] = csa[8]; csa[10] = csa[9]; csa[11] = csa[10]; csa[12] = csa[11]; csa[13] = csa[12]; csa[14] = csa[13]; csa[15] = csa[14]; csa[16] = csa[15]; csa[17] = csa[16]; csa[18] = csa[17]; csa[19] = csa[18]; csa[20] = csa[19]; csa[21] = csa[20]; csa[22] = csa[21]; csa[23] = csa[22]; csa[24] = csa[23]; csa[25] = csa[24]; csa[26] = csa[25]; csa[27] = csa[26]; csa[28] = csa[27]; csa[29] = csa[28]; csa[30] = csa[29]; csa[1] = csa[0]; csa[2] = csa[1]; csa[3] = csa[2]; csa[4] = csa[3]; csa[5] = csa[4]; csa[6] = csa[5]; csa[7] = csa[6]; csa[8] = csa[7]; csa[9] = csa[8]; csa[10] = csa[9]; csa[11] = csa[10]; csa[12] = csa[11]; csa[13] = csa[12]; csa[14] = csa[13]; csa[15] = csa[14]; csa[16] = csa[15]; csa[17] = csa[16]; csa[18] = csa[17]; csa[19] = csa[18]; csa[20] = csa[19]; csa[21] = csa[20]; csa[22] = csa[21]; csa[23] = csa[22]; csa[24] = csa[23]; csa[25] = csa[24]; csa[26] = csa[25]; csa[27] = csa[26]; csa[28] = csa[27]; csa[29] = csa[28]; csa[30] = csa[29]; csa[1] = csa[0]; csa[2] = csa[1]; csa[3] = csa[2]; csa[4] = csa[3]; csa[5] = csa[4]; csa[6] = csa[5]; csa[7] = csa[6]; csa[8] = csa[7]; csa[9] = csa[8]; csa[10] = csa[9]; csa[11] = csa[10]; csa[12] = csa[11]; csa[13] = csa[12]; csa[14] = csa[13]; csa[15] = csa[14]; csa[16] = csa[15]; csa[17] = csa[16]; csa[18] = csa[17]; csa[19] = csa[18]; csa[20] = csa[19]; csa[21] = csa[20]; csa[22] = csa[21]; csa[23] = csa[22]; csa[24] = csa[23]; csa[25] = csa[24]; csa[26] = csa[25]; csa[27] = csa[26]; csa[28] = csa[27]; csa[29] = csa[28]; csa[30] = csa[29]; csa[1] = csa[0]; csa[2] = csa[1]; csa[3] = csa[2]; csa[4] = csa[3]; csa[5] = csa[4]; csa[6] = csa[5]; csa[7] = csa[6]; csa[8] = csa[7]; csa[9] = csa[8]; csa[10] = csa[9]; csa[11] = csa[10]; csa[12] = csa[11]; csa[13] = csa[12]; csa[14] = csa[13]; csa[15] = csa[14]; csa[16] = csa[15]; csa[17] = csa[16]; csa[18] = csa[17]; csa[19] = csa[18]; csa[20] = csa[19]; csa[21] = csa[20]; csa[22] = csa[21]; csa[23] = csa[22]; csa[24] = csa[23]; csa[25] = csa[24]; csa[26] = csa[25]; csa[27] = csa[26]; csa[28] = csa[27]; csa[29] = csa[28]; csa[30] = csa[29]; } cout << "Time for characters (120 assigns): " << count << " iterations: " << Gettime() << " seconds\n"; Settime(); for (i=0; i<count; i++) { ssa[1] = ssa[0]; ssa[2] = ssa[1]; ssa[3] = ssa[2]; ssa[4] = ssa[3]; ssa[5] = ssa[4]; ssa[6] = ssa[5]; ssa[7] = ssa[6]; ssa[8] = ssa[7]; ssa[9] = ssa[8]; ssa[10] = ssa[9]; ssa[11] = ssa[10]; ssa[12] = ssa[11]; ssa[13] = ssa[12]; ssa[14] = ssa[13]; ssa[15] = ssa[14]; ssa[16] = ssa[15]; ssa[17] = ssa[16]; ssa[18] = ssa[17]; ssa[19] = ssa[18]; ssa[20] = ssa[19]; ssa[21] = ssa[20]; ssa[22] = ssa[21]; ssa[23] = ssa[22]; ssa[24] = ssa[23]; ssa[25] = ssa[24]; ssa[26] = ssa[25]; ssa[27] = ssa[26]; ssa[28] = ssa[27]; ssa[29] = ssa[28]; ssa[30] = ssa[29]; ssa[1] = ssa[0]; ssa[2] = ssa[1]; ssa[3] = ssa[2]; ssa[4] = ssa[3]; ssa[5] = ssa[4]; ssa[6] = ssa[5]; ssa[7] = ssa[6]; ssa[8] = ssa[7]; ssa[9] = ssa[8]; ssa[10] = ssa[9]; ssa[11] = ssa[10]; ssa[12] = ssa[11]; ssa[13] = ssa[12]; ssa[14] = ssa[13]; ssa[15] = ssa[14]; ssa[16] = ssa[15]; ssa[17] = ssa[16]; ssa[18] = ssa[17]; ssa[19] = ssa[18]; ssa[20] = ssa[19]; ssa[21] = ssa[20]; ssa[22] = ssa[21]; ssa[23] = ssa[22]; ssa[24] = ssa[23]; ssa[25] = ssa[24]; ssa[26] = ssa[25]; ssa[27] = ssa[26]; ssa[28] = ssa[27]; ssa[29] = ssa[28]; ssa[30] = ssa[29]; ssa[1] = ssa[0]; ssa[2] = ssa[1]; ssa[3] = ssa[2]; ssa[4] = ssa[3]; ssa[5] = ssa[4]; ssa[6] = ssa[5]; ssa[7] = ssa[6]; ssa[8] = ssa[7]; ssa[9] = ssa[8]; ssa[10] = ssa[9]; ssa[11] = ssa[10]; ssa[12] = ssa[11]; ssa[13] = ssa[12]; ssa[14] = ssa[13]; ssa[15] = ssa[14]; ssa[16] = ssa[15]; ssa[17] = ssa[16]; ssa[18] = ssa[17]; ssa[19] = ssa[18]; ssa[20] = ssa[19]; ssa[21] = ssa[20]; ssa[22] = ssa[21]; ssa[23] = ssa[22]; ssa[24] = ssa[23]; ssa[25] = ssa[24]; ssa[26] = ssa[25]; ssa[27] = ssa[26]; ssa[28] = ssa[27]; ssa[29] = ssa[28]; ssa[30] = ssa[29]; ssa[1] = ssa[0]; ssa[2] = ssa[1]; ssa[3] = ssa[2]; ssa[4] = ssa[3]; ssa[5] = ssa[4]; ssa[6] = ssa[5]; ssa[7] = ssa[6]; ssa[8] = ssa[7]; ssa[9] = ssa[8]; ssa[10] = ssa[9]; ssa[11] = ssa[10]; ssa[12] = ssa[11]; ssa[13] = ssa[12]; ssa[14] = ssa[13]; ssa[15] = ssa[14]; ssa[16] = ssa[15]; ssa[17] = ssa[16]; ssa[18] = ssa[17]; ssa[19] = ssa[18]; ssa[20] = ssa[19]; ssa[21] = ssa[20]; ssa[22] = ssa[21]; ssa[23] = ssa[22]; ssa[24] = ssa[23]; ssa[25] = ssa[24]; ssa[26] = ssa[25]; ssa[27] = ssa[26]; ssa[28] = ssa[27]; ssa[29] = ssa[28]; ssa[30] = ssa[29]; } cout << "Time for shorts (120 assigns): " << count << " iterations: " << Gettime() << " seconds\n"; Settime(); for (i=0; i<count; i++) { lsa[1] = lsa[0]; lsa[2] = lsa[1]; lsa[3] = lsa[2]; lsa[4] = lsa[3]; lsa[5] = lsa[4]; lsa[6] = lsa[5]; lsa[7] = lsa[6]; lsa[8] = lsa[7]; lsa[9] = lsa[8]; lsa[10] = lsa[9]; lsa[11] = lsa[10]; lsa[12] = lsa[11]; lsa[13] = lsa[12]; lsa[14] = lsa[13]; lsa[15] = lsa[14]; lsa[16] = lsa[15]; lsa[17] = lsa[16]; lsa[18] = lsa[17]; lsa[19] = lsa[18]; lsa[20] = lsa[19]; lsa[21] = lsa[20]; lsa[22] = lsa[21]; lsa[23] = lsa[22]; lsa[24] = lsa[23]; lsa[25] = lsa[24]; lsa[26] = lsa[25]; lsa[27] = lsa[26]; lsa[28] = lsa[27]; lsa[29] = lsa[28]; lsa[30] = lsa[29]; lsa[1] = lsa[0]; lsa[2] = lsa[1]; lsa[3] = lsa[2]; lsa[4] = lsa[3]; lsa[5] = lsa[4]; lsa[6] = lsa[5]; lsa[7] = lsa[6]; lsa[8] = lsa[7]; lsa[9] = lsa[8]; lsa[10] = lsa[9]; lsa[11] = lsa[10]; lsa[12] = lsa[11]; lsa[13] = lsa[12]; lsa[14] = lsa[13]; lsa[15] = lsa[14]; lsa[16] = lsa[15]; lsa[17] = lsa[16]; lsa[18] = lsa[17]; lsa[19] = lsa[18]; lsa[20] = lsa[19]; lsa[21] = lsa[20]; lsa[22] = lsa[21]; lsa[23] = lsa[22]; lsa[24] = lsa[23]; lsa[25] = lsa[24]; lsa[26] = lsa[25]; lsa[27] = lsa[26]; lsa[28] = lsa[27]; lsa[29] = lsa[28]; lsa[30] = lsa[29]; lsa[1] = lsa[0]; lsa[2] = lsa[1]; lsa[3] = lsa[2]; lsa[4] = lsa[3]; lsa[5] = lsa[4]; lsa[6] = lsa[5]; lsa[7] = lsa[6]; lsa[8] = lsa[7]; lsa[9] = lsa[8]; lsa[10] = lsa[9]; lsa[11] = lsa[10]; lsa[12] = lsa[11]; lsa[13] = lsa[12]; lsa[14] = lsa[13]; lsa[15] = lsa[14]; lsa[16] = lsa[15]; lsa[17] = lsa[16]; lsa[18] = lsa[17]; lsa[19] = lsa[18]; lsa[20] = lsa[19]; lsa[21] = lsa[20]; lsa[22] = lsa[21]; lsa[23] = lsa[22]; lsa[24] = lsa[23]; lsa[25] = lsa[24]; lsa[26] = lsa[25]; lsa[27] = lsa[26]; lsa[28] = lsa[27]; lsa[29] = lsa[28]; lsa[30] = lsa[29]; lsa[1] = lsa[0]; lsa[2] = lsa[1]; lsa[3] = lsa[2]; lsa[4] = lsa[3]; lsa[5] = lsa[4]; lsa[6] = lsa[5]; lsa[7] = lsa[6]; lsa[8] = lsa[7]; lsa[9] = lsa[8]; lsa[10] = lsa[9]; lsa[11] = lsa[10]; lsa[12] = lsa[11]; lsa[13] = lsa[12]; lsa[14] = lsa[13]; lsa[15] = lsa[14]; lsa[16] = lsa[15]; lsa[17] = lsa[16]; lsa[18] = lsa[17]; lsa[19] = lsa[18]; lsa[20] = lsa[19]; lsa[21] = lsa[20]; lsa[22] = lsa[21]; lsa[23] = lsa[22]; lsa[24] = lsa[23]; lsa[25] = lsa[24]; lsa[26] = lsa[25]; lsa[27] = lsa[26]; lsa[28] = lsa[27]; lsa[29] = lsa[28]; lsa[30] = lsa[29]; } cout << "Time for longs (120 assigns): " << count << " iterations: " << Gettime() << " seconds\n"; Settime(); for (i=0; i<count; i++) { b.f1 = b.f0; b.f2 = b.f1; b.f3 = b.f2; b.f4 = b.f3; b.f5 = b.f4; b.f6 = b.f5; b.f7 = b.f6; b.f8 = b.f7; b.f9 = b.f8; b.f10 = b.f9; b.f11 = b.f10; b.f12 = b.f11; b.f13 = b.f12; b.f14 = b.f13; b.f15 = b.f14; b.f16 = b.f15; b.f17 = b.f16; b.f18 = b.f17; b.f19 = b.f18; b.f20 = b.f19; b.f21 = b.f20; b.f22 = b.f21; b.f23 = b.f22; b.f24 = b.f23; b.f25 = b.f24; b.f26 = b.f25; b.f27 = b.f26; b.f28 = b.f27; b.f29 = b.f28; b.f30 = b.f29; b.f1 = b.f0; b.f2 = b.f1; b.f3 = b.f2; b.f4 = b.f3; b.f5 = b.f4; b.f6 = b.f5; b.f7 = b.f6; b.f8 = b.f7; b.f9 = b.f8; b.f10 = b.f9; b.f11 = b.f10; b.f12 = b.f11; b.f13 = b.f12; b.f14 = b.f13; b.f15 = b.f14; b.f16 = b.f15; b.f17 = b.f16; b.f18 = b.f17; b.f19 = b.f18; b.f20 = b.f19; b.f21 = b.f20; b.f22 = b.f21; b.f23 = b.f22; b.f24 = b.f23; b.f25 = b.f24; b.f26 = b.f25; b.f27 = b.f26; b.f28 = b.f27; b.f29 = b.f28; b.f30 = b.f29; b.f1 = b.f0; b.f2 = b.f1; b.f3 = b.f2; b.f4 = b.f3; b.f5 = b.f4; b.f6 = b.f5; b.f7 = b.f6; b.f8 = b.f7; b.f9 = b.f8; b.f10 = b.f9; b.f11 = b.f10; b.f12 = b.f11; b.f13 = b.f12; b.f14 = b.f13; b.f15 = b.f14; b.f16 = b.f15; b.f17 = b.f16; b.f18 = b.f17; b.f19 = b.f18; b.f20 = b.f19; b.f21 = b.f20; b.f22 = b.f21; b.f23 = b.f22; b.f24 = b.f23; b.f25 = b.f24; b.f26 = b.f25; b.f27 = b.f26; b.f28 = b.f27; b.f29 = b.f28; b.f30 = b.f29; b.f1 = b.f0; b.f2 = b.f1; b.f3 = b.f2; b.f4 = b.f3; b.f5 = b.f4; b.f6 = b.f5; b.f7 = b.f6; b.f8 = b.f7; b.f9 = b.f8; b.f10 = b.f9; b.f11 = b.f10; b.f12 = b.f11; b.f13 = b.f12; b.f14 = b.f13; b.f15 = b.f14; b.f16 = b.f15; b.f17 = b.f16; b.f18 = b.f17; b.f19 = b.f18; b.f20 = b.f19; b.f21 = b.f20; b.f22 = b.f21; b.f23 = b.f22; b.f24 = b.f23; b.f25 = b.f24; b.f26 = b.f25; b.f27 = b.f26; b.f28 = b.f27; b.f29 = b.f28; b.f30 = b.f29; } cout << "Time for bitfields (120 assigns): " << count << " iterations: " << Gettime() << " seconds\n"; return 0; }
void MainObject::DispatchCommand(QString cmd) { bool processed=false; int line; QTime time; bool ok=false; bool overwrite=!edit_modified; QStringList cmds; QString verb; cmd=cmd.stripWhiteSpace(); if(cmd.right(1)=="!") { overwrite=true; cmd=cmd.left(cmd.length()-1).stripWhiteSpace(); } cmds=cmds.split(" ",cmd); verb=cmds[0].lower(); // // No loaded log needed for these // if(verb=="deletelog") { if(rda->user()->deleteLog()) { if(cmds.size()==2) { Deletelog(cmds[1]); } else { fprintf(stderr,"deletelog: invalid command arguments\n"); } } else { fprintf(stderr,"deletelog: insufficient privileges [Delete Log]\n"); } processed=true; } if((verb=="exit")||(verb=="quit")||(verb=="bye")) { if(overwrite) { exit(0); } else { OverwriteError(verb); } processed=true; } if((verb=="help")||(verb=="?")) { Help(cmds); processed=true; } if(verb=="listlogs") { ListLogs(); processed=true; } if(verb=="listservices") { Listservices(); processed=true; } if(verb=="load") { if(overwrite) { if(cmds.size()==2) { Load(cmds[1]); } else { fprintf(stderr,"load: invalid command arguments\n"); } } else { OverwriteError("load"); } processed=true; } if(verb=="new") { if(overwrite) { if(cmds.size()==2) { New(cmds[1]); } else { fprintf(stderr,"new: invalid command arguments\n"); } } else { OverwriteError("new"); } processed=true; } // // These need a log loaded // if((processed)||(edit_log_event!=NULL)) { if(verb=="addcart") { if(rda->user()->addtoLog()) { if(cmds.size()==3) { line=cmds[1].toInt(&ok); if(ok&&(line>=0)) { unsigned cartnum=cmds[2].toUInt(&ok); if(ok&&(cartnum<=RD_MAX_CART_NUMBER)) { Addcart(line,cartnum); } else { fprintf(stderr,"addcart: invalid cart number\n"); } } else { fprintf(stderr,"addcart: invalid line number\n"); } } else { fprintf(stderr,"addcart: invalid command arguments\n"); } } else { fprintf(stderr,"addcart: insufficient privileges [Add Log Items]\n"); } processed=true; } if(verb=="addchain") { if(rda->user()->addtoLog()) { if(cmds.size()==3) { line=cmds[1].toInt(&ok); if(ok&&(line>=0)) { Addchain(line,cmds[2]); } else { fprintf(stderr,"addchain: invalid line number\n"); } } else { fprintf(stderr,"addchain: invalid command arguments\n"); } } else { fprintf(stderr,"addchain: insufficient privileges [Add Log Items]\n"); } processed=true; } if(verb=="addmarker") { if(rda->user()->addtoLog()) { if(cmds.size()==2) { line=cmds[1].toInt(&ok); if(ok&&(line>=0)) { Addmarker(line); } else { fprintf(stderr,"addmarker: invalid line number\n"); } } else { fprintf(stderr,"addmarker: invalid command arguments\n"); } } else { fprintf(stderr,"addmarker: insufficient privileges [Add Log Items]\n"); } processed=true; } if(verb=="addtrack") { if(rda->user()->addtoLog()) { if(cmds.size()==2) { line=cmds[1].toInt(&ok); if(ok&&(line>=0)) { Addtrack(line); } else { fprintf(stderr,"addtrack: invalid line number\n"); } } else { fprintf(stderr,"addtrack: invalid command arguments\n"); } } else { fprintf(stderr,"addtrack: insufficient privileges [Add Log Items]\n"); } processed=true; } if(verb=="header") { Header(); processed=true; } if(verb=="list") { List(); processed=true; } if(verb=="remove") { if(rda->user()->removefromLog()) { if(cmds.size()==2) { line=cmds[1].toInt(&ok); if(ok&&(line>=0)&&(line<edit_log_event->size())) { Remove(line); } else { fprintf(stderr,"remove: invalid line number\n"); } } else { fprintf(stderr,"remove: invalid command arguments\n"); } } else { fprintf(stderr,"remove: insufficient privileges [Delete Log Items]\n"); } processed=true; } if(verb=="save") { if(rda->user()->arrangeLog()) { Save(); } else { fprintf(stderr,"save: insufficient privileges [Rearrange Log Items]\n"); } processed=true; } if(verb=="saveas") { if(rda->user()->arrangeLog()) { if(cmds.size()==2) { if(cmds[1].length()>64) { fprintf(stderr,"saveas: log name too long\n"); } Saveas(cmds[1]); } else { fprintf(stderr,"saveas: invalid command arguments\n"); } } else { fprintf(stderr, "saveas: insufficient privileges [Rearrange Log Items]\n"); } processed=true; } if(verb=="setautorefresh") { if(rda->user()->arrangeLog()) { if(cmds.size()==2) { QString arg=cmds[1].lower(); if((arg=="yes")||(arg=="true")||(arg=="y")) { Setautorefresh(true); processed=true; } if((arg=="no")||(arg=="false")||(arg=="n")) { Setautorefresh(false); processed=true; } if(!processed) { fprintf(stderr,"setautorefresh: invalid command argument\n"); } } else { fprintf(stderr,"setautorefresh: invalid command arguments\n"); } } else { fprintf(stderr, "setautorefresh: insufficient privileges [Rearrange Log Items]\n"); } processed=true; } if(verb=="setcart") { if(rda->user()->arrangeLog()) { if(cmds.size()==3) { line=cmds[1].toInt(&ok); if(ok&&(line>=0)&&(line<edit_log_event->size())) { unsigned cartnum=cmds[2].toUInt(&ok); if(ok&&(cartnum<=RD_MAX_CART_NUMBER)) { Setcart(line,cartnum); } else { fprintf(stderr,"setcart: invalid cart number\n"); } } else { fprintf(stderr,"setcart: invalid line number\n"); } } else { fprintf(stderr,"setcart: invalid command arguments\n"); } } else { fprintf(stderr, "setcart: insufficient privileges [Rearrange Log Items]\n"); } processed=true; } if(verb=="setcomment") { if(rda->user()->arrangeLog()) { if(cmds.size()>=3) { line=cmds[1].toInt(&ok); if(ok&&(line>=0)&&(line<edit_log_event->size())) { cmds.remove(cmds.begin()); cmds.remove(cmds.begin()); Setcomment(line,cmds.join(" ")); } else { fprintf(stderr,"setcomment: invalid line number\n"); } } else { fprintf(stderr,"setcomment: invalid command arguments\n"); } } else { fprintf(stderr, "setcomment: insufficient privileges [Rearrange Log Items]\n"); } processed=true; } if(verb=="setdesc") { if(rda->user()->arrangeLog()) { if(cmds.size()>=2) { cmds.erase(cmds.begin()); Setdesc(cmds.join(" ")); } else { fprintf(stderr,"setdesc: invalid command arguments\n"); } } else { fprintf(stderr, "setdesc: insufficient privileges [Rearrange Log Items]\n"); } processed=true; } if(verb=="setenddate") { if(rda->user()->arrangeLog()) { if(cmds.size()==1) { Setenddate(QDate()); } else { if(cmds.size()==2) { QDate date=QDate::fromString(cmds[1],Qt::ISODate); if(date.isValid()) { Setenddate(date); } else { fprintf(stderr,"setenddate: invalid date format\n"); } } else { fprintf(stderr,"setenddate: invalid command arguments\n"); } } } else { fprintf(stderr, "setenddate: insufficient privileges [Rearrange Log Items]\n"); } processed=true; } if(verb=="setlabel") { if(rda->user()->arrangeLog()) { if(cmds.size()==3) { line=cmds[1].toInt(&ok); if(ok&&(line>=0)&&(line<edit_log_event->size())) { Setlabel(line,cmds[2]); } else { fprintf(stderr,"setlabel: invalid line number\n"); } } else { fprintf(stderr,"setlabel: invalid command arguments\n"); } } else { fprintf(stderr, "setlabel: insufficient privileges [Rearrange Log Items]\n"); } processed=true; } if(verb=="setpurgedate") { if(rda->user()->arrangeLog()) { if(cmds.size()==1) { Setpurgedate(QDate()); } else { if(cmds.size()==2) { QDate date=QDate::fromString(cmds[1],Qt::ISODate); if(date.isValid()) { Setpurgedate(date); } else { fprintf(stderr,"setpurgedate: invalid date format\n"); } } else { fprintf(stderr,"setpurgedate: invalid command arguments\n"); } } } else { fprintf(stderr, "setpurgedate: insufficient privileges [Rearrange Log Items]\n"); } processed=true; } if(verb=="setservice") { if(rda->user()->arrangeLog()) { if(cmds.size()==2) { Setservice(cmds[1]); } else { fprintf(stderr,"setservice: invalid command arguments\n"); } } else { fprintf(stderr, "setservice: insufficient privileges [Rearrange Log Items]\n"); } processed=true; } if(verb=="setstartdate") { if(rda->user()->arrangeLog()) { if(cmds.size()==1) { Setstartdate(QDate()); } else { if(cmds.size()==2) { QDate date=QDate::fromString(cmds[1],Qt::ISODate); if(date.isValid()) { Setstartdate(date); } else { fprintf(stderr,"setstartdate: invalid date format\n"); } } else { fprintf(stderr,"setstartdate: invalid command arguments\n"); } } } else { fprintf(stderr, "setstartdate: insufficient privileges [Rearrange Log Items]\n"); } processed=true; } if(verb=="settime") { if(rda->user()->arrangeLog()) { if(cmds.size()>=3) { line=cmds[1].toInt(&ok); if(ok&&(line>=0)&&(line<edit_log_event->size())) { RDLogLine::TimeType ttype=RDLogLine::NoTime; if(cmds[2].lower()=="hard") { ttype=RDLogLine::Hard; } if(cmds[2].lower()=="none") { ttype=RDLogLine::Relative; } switch(ttype) { case RDLogLine::Hard: if(cmds.size()>=4) { time=RDGetWebTime(cmds[3],&ok); if(ok) { Settime(line,ttype,time); } else { fprintf(stderr,"settime: invalid time value\n"); } } else { fprintf(stderr,"settime: missing time value\n"); } break; case RDLogLine::Relative: Settime(line,ttype); break; case RDLogLine::NoTime: fprintf(stderr,"settime: invalid time type\n"); break; } } else { fprintf(stderr,"settime: invalid line number\n"); } } else { fprintf(stderr,"settime: invalid command arguments\n"); } } else { fprintf(stderr, "settime: insufficient privileges [Rearrange Log Items]\n"); } processed=true; } if(verb=="settrans") { if(rda->user()->arrangeLog()) { if(cmds.size()==3) { line=cmds[1].toInt(&ok); if(ok&&(line>=0)&&(line<edit_log_event->size())) { RDLogLine::TransType trans=RDLogLine::NoTrans; if(cmds[2].lower()=="play") { trans=RDLogLine::Play; } if(cmds[2].lower()=="segue") { trans=RDLogLine::Segue; } if(cmds[2].lower()=="stop") { trans=RDLogLine::Stop; } if(trans!=RDLogLine::NoTrans) { Settrans(line,trans); } else { fprintf(stderr,"settrans: invalid transition type\n"); } } else { fprintf(stderr,"settrans: invalid line number\n"); } } else { fprintf(stderr,"settrans: invalid command arguments\n"); } } else { fprintf(stderr, "settrans: insufficient privileges [Rearrange Log Items]\n"); } processed=true; } if(verb=="unload") { if(overwrite) { Unload(); } else { OverwriteError("unload"); } processed=true; } } else { fprintf(stderr,"%s: no log loaded\n",(const char *)verb); processed=true; } if(!processed) { fprintf(stderr,"invalid command\n"); } PrintPrompt(); }
void main() { /* int listsize = 9; Node *Array = new Node[9]; Array[0].key = 97; Array[1].key = 53; Array[2].key = 88; Array[3].key = 59; Array[4].key = 26; Array[5].key = 41; Array[6].key = 88; Array[7].key = 31; Array[8].key = 22; cout << "排序前:" << endl; Print<Node>(Array, listsize); RadixSort<Node>(Array, listsize, DStep, radix); cout << "排序后:" << endl; Print<Node>(Array, listsize); */ int input = -1; // 排序类型: -1 --不增(逆序) ; +1 - 不降(正序); 0 -- 随机 Randomize(); int listsize = 1000; Node *Array = new Node[ARRAYSIZE]; /* // 也可以采用下列命令行的形式 // <sortname> [+/-] <size_of_test> <threshold> // -1 --不增 ; +1 - 不降; 无参数 -- 0 随机 // <size_of_test> 测试数据规模 // <threshold> 快速排序、归并排序等某些需要阈值的排序 int currarg; if ((argc < 2) || (argc > 4)) { cout << "Usage: <sortname> [+/-] <size> [<threshold>]\n"; exit(-1); } currarg = 1; if (argv[currarg][0] == '-') { input = -1; currarg++; } else if (argv[currarg][0] == '+') { input = 1; currarg++; } listsize = atoi(argv[currarg++]); if (argc > currarg) THRESHOLD = atoi(argv[currarg]); if ((listsize > ARRAYSIZE) || (listsize < 0)) { cout << "Selected list size is too big\n"; exit(-1); } cout << "Input: " << input << ", size: " << listsize << ", threshold: " << THRESHOLD << "\n"; */ int i, j; int k = ARRAYSIZE / listsize; if (input == -1) { for (i=0; i<k; i++) // 逆序 for (j=0; j<listsize; j++) Array[i*listsize + j].key = listsize - j; } else if (input == 0) for (i=0; i<ARRAYSIZE; i++) Array[i].key = Random(32003); // 随机 // Array[i].key = Random(1000000); // <1M的20位整数,随机 else { // 正序 for (i=0; i<k; i++) for (j=0; j<listsize; j++) Array[i*listsize + j].key = j; } Settime(); for (i=0; i<ARRAYSIZE; i+=listsize) { // cout << "排序前:" << endl; // PrintArray<Node>(&Array[i], i); RadixSort<Node>(&Array[i], listsize, DStep, radix); // cout << "排序后:" << endl; // PrintAddr<Node>(&Array[i], listsize); } cout << "Sort with list size " << listsize << ", Array size " << ARRAYSIZE << " : " << Gettime()/k << " seconds\n"; }