49 #include <Xyce_config.h>
76 std::vector<DeviceModel *> models;
80 << std::endl << section_divider << std::endl
81 <<
"Number of " << device.getName() <<
" models: " << models.size() << std::endl;
84 for (std::vector<DeviceModel *>::const_iterator it = models.begin(); it != models.end(); ++it, ++i)
86 os << i <<
": name = " << (*it)->getName() <<
" type = " << (*it)->getType() <<
" level = " << (*it)->getLevel() << std::endl;
88 (*it)->printOutInstances(os);
90 os << section_divider << std::endl;
95 typedef std::map<std::string, std::pair<DeviceModel *, std::vector<DeviceInstance *> > >
UglyMap;
106 std::pair<UglyMap::iterator, bool> result =
modelMap_.insert(UglyMap::value_type(model->
getName(), std::make_pair(model, std::vector<DeviceInstance *>())));
110 if ((*result.first).second.second.empty())
114 std::sort((*result.first).second.second.begin(), (*result.first).second.second.end(),
DeviceEntityCmp());
137 static const int stdWidth = 15;
143 device.forEachModel(op);
146 <<
"Number of " << device.getName() <<
" models: " << model_map.size() << std::endl
147 << std::setw(stdWidth) <<
"name ";
149 if (!model_map.empty())
151 int column_count = 1;
152 for (UglyMap::const_iterator it_model = model_map.begin(); it_model != model_map.end(); ++it_model, ++column_count)
154 if (column_count%8 == 0)
156 os << std::setw(stdWidth) << (*it_model).first ;
160 os << std::setw(stdWidth) <<
"type ";
162 for (UglyMap::const_iterator it_model = model_map.begin(); it_model != model_map.end(); ++it_model, ++column_count)
164 if (column_count%8 == 0)
166 os << std::setw(stdWidth) << (*it_model).second.first->getType() ;
170 os << std::setw(stdWidth) <<
"level ";
172 for (UglyMap::const_iterator it_model = model_map.begin(); it_model != model_map.end(); ++it_model, ++column_count)
174 if (column_count%8 == 0)
176 os << std::setw(stdWidth) << (*it_model).second.first->getLevel() ;
180 const ParameterMap &parMap = (*model_map.begin()).second.first->getParameterMap();
183 for (ParameterMap::const_iterator it_parameter = parMap.begin(); it_parameter != parMap.end(); ++it_parameter)
185 for (UglyMap::const_iterator it_model = model_map.begin(); it_model != model_map.end(); ++it_model, ++column_count)
187 if (it_model == model_map.begin())
189 if (column_count%8 == 0)
191 os << std::setw(stdWidth) << (*it_parameter).first;
194 os << std::setw(stdWidth);
195 printParameter(os, *(*it_model).second.first, (*it_parameter).first, *(*it_parameter).second);
202 os <<
"Number of " << device.getName() <<
" instances: " << op.
deviceCount_ << std::endl
203 << std::setw(stdWidth) <<
"name ";
206 for (UglyMap::const_iterator it_model = model_map.begin(); it_model != model_map.end(); ++it_model)
208 const std::vector<DeviceInstance *> &instance_list = (*it_model).second.second;
210 for (std::vector<DeviceInstance *>::const_iterator it_instance = instance_list.begin(); it_instance != instance_list.end(); ++it_instance, ++column_count)
212 if (column_count%8 == 0)
214 os << std::setw(stdWidth) << (*it_instance)->getName();
218 << std::setw(stdWidth) <<
"model ";
221 const DeviceInstance &first_instance = *(*model_map.begin()).second.second.front();
224 for (UglyMap::const_iterator it_model = model_map.begin(); it_model != model_map.end(); ++it_model)
226 const DeviceModel &model = *(*it_model).second.first;
227 const std::vector<DeviceInstance *> &instance_list = (*it_model).second.second;
229 if ( !instance_list.empty () ) {
230 for (std::vector<DeviceInstance *>::const_iterator it_instance = instance_list.begin(); it_instance != instance_list.end(); ++it_instance, ++column_count)
232 if (column_count%8 == 0)
234 os << std::setw(stdWidth) << model.
getName();
243 for (ParameterMap::const_iterator it_parameter = parameter_map.begin() ; it_parameter != parameter_map.end(); ++it_parameter)
245 os << std::setw(stdWidth) << it_parameter->first;
248 for (UglyMap::const_iterator it_model = model_map.begin(); it_model != model_map.end(); ++it_model)
250 const DeviceModel &model = *(*it_model).second.first;
251 const std::vector<DeviceInstance *> &instance_list = (*it_model).second.second;
253 if ( !instance_list.empty () ) {
254 for (std::vector<DeviceInstance *>::const_iterator it_instance = instance_list.begin(); it_instance != instance_list.end(); ++it_instance, ++column_count)
256 if (column_count%8 == 0)
258 os << std::setw(stdWidth);
259 printParameter(os, *(*it_instance), (*it_parameter).first, *(*it_parameter).second);