- Timestamp:
- Apr 29, 2011, 5:43:24 PM (13 years ago)
- Location:
- CMT/HEAD
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
CMT/HEAD/ChangeLog
r571 r572 1 2011-04-29 <rybkin@lal.in2p3.fr> 455 2 3 * source/cmt_use.h: In class Use, declare function show_sub_uses with 4 modified signature to show, in more detail, origin of uses auto_imports 5 state 6 * source/cmt_use.cxx: In class Use, in function set_auto_imports, 7 implement policy where use has Off != auto_imports, if it is (direct) 8 sub-use without -no_auto_imports of either current use or sub-use with 9 Off != auto_imports, implement function show_sub_uses with modified 10 signature, in function show_all, make use of show_sub_uses with modified 11 signature 12 1 13 2011-04-25 <rybkin@lal.in2p3.fr> 454 2 14 -
CMT/HEAD/source/cmt_use.cxx
r571 r572 521 521 use = &(current ()); 522 522 use->unselect (); 523 if (!Cmt::get_quiet () && mode != Xml) use->show_sub_uses ("", skip_discarded, out); 523 cmt_map <Use*, bool> visited; 524 if (!Cmt::get_quiet () && mode != Xml) use->show_sub_uses (visited, "", use->auto_imports, skip_discarded, out); 524 525 525 526 if (uses.size () > 0) … … 3962 3963 static int level (-1); 3963 3964 level++; 3965 /* 3964 3966 if (level == 0) 3965 3967 { … … 3967 3969 selected = true; 3968 3970 } 3969 3970 if (visited.has (this) && 3971 (1 != level || selected)) 3972 // revisit sub-uses of current (level == 0) use 3973 // encountered in its requirements file for the first time (selected == false) 3974 // to ensure their auto_imports state takes precedence 3975 { 3976 level--; 3977 return; 3971 */ 3972 switch (context_state) 3973 { 3974 case Unspecified: 3975 case On: 3976 if (!visited.has (this) || 3977 // revisit uses that may be turned into Off != auto_imports 3978 // via some other use(s) 3979 // policy being use has Off != auto_imports, 3980 // if it is (direct) sub-use without -no_auto_imports of 3981 // either current use or sub-use with Off != auto_imports 3982 (Off == auto_imports && Off != specified_state) 3983 ) 3984 { 3985 auto_imports = specified_state; 3986 context_state = UseContext::mask_auto_imports (context_state, auto_imports); 3987 } 3988 else 3989 { 3990 level--; 3991 return; 3992 } 3993 break; 3994 case Off: 3995 if (visited.has (this)) 3996 { 3997 level--; 3998 return; 3999 } 4000 auto_imports = context_state; 4001 break; 3978 4002 } 3979 4003 … … 3989 4013 static bool yes (true); 3990 4014 visited.add (this, yes); 3991 if (1 == level) selected = true; 3992 // if (auto_imports == context_state) return; 3993 3994 //State old_state = auto_imports; 3995 3996 //auto_imports = context_state; 3997 3998 switch (context_state) 3999 { 4000 case Unspecified: 4001 case On: 4002 //if (auto_imports == specified_state) return; 4003 auto_imports = specified_state; 4004 /* 4005 switch (auto_imports) 4006 { 4007 case Unspecified: 4008 break; 4009 case Off: 4010 context_state = Off; 4011 break; 4012 case On: 4013 context_state = On; 4014 break; 4015 } 4016 */ 4017 context_state = UseContext::mask_auto_imports (context_state, auto_imports); 4018 break; 4019 case Off: 4020 //if (auto_imports == context_state) return; 4021 auto_imports = context_state; 4022 break; 4023 } 4015 4024 4016 cmt_string s; 4025 4017 static const cmt_string state_text[] = {"Unspecified", "Off", "On"}; … … 4084 4076 { 4085 4077 visited.add (sub_uses[i], yes); 4086 sub_uses[i]->select ();4087 4078 } 4088 4079 } … … 4494 4485 4495 4486 //---------------------------------------------------------- 4496 void Use::show_sub_uses (const cmt_string& request, bool skip_discarded, ostream& out) 4497 //void Use::show_sub_uses (const cmt_string& request, bool skip_discarded) 4498 { 4499 Use* current = &(Use::current ()); 4500 int n; 4501 Use* use; 4502 static int level = 0; 4503 4487 void Use::show_sub_uses (cmt_map <Use*, bool>& visited, 4488 const cmt_string& request, State specified_state, 4489 bool skip_discarded, ostream& out) 4490 //void Use::show_sub_uses (const cmt_string& request, bool skip_discarded, ostream& out) 4491 { 4504 4492 if (skip_discarded && discarded) return; 4505 4493 if (m_hidden) return; 4506 4494 4495 Use* current = &(Use::current ()); 4496 static State context_state (auto_imports); 4497 static int level (-1); 4498 level++; 4499 4500 if (level == 0) 4501 { 4502 unselect_all (); 4503 selected = true; 4504 } 4505 4506 State saved_context_state (context_state); 4507 switch (context_state) 4508 { 4509 case Unspecified: 4510 case On: 4511 if (!visited.has (this) 4512 || level == 1) 4513 // show all direct sub-uses of current use 4514 { 4515 context_state = UseContext::mask_auto_imports (context_state, specified_state); 4516 } 4517 else if (Off != auto_imports && Off != specified_state 4518 // else if (specified_state == auto_imports && Off != specified_state 4519 && !selected) 4520 // show this sub-use as it may have been used to make Off != auto_imports 4521 // and is sufficient in order to consider it Off != auto_imports, 4522 // mark selected not to consider use again and thus avoid looping this way 4523 { 4524 selected = true; 4525 // auto_imports = specified_state; 4526 context_state = UseContext::mask_auto_imports (context_state, specified_state); 4527 } 4528 else 4529 { 4530 level--; 4531 return; 4532 } 4533 break; 4534 case Off: 4535 if (visited.has (this) 4536 ) 4537 { 4538 level--; 4539 return; 4540 } 4541 break; 4542 } 4543 4507 4544 if (level > 0) 4508 4545 { 4509 4546 out << "# "; 4510 for ( n = 0; n < (level-1); n++) out << " ";4547 for (int n = 0; n < (level-1); n++) out << " "; 4511 4548 4512 4549 if (request == "") … … 4536 4573 else if (initial_scope != ScopePublic) out << " (private)"; 4537 4574 4538 if (auto_imports == Off) out << " (no_auto_imports)"; 4575 if (specified_state == Off) out << " (no_auto_imports)"; 4576 // if (auto_imports == Off) out << " (no_auto_imports)"; 4539 4577 4540 4578 if (structuring_style == without_version_directory) out << " (no_version_directory)"; 4541 // if (style == no_version_style) out << " (no_version_directory)";4542 4579 4543 4580 if (m_has_native_version) … … 4557 4594 } 4558 4595 4559 if (selected) return; 4560 selected = true; 4561 4562 level++; 4596 static bool yes (true); 4597 visited.add (this, yes); 4598 4563 4599 for (int i = 0; i < sub_uses.size (); i++) 4564 4600 { 4565 //use = sub_uses[n];4566 4601 //if (use == 0) continue; 4602 Use* use; 4567 4603 if (sub_uses[i]->m_index >= 0 && !sub_uses[i]->discarded) 4568 4604 { … … 4578 4614 else 4579 4615 { 4616 visited.add (sub_uses[i], yes); 4580 4617 continue; 4581 4618 } … … 4585 4622 4586 4623 ScopeType saved_scope = use->initial_scope; 4587 State saved_state = use->auto_imports;4624 // State saved_state = use->auto_imports; 4588 4625 4589 4626 use->initial_scope = sub_use_scopes[i]; 4590 use->auto_imports = sub_use_auto_imports[i]; 4591 4592 use->show_sub_uses (request, skip_discarded, out); 4627 // use->auto_imports = sub_use_auto_imports[i]; 4628 4629 use->show_sub_uses (visited, request, sub_use_auto_imports[i], skip_discarded, out); 4630 //use->show_sub_uses (request, skip_discarded, out); 4593 4631 4594 4632 use->initial_scope = saved_scope; 4595 use->auto_imports = saved_state;4633 // use->auto_imports = saved_state; 4596 4634 } 4597 4635 level--; 4636 4637 context_state = saved_context_state; 4598 4638 } 4599 4639 -
CMT/HEAD/source/cmt_use.h
r566 r572 198 198 bool is_client (const cmt_string& package, 199 199 const cmt_string& version); 200 void show_sub_uses (const cmt_string& request, bool skip_discarded = false, 201 ostream& out = cout); 200 void show_sub_uses (cmt_map <Use*, bool>& visited, 201 const cmt_string& request, State specified_state, 202 bool skip_discarded = false, ostream& out = cout); 202 203 // void show_sub_uses (const cmt_string& request, bool skip_discarded = false); 203 204 bool select_alternate ();
Note: See TracChangeset
for help on using the changeset viewer.