Changeset 279 for anr/gantt.l
- Timestamp:
- Nov 24, 2010, 5:44:26 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
anr/gantt.l
r278 r279 54 54 55 55 typedef struct _Tlivrable { 56 int tn,stn,dn,vn; // task, sub-task, number57 56 char v; // 0, 1, 2, ..., F 58 57 char* kind; … … 60 59 int bm,em; // mois de bebut et de fin 61 60 double hman[3]; // nombre de mh par an 61 int tn,stn,dn,vn; // task, sub-task, number 62 int leader; // 1: the partner leads this livrable 63 // 0: the partner helps for this livrable 62 64 int partner; // index dans partner_table 63 65 // these fields are filled by the program for data[tn][0][0][0] … … 67 69 double nbma[3]; // durée en mois par annee 68 70 // these fields are filled by the program for data[tn][stn][dn][0] 69 struct _Tlivrable 70 **vers; // null termiated (vers[i] = &data[tn][stn][dn][i]) 71 int nbvers; // nombre de vers 71 struct _Tlivrable // versions of the livrable 72 **vers; // null termiated (vers[i] = data[tn][stn][dn][j]) 73 // this->leader == 1 74 // vers[0] = this 75 // vers[i]->leadaer == this->leader 76 // vers[i]->partner == this->partner 77 int nbvers; // nombre de vers 72 78 double height; // height of livrable 73 79 // int del_bm,del_em; // mois de bebut et de fin cummule … … 75 81 int nbTitleLines; 76 82 char* titleLines[5]; // null termiated 83 struct _Tlivrable // participant to the livrable 84 **part; // null termiated (vers[i] = data[tn][stn][dn][j]) 85 // this->leader == 1 86 // vers[i] != this 87 // vers[i]->leader == 0 88 // vers[i]->partner != this->partner 89 int nbpart; // nombre de vers 77 90 } Tlivrable; 78 91 … … 215 228 double an[3]; 216 229 char* an_comment; 230 int leader; 217 231 int partner; 218 232 #.*\n ; 233 L=1 { leader=1; } 234 L=0 { leader=0; } 219 235 T=[0-9]+ { tn=atoi(yytext+2); } 220 236 S=[0-9]+ { stn=atoi(yytext+2); } 221 237 D=[0-9]+ { dn=atoi(yytext+2); } 222 D=none { dn=-2; }223 238 V=V[1-8F] { v=yytext[3]; } 224 239 ML=[0-9]+ { … … 282 297 p->hman[1] = an[1]; 283 298 p->hman[2] = an[2]; 299 p->leader = leader; 284 300 p->partner = partner; 285 301 p->title = title; … … 297 313 an_comment=0; 298 314 partner=0; 315 leader=0; 299 316 } 300 317 [ \t\n] ; … … 375 392 void prepare3(Tdata* data) 376 393 { 377 int tn,stn,dn,vn; 394 int tn,stn,dn,vn,cnt; 395 Tlivrable* tmp; 378 396 for (tn=0 ; tn<T_MAX ; tn++) 379 397 for (stn=0; stn<S_MAX; stn++) … … 382 400 if (p==0) continue; 383 401 p->nbvers=0 ; 384 for (vn=0 ; vn<V_MAX ; vn+=1) 385 if (data->ls[tn][stn][dn][vn]!=0) p->nbvers+=1; 402 p->nbpart=0 ; 403 for (vn=0 ; vn<V_MAX ; vn+=1) { 404 tmp = data->ls[tn][stn][dn][vn]; 405 if (tmp==0) continue; 406 if (tmp->leader==0) 407 p->nbpart+=1; 408 else 409 p->nbvers+=1; 410 } 386 411 p->vers=(Tlivrable**)malloc(sizeof(*p->vers)*(p->nbvers+1)); 387 for (vn=0 ; vn<p->nbvers ; vn+=1) { 388 p->vers[vn] = data->ls[tn][stn][dn][vn]; 389 data->ls[tn][stn][dn][vn]->nbvers = p->nbvers; 390 } 391 p->vers[vn] = 0; 412 for (vn=0,cnt=0 ; vn<V_MAX ; vn+=1) { 413 tmp = data->ls[tn][stn][dn][vn]; 414 if (tmp!=0 && tmp->leader==1) { 415 p->vers[cnt++] = tmp; 416 tmp->nbvers = p->nbvers; 417 } 418 } 419 p->vers[cnt] = 0; 420 if (p->nbpart!=0) { 421 p->part=(Tlivrable**)malloc(sizeof(*p->part)*(p->nbpart+1)); 422 for (vn=0,cnt=0 ; vn<V_MAX ; vn+=1) { 423 tmp = data->ls[tn][stn][dn][vn]; 424 if (tmp!=0 && tmp->leader==0) { 425 p->part[cnt++] = tmp; 426 } 427 } 428 p->part[cnt] = 0; 429 } 430 392 431 p->height = 1.0*DELIVRABLE_HEIGHT; 393 432 if (p->nbTitleLines>=1) { … … 429 468 for (stn=0 ; curr->ls[tn][stn][0][0]!=0 ; stn++) 430 469 for (dn=0 ; curr->ls[tn][stn][dn][0]!=0 ; dn++) { 431 if ( curr->ls[tn][stn][dn][0]-> dn<0 ) continue;470 if ( curr->ls[tn][stn][dn][0]->leader==0 ) continue; 432 471 nblivrables += 1; 433 472 height+=curr->ls[tn][stn][dn][0]->height; … … 635 674 } 636 675 676 Tlivrable* do_partner_table_getLivrable(Tlivrable** leader, Tlivrable* top, int partner) 677 { 678 int i; 679 Tlivrable* ret; 680 *leader=top->vers[top->nbvers-1]; 681 if (leader[0]->partner==partner) 682 return *leader; 683 for (i=0; i<top->nbpart ; i+=1) { 684 ret= top->part[i]; 685 if ( ret->partner==partner ) 686 return ret; 687 } 688 return 0; 689 } 690 637 691 void do_partner_table_full(int partner) 638 692 { … … 662 716 for (stn=0; stn<S_MAX; stn++) { 663 717 for (dn=0; dn<D_MAX; dn++) { 718 Tlivrable *lcurr,*leader; 664 719 Tlivrable* top=curr->ls[tn][stn][dn][v]; 665 720 if (top==0) continue; 666 Tlivrable* last=top->vers[top->nbvers-1];667 if (last->partner!=partner)continue;721 if ( (lcurr=do_partner_table_getLivrable(&leader,top,partner))==0 ) 722 continue; 668 723 double sum1,sum2,sum3,sum=0; 669 sum1 = l ast->hman[0]; sum +=sum1;670 sum2 = l ast->hman[1]; sum +=sum2;671 sum3 = l ast->hman[2]; sum +=sum3;724 sum1 = lcurr->hman[0]; sum +=sum1; 725 sum2 = lcurr->hman[1]; sum +=sum2; 726 sum3 = lcurr->hman[2]; sum +=sum3; 672 727 char label[1000],title[1000]; 673 gen_label_base(label,l ast);674 sprintf(title,"\\resstablestyletitle{%s}",l ast->title);728 gen_label_base(label,leader); 729 sprintf(title,"\\resstablestyletitle{%s}",leader->title); 675 730 fprintf(curr->os,"%s & %s & %2.1f & %2.1f & %2.1f & %2.1f \\\\\\hline\n", 676 731 label,title,sum1,sum2,sum3,sum); … … 680 735 an += sum ; tsk += sum ; 681 736 newlineadded=0; 682 if ( sum1==0 && l ast->nbma[0]!=0)737 if ( sum1==0 && leader->nbma[0]!=0) 683 738 fprintf(stderr,"ERROR: %-10s:%s probleme sur l'an 1 (in table=%2.1f, in gantt=%2.1f\n", 684 part->name,label,sum1,l ast->nbma[0]);685 else if (sum1!=0 && l ast->nbma[0]==0 )739 part->name,label,sum1,leader->nbma[0]); 740 else if (sum1!=0 && leader->nbma[0]==0 ) 686 741 fprintf(stderr,"ERROR: %-10s:%s probleme sur l'an 1 (in table=%2.1f, in gantt=%2.1f\n", 687 part->name,label,sum1,l ast->nbma[0]);688 else if (sum1!=0 && sum1>l ast->nbma[0] )742 part->name,label,sum1,leader->nbma[0]); 743 else if (sum1!=0 && sum1>leader->nbma[0] ) 689 744 fprintf(stderr,"WARNING: %-10s:%s probleme sur l'an 1 (in table=%2.1f, in gantt=%2.1f\n", 690 part->name,label,sum1,l ast->nbma[0]);691 if ( sum2==0 && l ast->nbma[1]!=0)745 part->name,label,sum1,leader->nbma[0]); 746 if ( sum2==0 && leader->nbma[1]!=0) 692 747 fprintf(stderr,"ERROR: %-10s:%s probleme sur l'an 2 (in table=%2.1f, in gantt=%2.1f\n", 693 part->name,label,sum2,l ast->nbma[1]);694 else if ( sum2!=0 && l ast->nbma[1]==0)748 part->name,label,sum2,leader->nbma[1]); 749 else if ( sum2!=0 && leader->nbma[1]==0) 695 750 fprintf(stderr,"ERROR: %-10s:%s probleme sur l'an 2 (in table=%2.1f, in gantt=%2.1f\n", 696 part->name,label,sum2,l ast->nbma[1]);697 else if (sum2!=0 && sum2>l ast->nbma[1])751 part->name,label,sum2,leader->nbma[1]); 752 else if (sum2!=0 && sum2>leader->nbma[1]) 698 753 fprintf(stderr,"WARNING: %-10s:%s probleme sur l'an 2 (in table=%2.1f, in gantt=%2.1f\n", 699 part->name,label,sum2,l ast->nbma[1]);700 if ( sum3==0 && l ast->nbma[2]!=0)754 part->name,label,sum2,leader->nbma[1]); 755 if ( sum3==0 && leader->nbma[2]!=0) 701 756 fprintf(stderr,"ERROR: %-10s:%s probleme sur l'an 3 (in table=%2.1f, in gantt=%2.1f\n", 702 part->name,label,sum3,l ast->nbma[2]);703 else if ( sum3!=0 && l ast->nbma[2]==0)757 part->name,label,sum3,leader->nbma[2]); 758 else if ( sum3!=0 && leader->nbma[2]==0) 704 759 fprintf(stderr,"ERROR: %-10s:%s probleme sur l'an 3 (in table=%2.1f, in gantt=%2.1f\n", 705 part->name,label,sum3,l ast->nbma[2]);706 else if (sum3!=0 && sum3>l ast->nbma[2])760 part->name,label,sum3,leader->nbma[2]); 761 else if (sum3!=0 && sum3>leader->nbma[2]) 707 762 fprintf(stderr,"WARNING: %-10s:%s probleme sur l'an 3 (in table=%2.1f, in gantt=%2.1f\n", 708 part->name,label,sum3,l ast->nbma[2]);763 part->name,label,sum3,leader->nbma[2]); 709 764 } 710 765 } … … 749 804 for (stn=0; stn<S_MAX; stn++) { 750 805 for (dn=0; dn<D_MAX; dn++) { 806 Tlivrable *lcurr,*leader; 751 807 Tlivrable* top=curr->ls[tn][stn][dn][v]; 752 808 if (top==0) continue; 753 Tlivrable* last=top->vers[top->nbvers-1];754 if (last->partner!=partner)continue;809 if ( (lcurr=do_partner_table_getLivrable(&leader,top,partner))==0 ) 810 continue; 755 811 double sum1,sum2,sum3,sum=0; 756 sum1 = l ast->hman[0]; sum +=sum1;757 sum2 = l ast->hman[1]; sum +=sum2;758 sum3 = l ast->hman[2]; sum +=sum3;812 sum1 = lcurr->hman[0]; sum +=sum1; 813 sum2 = lcurr->hman[1]; sum +=sum2; 814 sum3 = lcurr->hman[2]; sum +=sum3; 759 815 an1 += sum1 ; tsk1 += sum1 ; 760 816 an2 += sum2 ; tsk2 += sum2 ; … … 763 819 newlineadded=0; 764 820 char label[1000]; 765 gen_label_base(label,l ast);821 gen_label_base(label,leader); 766 822 } 767 823 } … … 829 885 Tlivrable* l = curr->ls[tn][stn][dn][v]; 830 886 if ( l==0 ) break; 831 if ( l-> dn<0 ) continue;887 if ( l->leader==0 ) continue; 832 888 char label[1000],resp[100],date[100],kind[100],desc[1000]; 833 889 gen_label_full(label,l);
Note: See TracChangeset
for help on using the changeset viewer.