PTRef Logic::insertTerm(SymRef sym, vec<PTRef>& terms, const char** msg) { PTRef res; if (terms.size() == 0) { if (term_store.cterm_map.contains(sym)) res = term_store.cterm_map[sym]; else { res = term_store.pta.alloc(sym, terms); term_store.cterm_map.insert(sym, res); } } else if (!isBooleanOperator(sym)) { if (sym_store[sym].commutes()) { sort(terms, LessThan_PTRef()); } if (!sym_store[sym].left_assoc() && !sym_store[sym].right_assoc() && !sym_store[sym].chainable() && !sym_store[sym].pairwise() && sym_store[sym].nargs() != terms.size_()) { *msg = e_argnum_mismatch; return PTRef_Undef; } PTLKey k; k.sym = sym; terms.copyTo(k.args); if (term_store.cplx_map.contains(k)) res = term_store.cplx_map[k]; else { res = term_store.pta.alloc(sym, terms); term_store.cplx_map.insert(k, res); } } else { // Boolean operator PTLKey k; k.sym = sym; terms.copyTo(k.args); if (term_store.bool_map.contains(k)) { res = term_store.bool_map[k]; #ifdef SIMPLIFY_DEBUG char* ts = printTerm(res); cerr << "duplicate: " << ts << endl; ::free(ts); #endif } else { res = term_store.pta.alloc(sym, terms); term_store.bool_map.insert(k, res); #ifdef SIMPLIFY_DEBUG char* ts = printTerm(res); cerr << "new: " << ts << endl; ::free(ts); #endif } } return res; }
boolean doTypeRow(struct hash *ra, char *org) { char *type = (char *)cvTermNormalized(hashMustFindVal(ra, CV_TYPE)); if (sameWord(type,CV_TOT)) return doTypeOfTermRow(ra,org); else if (sameWord(type,CV_TERM_CELL)) return doCellRow(ra,org); else if (sameWord(type,CV_TERM_ANTIBODY)) return doAntibodyRow(ra,org); else if (sameWord(type,CV_TERM_LAB)) { puts("<TR>"); char *term = printTerm(ra); printDescription(ra,"labInst",5); printSetting(ra,"labPiFull"); printSetting(ra,"grantPi"); printSetting(ra,"organism"); printLabel(ra,term); puts("</TR>"); } else if (sameWord(type,CV_TERM_GRANT)) { puts("<TR>"); char *term = printTerm(ra); printDescription(ra,"grantInst",2); printLabel(ra,term); puts("</TR>"); } else if (sameWord(type,CV_TERM_LOCALIZATION)) { puts("<TR>"); char *term = printTerm(ra); printDescription(ra,NULL,3); printSettingsWithUrls(ra,"termUrl","termId",NULL); printLabel(ra,term); puts("</TR>"); } else // generic term: term, description, label { puts("<TR>"); char *term = printTerm(ra); printDescription(ra,NULL,2); printLabel(ra,term); puts("</TR>"); } return TRUE; }
void SerialTool::openPort(){ /*Get actual configuration */ QString portName = this->portBox->currentText(); if(this->port != NULL) { std::cout << "Desallocation of previous configuration" << std::endl; delete this->port; } this->port = new QextSerialPort(portName,this->getConfiguration()); if( port->open(QIODevice::ReadWrite) < 1){ QMessageBox mesg; mesg.setText(QString("Erreur opening").append(portName)); mesg.exec(); } else{ this->openButton->setDisabled(true); this->closeButton->setDisabled(false); /* Disable configuration button */ this->Configuration(false); this->Rth = new ReadSerial(port,this); connect(this->Rth,SIGNAL(DataReady(QByteArray)),this,SLOT(printTerm(QByteArray))); Rth->start(); } }
/********************************* * * * printExpr * * * *********************************/ void printExpr(PE_EXPR *expr) { if (expr) { switch (expr->tag) { case E_VAR: printf("VAR(%s)", expr->info.var); break; case E_APP: printf("APP("); printTerm(expr->info.app.term); printf(", "); printExpr(expr->info.app.expr); printf(")"); break; case E_PAIR: printf("PAIR("); printExpr(expr->info.epair.l); printf(", "); printExpr(expr->info.epair.r); printf(")"); break; case E_BANG: printf("()"); break; default: printf("printExpr: Error\n"); exit(-1); break; } } }
void MPTreeMgr::writeAllTerm( ostream & out ) const { int i , n; out << "Print all terminals:\n"; for ( i = 0 , n = _allTerm.size() ; i < n ; ++i ) { out << " > i = " << i << endl; printTerm( out , _allTerm[i] ); } }
/** Print the contents of a @a NonTerminal @param nonTerminal The @a NonTerminal to print */ static void printNonTerminal(NonTerminal *nonTerminal) { /* For verbosity level 2, only print the rules containing conflicts. */ if (option.verbose == 2 && !termContainsConflict(&nonTerminal->term)) return; fprintf(printRuleOutput, "%s ", nonTerminal->token->text); fputs(":\n", printRuleOutput); printSet("First-set", nonTerminal->term.first); printSet("Contains-set", nonTerminal->term.contains); printSet("Follow-set", nonTerminal->term.follow); indent = 1; printTerm(&nonTerminal->term); fputs(";\n\n", printRuleOutput); }
/** Print the parts of an @a Alternative @param alternative The @a Alternative to print Note: actions are printed only as {...} */ static void printAlternative(Alternative *alternative) { GrammarPart *grammarPart; int i; for (i = 0; i < listSize(alternative->parts); i++) { grammarPart = (GrammarPart *) listIndex(alternative->parts, i); printIndent(); switch (grammarPart->subtype) { case PART_ACTION: fputs("{...}", printRuleOutput); break; case PART_TERMINAL: case PART_LITERAL: fputs(grammarPart->token->text, printRuleOutput); break; case PART_NONTERMINAL: case PART_UNDETERMINED: fputs(grammarPart->token->text, printRuleOutput); break; case PART_TERM: fputs("[\n", printRuleOutput); /* Only print the sets for repeating terms */ if (!(grammarPart->uTerm.repeats.subtype == FIXED && grammarPart->uTerm.repeats.number == 1)) { printSet("First-set", grammarPart->uTerm.first); printSet("Contains-set", grammarPart->uTerm.contains); printSet("Follow-set", grammarPart->uTerm.follow); } indent++; if (grammarPart->uTerm.flags & TERM_WHILE) { printIndent(); fprintf(printRuleOutput, "%%while %s\n", grammarPart->uTerm.expression->text); } if (grammarPart->uTerm.flags & TERM_PERSISTENT) { printIndent(); fputs("%persistent\n", printRuleOutput); } printTerm(&grammarPart->uTerm); indent--; printIndent(); fputc(']', printRuleOutput); printRepeats(grammarPart->uTerm.repeats); break; default: PANIC(); } fputc('\n', printRuleOutput); } }
boolean doAntibodyRow(struct hash *ra, char *org) // print one antibody row { puts("<TR>"); char *term = printTerm(ra); printDescription(ra,"antibodyDescription",9); printSetting(ra,"target"); // target is NOT first but still is major sort order printSetting(ra,"targetDescription"); printSettingsWithUrls(ra,"orderUrl","vendorName","vendorId"); printSetting(ra,"lab"); printDocumentLink(ra,term,"validation","/ENCODE/validation/antibodies/",NULL,FALSE); printSetting(ra,"lots"); printSettingsWithUrls(ra,"targetUrl","targetId",NULL); printLabel(ra,term); puts("</TR>"); return TRUE; }
void print_solutions(int ii,int table1[][MAXTERMS],int final_index,TERM essential1[],int ess) { int i,j; if(ii==(MAXTERMS-1)) { //print the ans int i; for(i=0;i<ess;i++) { printTerm(essential1[i]); if(i<ess-1) printf("+"); } printf("\n"); } else { TERM essential[MAXTERMS]; int ess2=ess; int pos[MAXTERMS]; int row_ones[MAXTERMS]; int index=0; int count=0; int table[MAXTERMS][MAXTERMS]; for(i=0;i<MAXTERMS;i++) for(j=0;j<MAXTERMS;j++) table[i][j]=table1[i][j]; //copied a new table for(i=0;i<MAXTERMS;i++) essential[i]=essential1[i]; //copied essentials for(j=0;j<final_index;j++) if(table[j][ii]==1) { pos[count]=j; row_ones[count]=onesInRow(j,table); count++; } if(count==0)//col has no ones print_solutions(ii+1,table,final_index,essential,ess); else { int t_max=row_ones[0]; int unq=0; while(row_ones[unq]==t_max) { int row=pos[unq]; //reinitialixe the table for(i=0;i<MAXTERMS;i++) for(j=0;j<MAXTERMS;j++) table[i][j]=table1[i][j]; //reinitialize essentials for(i=0;i<MAXTERMS;i++) essential[i]=essential1[i]; ess2=ess; //make all ones in this row zero int c; for(c=0;c<MAXTERMS;c++) if(table[row][c]==1) makezeros(c,final_index,table); //add to prime implicants essential[ess2++]=prime_implicants[row]; //now send it with increased index print_solutions(ii+1,table,final_index,essential,ess2); unq++; } } } }
boolean doCellRow(struct hash *ra, char *org) // print one cell row { char *s; s = hashFindVal(ra, ORGANISM); if (s != NULL) { char *cellOrg = cloneString(s); strLower(cellOrg); if (differentString(cellOrg, org)) return FALSE; } // pathBuffer for new protocols not in human char pathBuffer[PATH_LEN]; safef(pathBuffer, sizeof(pathBuffer), "/ENCODE/protocols/cell/%s/",org); if (sameWord(org, ORG_HUMAN)) { if (cgiOptionalInt("tier",0)) { if (hashFindVal(ra,"tier") == NULL) return FALSE; if (atoi(hashFindVal(ra,"tier"))!=cgiOptionalInt("tier",0)) return FALSE; } if (cgiOptionalString("tiers")) { if (hashFindVal(ra,"tier") == NULL) return FALSE; boolean found=FALSE; char *tiers=cloneString(cgiOptionalString("tiers")); char *tier; (void)strSwapChar(tiers,',',' '); while ((tier=nextWord(&tiers))) { if (atoi(hashFindVal(ra,"tier"))==atoi(tier)) { found=TRUE; break; } } if (!found) return FALSE; } puts("<TR>"); char *term = printTerm(ra); printSetting(ra, "tier"); printDescription(ra,NULL,-1); printSetting(ra,"lineage"); printSetting(ra,"tissue"); printSetting(ra,"karyotype"); printSetting(ra,"sex"); printDocumentLink(ra,term,"protocol",pathBuffer,NULL,TRUE); printSettingsWithUrls(ra,"orderUrl","vendorName","vendorId"); printSettingsWithUrls(ra,"termUrl","termId",NULL); printLabel(ra,term); puts("</TR>"); } else // non-human cell type { puts("<TR>"); char *term = printTerm(ra); printDescription(ra,NULL,8); printSetting(ra,"category"); printSetting(ra,"tissue"); printSetting(ra,"sex"); //printSetting(ra,"karyotype"); printDocumentLink(ra,term,"protocol",pathBuffer,NULL,TRUE); printSettingsWithUrls(ra,"orderUrl","vendorName","vendorId"); printSettingsWithUrls(ra,"termUrl","termId",NULL); printLabel(ra,term); puts("</TR>"); } return TRUE; }