char *script(char *s, int i) { int c; sub[nsub++] = *s; sub[nsub++] = i; if ((c = *++s) == '\\') { if ((c = greek(s + 1)) >= 0) { s += strlen(grk[c]); c += 193; } else { switch (c = *++s) { case '\\': case '{': case '}': case '_': case '^': break; default: sscanf(s, "%3d", &c); s += 2; break; } } } sub[nsub++] = c; sub[nsub++] = '\0'; return (s); }
void IBSymbol::Greeks( double optPrice, double undPrice, double pvDividend, double impliedVol, double delta, double gamma, double vega, double theta ) { m_dblOptionPrice = optPrice; m_dblUnderlyingPrice = undPrice; m_dblPvDividend = pvDividend; ptime dt; ou::TimeSource::Instance().External( &dt ); Greek greek( dt, impliedVol, delta, gamma, theta, vega, 0 ); m_OnGreek( greek ); }
char *gettxt_fig(char *s) { char *p; int i, c; char *script(char *s, int i); while (*s && *s != '"') ++s; if (*s++ == '\0') return (s - 1); for (p = s, nsub = i = 0; *s && (*s != '"' || *(s + 1) == '"'); ++s) { if (*s == '\\') { /* escape sequence */ if ((c = greek(s + 1)) >= 0) { s += strlen(grk[c]); c += 193; } else { switch (c = *++s) { case 'b': c = 0x08; break; case 'n': c = 0x0a; break; case 'r': c = 0x0d; break; case '^': c = '^'; break; case '_': c = '_'; break; case '\\': c = '\\'; break; case 'd': case 'u': s = script(s, i); c = ' '; break; default: sscanf(s, "%3d", &c); s += 2; break; } } p[i++] = c; } else if ((c = *s) == '^' || c == '_') { if (*(s + 1) == '{') { for (*++s = c; *(s + 1) != '}'; p[i++] = ' ') { s = script(s, i); *s = c; } ++s; } else { s = script(s, i); p[i++] = ' '; } } else { if (*s == '"') ++s; p[i++] = *s; } } sub[nsub] = p[i] = '\0'; while (p + i < s) p[++i] = ' '; return (p); }