本文整理汇总了C++中Wire类的典型用法代码示例。如果您正苦于以下问题:C++ Wire类的具体用法?C++ Wire怎么用?C++ Wire使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Wire类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: QGraphicsPathItem
Wire::Wire(Wire& ref)
: QGraphicsPathItem(ref.parentItem(), ref.scene())
{
setSource(ref.source());
setDestination(ref.destination());
setId(ref.id());
}
示例2: simulate_test
void Circuit::print_testability()
{
simulate_test();
int num_sites = 0;
int num_found = 0;
for (int i = 0; i < linsts.size(); ++i) {
Wire* owire = linsts[i]->get_output(0)->get_wire();
if (owire->is_output()) {
continue;
}
if (linsts[i]->is_visited()) {
continue;
}
num_sites += 2;
if (observable_signal(linsts[i], STUCK1)) {
++num_found;
}
if (observable_signal(linsts[i], STUCK0)) {
++num_found;
}
}
cout << "Testability of candidate gates: " <<
double(num_found) / double(num_sites) * 100 << "; Num remaining: "
<< num_sites - num_found << "; Num faults: " << num_sites << endl;
}
示例3: __addDdWireB
void BddBuilder::__buildWireListB(BddBuilder * pA, Wire * pWireHead){
Wire * pWireHorse;
DdWire * pNewWire;
DdWire * pInputWireHorse;
__inputWireCnt = 0;
__outputWireCnt = 0;
for(pWireHorse=pWireHead ; pWireHorse ; pWireHorse=pWireHorse->get_next()){
pNewWire = __addDdWireB(pA, pWireHorse);
switch(pWireHorse->get_value()){
case -1: break;
case 0: pNewWire->setDdNode(__GND); break;
case 1: pNewWire->setDdNode(__Vcc); break;
default: break;
}
}
__pddInputNodes = new DdNode*[__inputWireCnt];
__ppInputNodesNames = new char*[__inputWireCnt];
int i=0;
pInputWireHorse = __pddInputWireHead->getInputListNext()->getInputListNext();
for( ; pInputWireHorse ; pInputWireHorse=pInputWireHorse->getInputListNext()){
__ppInputNodesNames[i] = pInputWireHorse->getName();
__pddInputNodes[i++] = pInputWireHorse->getDdNode();
}
}
示例4: items
/*---------------------------------------------------------------------------------------------
* (function: mouseReleaseEvent)
*-------------------------------------------------------------------------------------------*/
void ExplorerScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent)
{
if (line != 0 && myMode == InsertLine) {
QList<QGraphicsItem *> startItems = items(line->line().p1());
if (startItems.count() && startItems.first() == line)
startItems.removeFirst();
QList<QGraphicsItem *> endItems = items(line->line().p2());
if (endItems.count() && endItems.first() == line)
endItems.removeFirst();
removeItem(line);
delete line;
if (startItems.count() > 0 && endItems.count() > 0 &&
startItems.first()->type() == LogicUnit::Type &&
endItems.first()->type() == LogicUnit::Type &&
startItems.first() != endItems.first()) {
LogicUnit *startItem =
qgraphicsitem_cast<LogicUnit *>(startItems.first());
LogicUnit *endItem =
qgraphicsitem_cast<LogicUnit *>(endItems.first());
Wire *wire = new Wire(startItem, endItem);
wire->setColor(myLineColor);
startItem->addConnection(wire);
endItem->addConnection(wire);
wire->setZValue(-1000.0);
addItem(wire);
wire->updatePosition();
}
}
line = 0;
QGraphicsScene::mouseReleaseEvent(mouseEvent);
}
示例5: spanResetWires
void spanResetWires(Pin* source){
if (source == NULL) return;
if (source->visited()) return;
source->visited(true);
Wire *wire = source->wire();
if (!wire) return;
//cout <<"spanResetWires wire: "<< wire->info()<<endl;
wire->voltage(false);
list<Pin *>pins = wire->pins();
list<Pin *>::iterator it;
for (it = pins.begin(); it != pins.end(); it++){
Pin *pin = (*it);
if (pin == source) continue;
pin->visited(true);
Element *element = pin->element();
if (element->type() == "switch"){
Switch *switc = (Switch *)element;
Pin *nextPin = switc->outPin(pin);
spanResetWires(nextPin);
}
else if (element->type() == "resistor"){
Resistor *resistor = (Resistor *)element;
Pin *nextPin = resistor->outPin(pin);
spanResetWires(nextPin);
}
else if (element->type() == "bridge"){
Bridge *bridge = (Bridge *)element;
Pin *nextPin = bridge->outPin(pin);
spanResetWires(nextPin);
}
}
}
示例6: gate
void Circuit::dumpCircuit()
{
cout<<endl;
cout<<" Gate Name\tGate Level"<<endl;
cout<<"========================================="<<endl;
for( unsigned i = 0; i< numGate(); ++i )
{
Gate g = gate( i );
cout<< " " << g.name() << '\t' ;
cout<< g.level() << '\t' ;
//cout<< bitset<32>( value[i] ) <<'\t';
cout<< endl;
}
cout<<endl;
cout<<" WireID\tWire Name\tType \tValue"<<endl;
cout<<"======================================================================================="<<endl;
for( unsigned j = 0; j< numWire(); ++j )
{
Wire w = wire( j );
cout<< " "<< j << "\t\t";
cout<< w.name() << "\t\t";
cout<< setiosflags(ios::left) << setw(8) << w.type() <<'\t';
if( w.type() != "UNUSED" )
cout<< bitset<32>( w.valueSet() )<<'\t';
else
cout<<"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"<<'\t';
cout<<endl;
}
}
示例7: __addDdWire
void BddBuilder::__buildWireList(Wire * pWireHead,char** input_sequence,int& total_input_band){
Wire * pWireHorse;
DdWire * pNewWire;
DdWire * pInputWireHorse;
__inputWireCnt = 0;
__outputWireCnt = 0;
for(pWireHorse=pWireHead ; pWireHorse ; pWireHorse=pWireHorse->get_next()){
pNewWire = __addDdWire(pWireHorse);
switch(pWireHorse->get_value()){
case -1: break;
case 0: pNewWire->setDdNode(__GND); break;
case 1: pNewWire->setDdNode(__Vcc); break;
default: break;
}
}
__pddInputNodes = new DdNode*[__inputWireCnt];
__ppInputNodesNames = new char*[__inputWireCnt];
int i=0;
pInputWireHorse=__pddInputWireHead->getInputListNext()->getInputListNext();
for( ; pInputWireHorse ; pInputWireHorse=pInputWireHorse->getInputListNext()){
__ppInputNodesNames[i] = pInputWireHorse->getName();
strcpy(input_sequence[i],__ppInputNodesNames[i]);
__pddInputNodes[i++] = pInputWireHorse->getDdNode();
}
total_input_band =i;
}
示例8: QPointF
void SchematicSceneBuilder::add_wire_component(
std::map<std::string, std::string> props
)
{
if(!discard(props)) {
Wire* item = static_cast<Wire*>(
SchematicScene::itemByType(SchematicScene::WireItemType));
bool ok;
double to_x = QString::fromStdString(props["to_x"]).toDouble(&ok);
if(!ok)
to_x = SchematicScene::GridStep;
double to_y = QString::fromStdString(props["to_y"]).toDouble(&ok);
if(!ok)
to_y = SchematicScene::GridStep;
bool conn = QString::fromStdString(props["conn"]).toInt(&ok);
if(!ok)
conn = false;
item->setWire(QLineF(QPointF(0, 0), QPointF(to_x, to_y)));
item->setConnectedJunctions(conn);
scene_->addSupportedItem(item, false);
grid_coordinate(item, props);
items_.push_back(item);
}
}
示例9: upWires
void upWires(list<Wire *>wires){
list<Wire *>::iterator it;
for (it = wires.begin(); it != wires.end(); it++){
Wire *wire = (*it);
wire->voltage(true);
//cout <<"upped wire: "<<wire->info()<<endl;
}
}
示例10: foreach
void SchematicSketchWidget::tidyWires() {
QList<Wire *> wires;
QList<Wire *> visited;
foreach (QGraphicsItem * item, scene()->selectedItems()) {
Wire * wire = dynamic_cast<Wire *>(item);
if (wire == NULL) continue;
if ((wire->getViewGeometry().wireFlags() & ViewGeometry::SchematicTraceFlag) == 0) continue;
if (visited.contains(wire)) continue;
}
示例11: setLineColor
/*---------------------------------------------------------------------------------------------
* (function: setLineColor)
*-------------------------------------------------------------------------------------------*/
void ExplorerScene::setLineColor(const QColor &color)
{
myLineColor = color;
if (isItemChange(Wire::Type)) {
Wire *item =
qgraphicsitem_cast<Wire *>(selectedItems().first());
item->setColor(myLineColor);
update();
}
}
示例12: commit_signatures
void Circuit::commit_signatures()
{
for (sym_map::iterator iter = sym_table.begin();
iter != sym_table.end(); ++iter) {
if (iter->second->get_type() == WIRE) {
Wire* wire = (Wire*)(iter->second);
wire->commit_signature();
}
}
}
示例13: console
Circuit::Circuit(Console *_console) : console(_console), terminals(1000),
outLedList(IO_COUNT), usedInput(IO_COUNT, false), usedOutput(IO_COUNT, false)
{
QList<QGraphicsItem *> items = console->items();
Wire *wire;
LED *led;
IC *ic;
int i, j;
for (auto it = items.begin(); it != items.end(); it++)
{
if ((wire = dynamic_cast<Wire *>(*it)))
{
i = _console->getOffset(wire->line().p1());
j = _console->getOffset(wire->line().p2());
if (terminals.join(i, j))
{
connections.push_back(Connection(i, j));
wire->markRedundent(false);
}
else
wire->markRedundent(true);
if (i >= OUTPUT_OFFSET)
usedOutput[i-OUTPUT_OFFSET] = true;
else if (i >= INPUT_OFFSET)
usedInput[i-INPUT_OFFSET] = true;
else if (j >= OUTPUT_OFFSET)
usedOutput[j-OUTPUT_OFFSET] = true;
else if (j >= INPUT_OFFSET)
usedInput[j-INPUT_OFFSET] = true;
}
else if ((led = dynamic_cast<LED *>(*it)))
{
if (led->col >= 0 && led->col < 10)
outLedList[led->col] = led;
else
ledList.push_back(led);
led->switchOn(POWER);
}
else if ((ic = dynamic_cast<IC *>(*it)))
{
icList.push_back(ic);
}
}
for (size_t i = 0; i < IO_COUNT; i++)
{
terminals.setstate(OUTPUT_OFFSET + i, State::undefined);
}
silentOutput = false;
#ifdef QT_DEBUG
//terminals.print();
#endif
}
示例14: Wire
Wire* Wire::Clone()
{
Wire* clone = new Wire();
list<ConnectionPoint *>::iterator it;
for( it = this->connectionPoints->begin(); it != this->connectionPoints->end(); it++ )
{
ConnectionPoint* cp = (*it)->Clone();
clone->Attach( cp );
}
return clone;
}
示例15: spanResistors
//void spanResistors(Pin *source, list<Wire *>wires){
void spanResistors(Pin *source, list<Resistor *>resistors){
//cout <<"entering spanResistors"<<endl;
/* 1. try to reach the end.
* 2. if end is reached, must go back and turn all wires on in the path
*/
if (source == NULL) return;
if (source->visited()) return;
source->visited(true);
//debug("spanResistors source pin: "<< source->fullName());
Wire *wire = source->wire();
if (!wire) return;
//debug("spanResistors wire: "<< wire->name());
list<Pin *>pins = wire->pins();
list<Pin *>::iterator it;
for (it = pins.begin(); it != pins.end(); it++){
Pin *pin = (*it);
if (pin == source) continue;
pin->visited(true);
//get element for source
Element *element = pin->element();
if (element->type() == "source"){
//cerr << "Encountered source "<< element->info() <<" while completing circuit."<<endl;
return;
}
else if (element->type() == "ground"){
//cout <<"ground reached: "<<endl;
//end reached.
activateResistors(resistors);
//upWires(wires);
}
else if (element->type() == "switch"){
Switch *switc = (Switch *)element;
if (!switc->isOn()) continue;
Pin *nextPin = switc->outPin(pin);
spanResistors(nextPin,resistors);
}
else if (element->type() == "resistor"){
Resistor *resistor = (Resistor *)element;
resistors.push_back(resistor);
Pin *nextPin = resistor->outPin(pin);
spanResistors(nextPin, resistors);
}
else if (element->type() == "bridge"){
Bridge *bridge = (Bridge *)element;
Pin *nextPin = bridge->outPin(pin);
spanResistors(nextPin, resistors);
}
}
}