static int nextterm(void) { int n = (cterm() + 1) % NTERMS; while (n != cterm()) { if (TERMOPEN(n)) break; n = (n + 1) % NTERMS; } return n; }
static void showterm(int n) { if (cterm() == n || cmdmode) return; if (taglock && ctag != n % NTAGS) return; if (ctag != n % NTAGS) ltag = ctag; switchterm(cterm(), n, !hidden, !hidden, !hidden); ctag = n % NTAGS; tops[ctag] = n / NTAGS; }
static void signalreceived(int n) { if (exitit) return; /* racy, new signals may arrive before re-registeration */ signalregister(); switch (n) { case SIGUSR1: hidden = 1; switchterm(cterm(), cterm(), 0, 1, 0); ioctl(0, VT_RELDISP, 1); break; case SIGUSR2: hidden = 0; fb_cmap(); switchterm(cterm(), cterm(), 1, 0, 1); break; case SIGCHLD: while (waitpid(-1, NULL, WNOHANG) > 0) ; break; } }
bool Chain::is_continuous() const { // go through and find elements where there is a chain break const double dmin = 2.0; std::vector<bool> cterm( dbmonomers.size(), false ); for ( int i = 0; i < int(dbmonomers.size()-1); i++ ) { int j = i + 1; const clipper::Coord_orth co1 = dbmonomers[i].coord_o3(); const clipper::Coord_orth co2 = dbmonomers[j].coord_p(); if ( co1.is_null() || co2.is_null() ) return false; const double d2 = ( co1 - co2 ).lengthsq(); if ( d2 > dmin*dmin ) return false; } return true; }
static void mainloop(char **args) { struct termios oldtermios, termios; tcgetattr(0, &termios); oldtermios = termios; cfmakeraw(&termios); tcsetattr(0, TCSAFLUSH, &termios); term_load(&terms[cterm()], 1); term_redraw(1); if (args) { cmdmode = 1; execterm(args); } while (!exitit) if (pollterms()) break; tcsetattr(0, 0, &oldtermios); }
/************************************************************************ * polynomial multiplication: C(x) = A(x) + B(x) * parameter: * apoly: A(x) * bpoly: B(x) * cpoly: C(x) ************************************************************************/ void CPolynomial::Addition(CPoly& apoly,CPoly& bpoly,CPoly& cpoly) { int nACount=apoly.Size(); int nBCount=bpoly.Size(); //poly.m_poly.size(); if(nACount==0) { cpoly.Copy(bpoly); return; } if(nBCount==0) { cpoly.Copy(apoly); return; } //initialization int ai=0,bi=0; int adeg=apoly.GetDeg(); int bdeg=bpoly.GetDeg(); if(adeg<bdeg) cpoly.SetDeg(bdeg); else cpoly.SetDeg(adeg); //add the two polynomials while(ai<nACount && bi<nBCount) { CTerm aterm=apoly.At(ai); CTerm bterm=bpoly.At(bi); if(aterm.GetDeg()==bterm.GetDeg()) { CTerm cterm(aterm.GetCoef()+bterm.GetCoef(),aterm.GetDeg()); cpoly.Append(cterm); ai++; bi++; } else if(aterm.GetDeg()<bterm.GetDeg()) { CTerm cterm(bterm); cpoly.Append(cterm); bi++; } else { CTerm cterm(aterm); cpoly.Append(cterm); ai++; } } //add remaining terms if(ai<nACount) { while(ai<nACount) { CTerm cterm(apoly.At(ai)); cpoly.Append(cterm); ai++; } } else if(bi<nBCount) { while(bi<nBCount) { CTerm cterm(bpoly.At(bi)); cpoly.Append(cterm); bi++; } } }
static struct term *mainterm(void) { return TERMOPEN(cterm()) ? &terms[cterm()] : NULL; }
static void peepback(int termid) { if (termid != cterm()) switchterm(termid, cterm(), !hidden, 0, 0); }
static void peepterm(int termid) { if (termid != cterm()) switchterm(cterm(), termid, 0, 0, 0); }
static void directkey(void) { char *shell[32] = SHELL; char *mail[32] = MAIL; char *editor[32] = EDITOR; int c = readchar(); if (PASS && locked) { if (c == '\r') { pass[passlen] = '\0'; if (!strcmp(PASS, pass)) locked = 0; passlen = 0; return; } if (isprint(c) && passlen + 1 < sizeof(pass)) pass[passlen++] = c; return; } if (c == ESC) { switch ((c = readchar())) { case 'c': execterm(shell); return; case 'm': execterm(mail); return; case 'e': execterm(editor); return; case 'j': case 'k': showterm(altterm(cterm())); return; case 'o': showtag(ltag); return; case 'p': listtags(); return; case '\t': if (nextterm() != cterm()) showterm(nextterm()); return; case CTRLKEY('q'): exitit = 1; return; case 's': term_screenshot(); return; case 'y': term_redraw(1); return; case CTRLKEY('l'): locked = 1; passlen = 0; return; case CTRLKEY('o'): taglock = 1 - taglock; return; case ',': term_scrl(pad_rows() / 2); return; case '.': term_scrl(-pad_rows() / 2); return; default: if (strchr(tags, c)) { showtag(strchr(tags, c) - tags); return; } if (mainterm()) term_send(ESC); } } if (c != -1 && mainterm()) term_send(c); }