Changeset 1200 for trunk/AGRIF/LIB/Writedeclarations.c
- Timestamp:
- 2008-09-24T15:05:20+02:00 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/AGRIF/LIB/Writedeclarations.c
r774 r1200 50 50 /* */ 51 51 /******************************************************************************/ 52 void WriteBeginDeclaration(variable *v,char ligne[LONG_4C] )52 void WriteBeginDeclaration(variable *v,char ligne[LONG_4C], int visibility) 53 53 { 54 54 char tmpligne[LONG_4C]; … … 59 59 printf(" is unknown. CONV should define a type\n"); 60 60 } 61 61 62 sprintf (ligne, "%s", v->v_typevar); 62 63 if ( v->v_c_star == 1 ) strcat(ligne,"*"); 64 63 65 /* We should give the precision of the variable if it has been given */ 64 66 if ( strcasecmp(v->v_precision,"") ) … … 68 70 strcat(ligne,tmpligne); 69 71 } 72 70 73 if (strcasecmp(v->v_dimchar,"")) 71 74 { … … 74 77 strcat(ligne,tmpligne); 75 78 } 79 76 80 if ( strcasecmp(v->v_nameinttypename,"") ) 77 81 { … … 87 91 } 88 92 if ( v->v_VariableIsParameter == 1 ) strcat(ligne, ", PARAMETER"); 93 if (visibility == 1) 94 { 89 95 if ( v->v_PublicDeclare == 1 ) strcat(ligne, ", PUBLIC"); 90 96 if ( v->v_PrivateDeclare == 1 ) strcat(ligne, ", PRIVATE"); 97 } 91 98 if ( v->v_ExternalDeclare == 1 ) strcat(ligne, ", EXTERNAL"); 92 99 if ( v->v_allocatable == 1 && 93 v->v_save == 0 ) strcat(ligne,", ALLOCATABLE"); 100 v->v_save == 0 ) 101 {strcat(ligne,", ALLOCATABLE"); 102 } 94 103 if ( v->v_optionaldeclare == 1 ) strcat(ligne,", OPTIONAL"); 95 104 if ( v->v_pointerdeclare == 1 ) strcat(ligne,", POINTER"); … … 141 150 142 151 strcat (ligne, ", Dimension("); 152 143 153 if ( v->v_dimensiongiven == 1 && tmpok == 1 ) 154 { 144 155 strcat(ligne,v->v_readedlistdimension); 156 } 145 157 if ( v->v_dimensiongiven == 1 && tmpok == 0 ) 146 158 { 147 159 strcpy(newname,ChangeTheInitalvaluebyTabvarsName 148 160 (v->v_readedlistdimension,List_Global_Var,0)); 149 if ( !strcasecmp(newname,v->v_readedlistdimension) ) 150 {151 strcpy(newname,""); 161 162 if ( !strcasecmp(newname,"") ) strcat(newname,v->v_readedlistdimension); 163 152 164 strcpy(newname,ChangeTheInitalvaluebyTabvarsName 153 (v->v_readedlistdimension,List_Common_Var,0)); 165 (newname,List_Common_Var,0)); 166 167 if ( !strcasecmp(newname,"") ) strcat(newname,v->v_readedlistdimension); 168 169 strcpy(newname,ChangeTheInitalvaluebyTabvarsName 170 (newname,List_ModuleUsed_Var,0)); 154 171 if ( !strcasecmp(newname,"") ) strcat(newname,v->v_readedlistdimension); 155 } 156 if ( !strcasecmp(newname,v->v_readedlistdimension) ) 157 { 158 strcpy(newname,""); 159 /* la liste des use de cette subroutine */ 160 strcpy(newname,ChangeTheInitalvaluebyTabvarsName 161 (v->v_readedlistdimension,List_ModuleUsed_Var,0)); 162 if ( !strcasecmp(newname,"") ) strcat(newname,v->v_readedlistdimension); 163 } 172 164 173 Save_Length(newname,47); 165 174 strcat(ligne,newname); … … 190 199 /* */ 191 200 /******************************************************************************/ 192 void writevardeclaration (listvar * var_record, FILE *fileout, int value )201 void writevardeclaration (listvar * var_record, FILE *fileout, int value, int visibility) 193 202 { 194 203 FILE *filecommon; … … 199 208 filecommon=fileout; 200 209 newvar = var_record; 201 210 202 211 if ( newvar->var->v_save == 0 || inmodulemeet == 0 ) 203 212 { 204 213 v = newvar->var; 205 WriteBeginDeclaration(v,ligne); 214 215 WriteBeginDeclaration(v,ligne,visibility); 216 206 217 if ( v->v_nbdim == 0 ) WriteScalarDeclaration(v,ligne); 207 218 else WriteTableDeclaration(v,ligne,value); … … 212 223 strcat(ligne,v->v_initialvalue); 213 224 } 225 214 226 tofich (filecommon, ligne,1); 215 227 } 216 228 Save_Length(ligne,45); 229 217 230 } 218 231 … … 227 240 if ( !strcasecmp(parcours->var->v_subroutinename,subroutinename) ) 228 241 { 229 writevardeclaration(parcours,fortranout,0 );242 writevardeclaration(parcours,fortranout,0,1); 230 243 } 231 244 parcours = parcours -> suiv; … … 233 246 } 234 247 235 void WriteFunctionDeclaration( )248 void WriteFunctionDeclaration(int value) 236 249 { 237 250 listvar *parcours; … … 244 257 ) 245 258 { 246 writevardeclaration(parcours,fortranout, 0);259 writevardeclaration(parcours,fortranout,value,1); 247 260 } 248 261 parcours = parcours -> suiv; … … 259 272 if ( !strcasecmp(parcours->var->v_subroutinename,subroutinename) && 260 273 parcours->var->v_save == 0 && 261 parcours->var->v_allocatable == 0&&274 (parcours->var->v_allocatable == 0 || !strcasecmp(parcours->var->v_typevar,"type")) && 262 275 parcours->var->v_pointerdeclare == 0 && 263 276 parcours->var->v_VariableIsParameter == 0 && … … 265 278 ) 266 279 { 267 writevardeclaration(parcours,fortranout,value); 280 writevardeclaration(parcours,fortranout,value,1); 281 268 282 } 269 283 else if ( !strcasecmp(parcours->var->v_subroutinename,subroutinename) && … … 273 287 ) 274 288 { 275 writevardeclaration(parcours,fortranout,value); 289 writevardeclaration(parcours,fortranout,value,1); 290 276 291 } 277 292 parcours = parcours -> suiv; … … 303 318 { 304 319 position = position + 1; 305 writevardeclaration(newvar,fortranout,0); 320 321 writevardeclaration(newvar,fortranout,0,1); 306 322 neededparameter = writedeclarationintoamr(List_Parameter_Var, 307 323 paramtoamr,newvar->var,newvar->var->v_subroutinename, … … 331 347 { 332 348 position = position + 1; 333 writevardeclaration(newvar,fortranout,1); 349 350 writevardeclaration(newvar,fortranout,1,1); 334 351 /* */ 335 352 newvar = List_SubroutineArgument_Var; … … 346 363 ) 347 364 { 348 writevardeclaration(newvar,fortranout,1); 365 366 writevardeclaration(newvar,fortranout,1,1); 349 367 } 350 368 newvar = newvar -> suiv; … … 359 377 ) 360 378 { 361 writevardeclaration(newvar,fortranout,1 );379 writevardeclaration(newvar,fortranout,1,1); 362 380 } 363 381 newvar = newvar -> suiv; … … 454 472 changeval = 0; 455 473 v = newvar->var; 456 if ( v->v_allocatable == 1 )474 if ( v->v_allocatable == 1 && strcasecmp(v->v_typevar,"type") ) 457 475 { 458 476 changeval = 1; 459 477 v->v_allocatable = 0; 460 478 } 461 WriteBeginDeclaration(v,ligne );479 WriteBeginDeclaration(v,ligne,1); 462 480 if ( v->v_nbdim == 0 ) WriteScalarDeclaration(v,ligne); 463 481 else WriteTableDeclaration(v,ligne,1); … … 509 527 if ( newvar->var->v_nbdim == 0 && 510 528 !strcasecmp(newvar->var->v_subroutinename,subroutinename) && 511 newvar->var->v_allocatable == 0&&529 (newvar->var->v_allocatable == 0 || !strcasecmp(newvar->var->v_typevar,"type")) && 512 530 newvar->var->v_pointerdeclare == 0 513 531 ) … … 515 533 v = newvar->var; 516 534 517 WriteBeginDeclaration(v,ligne );535 WriteBeginDeclaration(v,ligne,1); 518 536 WriteScalarDeclaration(v,ligne); 519 537 tofich (fileout, ligne,1); … … 549 567 if ( newvar->var->v_nbdim != 0 && 550 568 !strcasecmp(newvar->var->v_subroutinename,subroutinename) && 551 newvar->var->v_allocatable == 0&&569 (newvar->var->v_allocatable == 0 || !strcasecmp(newvar->var->v_typevar,"type")) && 552 570 newvar->var->v_pointerdeclare == 0 553 571 ) … … 555 573 changeval = 0; 556 574 v = newvar->var; 557 if ( v->v_allocatable == 1 575 if ( v->v_allocatable == 1) 558 576 { 577 if (strcasecmp(v->v_typevar,"type")) 578 { 559 579 changeval = 1; 560 580 v->v_allocatable = 0; 581 } 582 else 583 { 584 changeval = 2; 585 v->v_allocatable = 0; 586 v->v_pointerdeclare = 1; 587 } 561 588 } 562 WriteBeginDeclaration(v,ligne); 589 590 WriteBeginDeclaration(v,ligne,1); 563 591 WriteTableDeclaration(v,ligne,1); 564 592 tofich (fileout, ligne,1); 565 if ( changeval == 1 ) v->v_allocatable = 1; 593 if ( changeval >= 1 ) v->v_allocatable = 1; 594 if ( changeval == 2 ) v->v_pointerdeclare = 0; 566 595 } 567 596 newvar = newvar->suiv; … … 569 598 Save_Length(ligne,45); 570 599 } 600 601 602 void ReWriteDeclarationAndAddTosubroutine_01(listvar *listdecl) 603 { 604 listvar *parcours; 605 listvar *parcours2; 606 listvar *parcours3; 607 int out; 608 609 if (insubroutinedeclare == 1) 610 { 611 parcours = listdecl; 612 while (parcours) 613 { 614 /* 615 parcours2 = List_SubroutineArgument_Var; 616 out = 0; 617 while (parcours2 && out == 0) 618 { 619 if (!strcasecmp(parcours2->var->v_subroutinename,subroutinename) && !strcasecmp(parcours2->var->v_nomvar,parcours->var->v_nomvar)) 620 { 621 out = 1; 622 } 623 parcours2 = parcours2->suiv; 624 } 625 */ 626 out = LookingForVariableInList(List_SubroutineArgument_Var,parcours->var); 627 if (out == 0) out = VariableIsInListCommon(parcours,List_Common_Var); 628 if (out == 0) out = LookingForVariableInList(List_Parameter_Var,parcours->var); 629 if (out == 0) out = LookingForVariableInList(List_FunctionType_Var,parcours->var); 630 631 /* 632 parcours2 = List_Common_Var; 633 while (parcours2 && out == 0) 634 { 635 if (!strcasecmp(parcours2->var->v_commoninfile,mainfile) && !strcasecmp(parcours2->var->v_nomvar,parcours->var->v_nomvar)) 636 { 637 out = 1; 638 } 639 parcours2 = parcours2->suiv; 640 } 641 */ 642 //printf("nom = %s %d %d %d\n",parcours->var->v_nomvar,out,VariableIsParameter,SaveDeclare); 643 if (firstpass == 0 && out == 0 && VariableIsParameter == 0 && SaveDeclare == 0) 644 645 { 646 writevardeclaration(parcours,fortranout,1,1); 647 } 648 //if (firstpass == 1 && out == 1) 649 if (firstpass == 1) 650 { 651 if (VariableIsParameter == 0 && SaveDeclare == 0) 652 { 653 List_SubroutineDeclaration_Var = insertvar(List_SubroutineDeclaration_Var,parcours->var); 654 } 655 } 656 parcours = parcours->suiv; 657 } 658 } 659 }
Note: See TracChangeset
for help on using the changeset viewer.