Changeset 575 for CMT/HEAD


Ignore:
Timestamp:
May 4, 2011, 5:46:28 PM (13 years ago)
Author:
rybkin
Message:

See C.L. 457

Location:
CMT/HEAD
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • CMT/HEAD/ChangeLog

    r574 r575  
     12011-05-04    <rybkin@lal.in2p3.fr> 457
     2
     3        * source/cmt_use.h: In class Use, declare function set_auto_imports_state
     4        with modified signature to follow policy similar to that of function
     5        set_auto_imports
     6        * source/cmt_use.cxx: In class Use, in function set_auto_imports_state,
     7        implement policy similar to that of function set_auto_imports
     8        * source/cmt_parser.cxx: In class StandardMacroBuilder, in function
     9        fill_for_all_constituents, make use of set_auto_imports_state with modified
     10        signature
     11       
    1122011-05-02    <rybkin@lal.in2p3.fr> 456
    213
  • CMT/HEAD/source/cmt_parser.cxx

    r568 r575  
    90239023                if (Cmt::get_debug ())
    90249024                  {
    9025                     cout << constituent.name  << " needs imports " << import
     9025                    cout << constituent.name  << " has import request " << import
    90269026                         << " i=" << use_index << " package="
    90279027                         << u->get_package()->get_name()
     
    90579057          }
    90589058
     9059        /*
    90599060        cmt_map <Use*, bool> visited;
    90609061        static bool yes (true);
    90619062        visited.add (&(Use::current()), yes);
    90629063        Use::set_auto_imports_state (uses, auto_imports_states, visited);
    9063        
    9064         if (Cmt::get_debug ())
    9065           {
    9066             cout << constituent.name  << " has imports " << endl;
    9067           }
    9068        
    9069        
     9064        */     
     9065        Use::set_auto_imports_state (uses, auto_imports_states);
     9066
    90709067        /**
    90719068         *   Find all newly exposed packages and precompute this list inside
     
    90909087            Package* p = u->get_package ();
    90919088            if (p->is_cmt ()) continue;
    9092            
    9093             if (Cmt::get_debug ())
    9094               {
    9095                 cout << constituent.name  << " has import " << p->get_name () << endl;
    9096               }
    9097            
     9089
    90989090            imports.push_back (u);
    90999091          }
    91009092       
     9093        if (Cmt::get_debug ())
     9094          {
     9095            if (imports.size () == 0)
     9096              {
     9097                cout << constituent.name  << " needs no imports" << endl;
     9098              }
     9099            else
     9100              {
     9101                cout << constituent.name  << " has imports" << endl;
     9102                for (int i = 0; i < imports.size (); i++)
     9103                  {
     9104                    cout << constituent.name  << " has import "
     9105                         << imports[i]->get_package_name () << endl;
     9106                  }
     9107              }
     9108          }
     9109
    91019110        /**
    91029111         *  Only for linkopts we take care of the order. This means
  • CMT/HEAD/source/cmt_use.cxx

    r574 r575  
    12511251//----------------------------------------------------------
    12521252void Use::set_auto_imports_state (const Use::UsePtrVector& uses,
     1253                                  cmt_vector<bool>& auto_imports_states)
     1254{
     1255  if (0 == uses.size ()) return;
     1256
     1257  static int level (0);
     1258  if (level == 0)
     1259    {
     1260      unselect_all ();
     1261      Use::current().select ();
     1262    }
     1263
     1264  if (Cmt::get_debug ())
     1265    {
     1266      cout << "Use::set_auto_imports_state>|";
     1267      for (int i = level; i > 0; i--) cout << "-";
     1268      for (int i = 0; i < uses.size (); i++)
     1269      //for (int i = uses.size () - 1; i >= 0; i--)
     1270        {
     1271          cout << " " << uses[i]->get_package_name ()
     1272               << "(" << uses[i]->auto_imports << ")";
     1273        }
     1274      cout << ">" << endl;
     1275    }
     1276
     1277  for (int i = 0; i < uses.size (); i++)
     1278  //for (int i = uses.size () - 1; i >= 0; i--)
     1279    {
     1280      const Use* use = uses[i];
     1281      if (!auto_imports_states[use->m_index])
     1282        auto_imports_states[use->m_index] = true;
     1283    }
     1284
     1285  Use::UsePtrVector subuses;
     1286  for (int k = 0; k < uses.size (); k++)
     1287  //for (int i = uses.size () - 1; i >= 0; i--)
     1288    {
     1289      Use* use = uses[k];
     1290      if (use->is_selected ()) continue;
     1291      use->select ();
     1292      for (int i = 0; i < use->sub_uses.size (); i++)
     1293        {
     1294          if (use->sub_uses[i]->m_index >= 0 && !use->sub_uses[i]->discarded)
     1295            {
     1296              if (use->sub_use_auto_imports[i] != Off
     1297                  && !use->sub_uses[i]->is_selected ())
     1298                {
     1299                  subuses.push_back (use->sub_uses[i]);
     1300                }
     1301            }
     1302          else
     1303            {
     1304              if (Cmt::get_debug ())
     1305                {
     1306                  cout << "Use::set_auto_imports_state> " << use->get_package_name ()
     1307                       << " -> sub_use " << use->sub_uses[i]->get_package_name ()
     1308                       << "[" << use->sub_uses[i] << ", discarded="
     1309                       << use->sub_uses[i]->discarded << ", m_index="
     1310                       << use->sub_uses[i]->m_index << " : invalid]" << endl;
     1311                }
     1312              Use* au (find_valid (use->sub_uses[i]->get_package_name ()));
     1313              if (au)
     1314                {
     1315                  if (Cmt::get_debug ())
     1316                    {
     1317                      cout << "Use::set_auto_imports_state> " << use->get_package_name ()
     1318                           << " -> sub_use " << au->get_package_name ()
     1319                           << "[" << au << ", discarded="
     1320                           << au->discarded << ", m_index="
     1321                           << au->m_index << " : valid]" << endl;
     1322                    }
     1323                  if (use->sub_use_auto_imports[i] != Off
     1324                      && !au->is_selected ())
     1325                    {
     1326                      subuses.push_back (au);
     1327                    }
     1328                }
     1329              else
     1330                {
     1331                  use->sub_uses[i]->select ();
     1332                }
     1333            }
     1334        }
     1335    }
     1336
     1337  level++;
     1338  Use::set_auto_imports_state (subuses, auto_imports_states);
     1339  level--;
     1340
     1341  if (Cmt::get_debug ())
     1342    {
     1343      cout << "Use::set_auto_imports_state><";
     1344      for (int i = level; i > 0; i--) cout << "-";
     1345      for (int i = 0; i < uses.size (); i++)
     1346      //for (int i = uses.size () - 1; i >= 0; i--)
     1347        {
     1348          cout << " " << uses[i]->get_package_name ()
     1349               << "(" << (auto_imports_states[uses[i]->m_index] ? "+" : "-") << ")";
     1350        }
     1351      cout << "|" << endl;
     1352    }
     1353
     1354  return;
     1355}
     1356
     1357//----------------------------------------------------------
     1358void Use::set_auto_imports_state (const Use::UsePtrVector& uses,
    12531359                                  cmt_vector<bool>& auto_imports_states,
    12541360                                  cmt_map <Use*, bool>& visited)
  • CMT/HEAD/source/cmt_use.h

    r572 r575  
    3535  //static void set_auto_imports_state (int use_index,
    3636  //cmt_vector<bool>& auto_imports_states);
     37  static void set_auto_imports_state (const Use::UsePtrVector& uses,
     38                                      cmt_vector<bool>& auto_imports_states);
    3739  static void set_auto_imports_state (const Use::UsePtrVector& uses,
    3840                                      cmt_vector<bool>& auto_imports_states,
Note: See TracChangeset for help on using the changeset viewer.