Beispiel #1
0
void DoNetList(FILE *pFout, BomKeyNode *pBkn, ListNode *pNetList){
  KeyValNode *kvn;
  MapNode *mn;
  ListNode *ln;
  int c,d;
  const char *net_in;
  char net_out[32];
  for(c = 0; c < pNetList->count(); c++){
    mn = pNetList->getNode(c);
    if(mn->nodeType() == 2){
      kvn = (KeyValNode*)mn;
      mn = kvn->value();
      if(mn->nodeType() == 3 && mn != pNetList){
	net_in = kvn->key();
	if(net_in[0] != '*'){
	  strcpy(net_out, net_in);
	}else{
	  sprintf(net_out, "unnamed_%s", &(net_in[1]));
	}
	fprintf(pFout, "%s\t", net_out);
	
	ln = (ListNode *) mn;
	for(d = 0; d < ln->count(); d++){
	  fprintf(pFout, "%s",pBkn->printRef(ln->getNode(d)));
	}
	fprintf(pFout, "\n");
      }
    }
  }  
}
Beispiel #2
0
void SelectCommand::addNode(Modifier *pMod, MapNode *pNode){
  TreeMarkProc *tm;
  TrimProc *tp;
  MapNode *tmp;
  tm = new TreeMarkProc(pNode);
  tm->Mark();

  //ProcTree(tm, pNode);
  
  //  printf("Setting pins\n");
  //  printNode(lp->getList(), 0);
  tmp = pNode;

  while(tmp != NULL && tmp->nodeType() != 3){
    tmp = tmp->getParent();
  }
  if(tmp != NULL){
    tp = new TrimProc(pNode);
    TraceTree(tp, tmp);
    //    printNode(tmp, 0);
    delete tp;
  }

  tm->UnMark();
  delete tm;
}
Beispiel #3
0
void PcbProcess(const char *pCircuit){
  FILE *net;
  FILE *pcb;
  BomKeyNode *bkn;
  ListNode *ln;
  MapNode *mn;
  MapNode *tmp;
  char netname[32];
  char pcbname[32];
  sprintf(netname, "%s.net", pCircuit);
  sprintf(pcbname, "%s.pcb", pCircuit);
  net = fopen(netname, "w");
  pcb = fopen(pcbname, "w");

  mn = gVxm.symbols->getNode(pCircuit);
  if(mn == NULL){
    printf("Symbol not found\n");
    return;
  }
  tmp = FindNode(mn, "bom");
  if(tmp == NULL){
    printf("Not a circuit\n");
    return;
  }
  bkn = dynamic_cast<BomKeyNode*>(tmp);
  if(bkn == NULL){
    printf("Invalid bom\n");
    return;
  }
  tmp = FindNode(mn, "netlist");
  if(tmp == NULL || tmp->nodeType() != 2){
    printf("Invalid netlist\n");
    return;
  }
  tmp = GET_KEY_VALUE(tmp);
  if(tmp->nodeType() != 3){
    printf("Invalid netlist ListNode\n");
    return;
  }
  ln = (ListNode*) tmp;
  DoNetList(net, bkn, ln);
  bkn->fprintPcb(pcb);
  fclose(net);
  fclose(pcb);
}
Beispiel #4
0
void BomKeyNode::addComponent(MapNode *pNode) {
    MapNode *mn;
    KeyValNode *kvn;
    StringNode *svn;
    mn = FindNode(pNode, "pid");
    if(mn->nodeType() == 2) {
        kvn = (KeyValNode *) mn;
        svn = (StringNode*) kvn->value();
        //printf("Bom: %s\n", svn->value());
        buildItem(svn->value(),(KeyValNode*) pNode);
    }
    mList->append(pNode);
}