static void WriteApply(Cell *c) { int k; char *name; for(k=0; c->tag==APPLY; k++,c=c->left) push(c->right); if(k == 2 && c->tag == FUNC && (name = getfunction(c->value)->name) != NULL && !(isalpha(name[0]) || name[0] == '_')) { WriteC(pop(), True); WriteString(" "); WriteString(name); WriteString(" "); WriteC(pop(), True); } else { WriteC(c, True); for(; k>0; k--) { WriteString(" "); WriteC(pop(), True); } } }
static void WriteList(Cell *c, bool parentheses) { bool charlist = True; Cell *temp; for(temp=c; temp->tag==LIST; temp=temp->right) if(temp->left->tag != CHAR) charlist = False; if(temp->tag != NIL) { if(parentheses) WriteString("("); for(temp=c; temp->tag==LIST; temp=temp->right) { WriteC(temp->left, True); WriteString(":"); } WriteC(temp, True); if(parentheses) WriteString(")"); } else if(charlist) { WriteString("\""); for(temp=c; temp->tag==LIST; temp=temp->right) Write("%c", temp->left->value); WriteString("\""); } else WriteElems(c, LIST, "[", ", ", "]", False); }
void CSource::Core(vector<CClassDetail *>& vecDetail) { WriteCommit2Commit(vecDetail); Cout << "bool CConfig::Parse(const char* pszFile)\n{" << endl; Cout << "\tCXMLTree CXMLTreeIns;\n\tif(!CXMLTreeIns.Create(pszFile)) return false;\n" << endl; Cout << "\tCXMLNode* pCRoot = CXMLTreeIns.GetRoot();\n\tif(pCRoot == NULL) return false;\n" << endl; for (BT_AUTO(iterDetail, vecDetail.begin()); iterDetail != vecDetail.end(); ++iterDetail) { CClassDetail* pCDetail = *iterDetail; if (pCDetail->GetType() == "s") { if (!pCDetail->GetMember().empty()) { // C WriteC(pCDetail); } else { // string WriteString(pCDetail); } } else if (pCDetail->GetType() == "m") { if (!pCDetail->GetMember().empty()) { // vector<C> WriteVectorC(pCDetail); } else { // vector<string> WriteVectorString(pCDetail); } } } Cout << "\treturn true;\n}\n" << endl; Cout << "} // CFG_N" << endl; }
void _ttywrch(int ch) { char tempch = ch; #ifdef USE_SERIAL_PORT sendchar( &tempch ); #else WriteC( &tempch ); #endif }
static void WriteElems(Cell *c, TagType tag, char start[], char separator[], char stop[], bool parentheses) { WriteString(start); for(; c->tag == tag; c=c->right) { WriteC(c->left, parentheses); if(c->right->tag == tag) WriteString(separator); } WriteString(stop); }
int fputc(int ch, FILE *f) { /* Place your implementation of fputc here */ /* e.g. write a character to a UART, or to the */ /* debugger console with SWI WriteC */ char tempch = ch; #ifdef USE_SERIAL_PORT extern void uputchar(char ch); uputchar(tempch); // output to UART #else WriteC( &tempch ); #endif return ch; }
TInt YModem::ReadPackets(TUint8*& aDest, TInt aLength) { TInt l=0; TInt r=KErrNone; while(l<aLength || iState==0) { TInt retries=0; for(retries=0; retries<KMaxRetries; retries++) { if (iState==0) iTimeout=2000000, WriteC(iInitChar); r=ReadPacket(iPacketBuf); // test.Printf(_L("%d\n"),r); if (r==KErrTimedOut) continue; if (r==KErrNone) r=CheckPacket(aDest); if (r==KErrEof || r==KErrSessionClosed) break; if (r==KErrNone || r==KErrAlreadyExists) { if (r==KErrNone) iState++; if (iState>1) aDest+=iBlockSize; // don't store packet 0 if (iInitChar==BIGC) WriteC(ACK); if (iState==1) WriteC(iInitChar); // Send another 'C' after ACK if (r==KErrAlreadyExists) continue; break; } if (r==KErrAbort) break; if (iInitChar==BIGG) break; WriteC(NAK); } if (r==KErrNone) { if (iState>1) l+=iBlockSize; } else if (r==KErrSessionClosed) { if (iInitChar==BIGC) WriteC(ACK); break; } else if (r==KErrEof) { WriteC(ACK); // acknowledge end break; } else if (r!=KErrAbort) { WriteC(CAN); WriteC(CAN); WriteC(CAN); WriteC(CAN); WriteC(CAN); break; } } return r; }
void WriteCell(Cell *c) { WriteC(c, False); }
static void WriteC(Cell *c, bool parentheses) { int k; FuncDef *fun; if(c==NULL) return; switch(c->tag) { case APPLY: if(parentheses) WriteString("("); WriteApply(c); if(parentheses) WriteString(")"); break; case ARG: if(c->value>0) Write("ARG(%d)", c->value); else Write("LOCAL(%d)", -c->value); break; case INT: Write("%ld", integer(c)); break; case REAL: Write("%lg", real(c)); break; case CHAR: Write("'%c'", c->value); break; case BOOLEAN: WriteString(c->value ? "True" : "False"); break; case NULLTUPLE: WriteString("()"); break; case LIST: WriteList(c, parentheses); break; case NIL: WriteString("Nil"); break; case STRUCT: WriteElems(c, STRUCT, parentheses ? "(" : "", " ", parentheses ? ")" : "", True); break; case PAIR: WriteElems(c, PAIR, "(", ", ", ")", False); break; case RECORD: WriteElems(c, RECORD, "{", ", ", "}", False); break; case _IF: if(parentheses) WriteString("("); WriteString("_if "); WriteC(c->left, True); WriteString(" "); WriteC(c->right->left, True); WriteString(" "); WriteC(c->right->right, True); if(parentheses) WriteString(")"); break; case MATCH: if(parentheses) WriteString("("); WriteString("_match "); WriteC(c->left, True); WriteString(" "); WriteC(c->right, True); if(parentheses) WriteString(")"); break; case MATCHARG: if(parentheses) WriteString("("); for(;;) { WriteString("_match "); WriteC(c->left, True); WriteString(" "); if(c->value>0) Write("ARG(%d)", c->value); else Write("LOCAL(%d)", -c->value); c = c->right; if(c == NULL) break; WriteString(" /\\ "); } if(parentheses) WriteString(")"); break; case MATCHTYPE: if(c->value == INT) WriteString("num"); else if(c->value == BOOLEAN) WriteString("bool"); else if(c->value == CHAR) WriteString("char"); else WriteString("..."); break; case ALIAS: if(parentheses) WriteString("("); WriteC(c->left, False); WriteString(" = "); WriteC(c->right, False); if(parentheses) WriteString(")"); break; case UNDEFINED: WriteString("undefined"); break; case GENERATOR: WriteString("["); WriteElems(c->left, LIST, "", ", ", "", False); WriteString(" | "); for(c=c->right; c->tag==GENERATOR; c=c->right) { if(c->left->right) { WriteElems(c->left->left, LIST, "", ", ", "", False); WriteString(" <- "); WriteElems(c->left->right, LIST, "", ", ", "", False); } else WriteC(c->left->left, False); if(c->right->tag==GENERATOR) WriteString("; "); } WriteString("]"); break; case SYSFUNC1: fun = getfunction(c->value); if(parentheses) WriteString("("); WriteString(fun->name); WriteString(" "); WriteC(c->left, True); if(parentheses) WriteString(")"); break; case SYSFUNC2: fun = getfunction(c->value); if(parentheses) WriteString("("); WriteC(c->left, True); WriteString(" "); WriteString(fun->name); WriteString(" "); WriteC(c->right, True); if(parentheses) WriteString(")"); break; case APPLICATION: fun = getfunction(c->value); if(parentheses) WriteString("("); WriteString(fun->name); if(fun->argcount == 0) ; else if(fun->argcount == 1) push(c->right); else { for(k=fun->argcount; k>1; k--) { push(c->left); c = c->right; } push(c); } for(k=fun->argcount; k>0; k--) { WriteString(" "); WriteC(pop(), True); } if(parentheses) WriteString(")"); break; case FUNC: case TYPE: WriteFunc(getfunction(c->value)->name); break; case ERROR: Write("error(%s)", getfunction(c->value)->name); break; case CONST: WriteString("(Const "); WriteC(c->left, False); WriteString(")"); break; case STRICTDIRECTOR: case LAZYDIRECTOR: WriteDirector(c->value, c->tag); if(parentheses) WriteString("("); WriteC(c->left, True); if(parentheses) WriteString(")"); break; case LETREC: if(parentheses) WriteString("("); WriteC(c->right, False); WriteString(" WHERE "); k = 0; for(c=c->left; c->tag==LIST; c=c->right) { Write("LOCAL(%d) = ", -(k--)); WriteC(c->left, False); WriteString("; "); } WriteString("ENDWHERE"); if(parentheses) WriteString(")"); break; case LAMBDA: WriteC(c->left, False); WriteString(" -> "); WriteC(c->right, False); break; case LAMBDAS: WriteElems(c, LAMBDAS, "(", " | ", ")", False); break; case VARIABLE: WriteString(getfunction(c->left->value)->name); break; case SET1: case SET2: WriteString("["); WriteC(c->left->left, False); for(k=1; k<=c->value; k++) Write(" x%d", k); WriteString(" | (x1"); for(k=2; k<=c->value; k++) Write(", x%d", k); WriteString(") <- "); WriteC(c->left->right->right, False); if(c->left->right->left) { WriteString("; "); WriteC(c->left->right->left, False); for(k=1; k<=c->value; k++) Write(" x%d", k); } WriteString("]"); break; default: systemerror(7); } }