本文整理汇总了C++中cbits函数的典型用法代码示例。如果您正苦于以下问题:C++ cbits函数的具体用法?C++ cbits怎么用?C++ cbits使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cbits函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: casehcode
void
casehcode(void)
{
tchar c, d;
int k;
lgf++;
if (skip(1))
return;
do {
c = getch();
if (skip(1))
break;
d = getch();
if (c && d && !ismot(c) && !ismot(d)) {
if ((k = cbits(c)) >= nhcode) {
hcode = realloc(hcode, (k+1) * sizeof *hcode);
memset(&hcode[nhcode], 0,
(k+1-nhcode) * sizeof *hcode);
nhcode = k+1;
}
hcode[k] = cbits(d);
}
} while (!skip(0));
}
示例2: n_setps
void n_setps(void )
{
int i, j;
i = cbits(getch());
if (isdigit(i)) { /* \sd or \sdd */
i -= '0';
if (i == 0) /* \s0 */
;
else if (i <= 3 && (ch=getch()) && isdigit(cbits(ch))) { /* \sdd */
ch = 0;
}
} else if (i == '(') { /* \s(dd */
getch();
getch();
} else if (i == '+' || i == '-') { /* \s+, \s- */
j = cbits(getch());
if (isdigit(j)) { /* \s+d, \s-d */
;
} else if (j == '(') { /* \s+(dd, \s-(dd */
getch();
getch();
}
}
}
示例3: setbra
void setbra(void)
{
int k;
Tchar i, *j, dwn;
int cnt, delim;
Tchar brabuf[NC];
if (ismot(i = getch()))
return;
delim = cbits(i);
j = brabuf + 1;
cnt = 0;
if (NROFF)
dwn = (2 * t.Halfline) | MOT | VMOT;
else
dwn = EM | MOT | VMOT;
while ((k = cbits(i = getch())) != delim && k != '\n' && j <= brabuf + NC - 4) {
*j++ = i | ZBIT;
*j++ = dwn;
cnt++;
}
if (--cnt < 0)
return;
else if (!cnt) {
ch = *(j - 2);
return;
}
*j = 0;
if (NROFF)
*--j = *brabuf = (cnt * t.Halfline) | MOT | NMOT | VMOT;
else
*--j = *brabuf = (cnt * EM) / 2 | MOT | NMOT | VMOT;
*--j &= ~ZBIT;
pushback(brabuf);
}
示例4: setvline
int
setvline(void)
{
int i;
tchar c, rem, ver, neg;
int cnt, delim, v;
tchar vlbuf[NC];
tchar *vlp;
if (ismot(c = getch()))
return (0);
delim = cbits(c);
dfact = lss;
vflag++;
i = quant(atoi(), VERT);
dfact = 1;
if (!i) {
eat(delim);
vflag = 0;
return (0);
}
if ((cbits(c = getch())) == delim) {
c = BOXRULE | chbits; /* default box rule */
} else
getch();
c |= ZBIT;
neg = 0;
if (i < 0) {
i = -i;
neg = NMOT;
}
#ifdef NROFF
v = 2 * t.Halfline;
#endif
#ifndef NROFF
v = EM;
#endif
cnt = i / v;
rem = makem(i % v) | neg;
ver = makem(v) | neg;
vlp = vlbuf;
if (!neg)
*vlp++ = ver;
if (absmot(rem) != 0) {
*vlp++ = c;
*vlp++ = rem;
}
while ((vlp < (vlbuf + NC - 3)) && cnt--) {
*vlp++ = c;
*vlp++ = ver;
}
*(vlp - 2) &= ~ZBIT;
if (!neg)
vlp--;
*vlp++ = 0;
pushback(vlbuf);
vflag = 0;
return (0);
}
示例5: casetr
void
casetr(int flag)
{
register int i, j;
tchar k;
lgf++;
skip(1);
while ((i = cbits(k=getch())) != '\n') {
if (ismot(k))
return;
if (ismot(k = getch()))
return;
if ((j = cbits(k)) == '\n')
j = ' ';
trtab[i] = j;
if (flag & 1)
trintab[j] = i;
else
trintab[j] = 0;
if (flag & 2)
trnttab[i] = i;
else
trnttab[i] = j;
}
}
示例6: eatblk
void
eatblk(int inblk)
{ register int cnt, i;
tchar ii;
cnt = 0;
do {
if (ch) {
i = cbits(ii = ch);
ch = 0;
} else
i = cbits(ii = getch0());
if (i == ESC)
cnt++;
else {
if (cnt == 1)
switch (i) {
case '{': i = LEFT; break;
case '}': i = RIGHT; break;
case '\n': i = 'x'; break;
}
cnt = 0;
}
if (i == LEFT) eatblk(1);
} while ((!inblk && (i != '\n')) || (inblk && (i != RIGHT)));
if (i == '\n') {
nlflg++;
tailflg = istail(ii);
}
}
示例7: setvline
void setvline(void)
{
int i;
Tchar c, rem, ver, neg;
int cnt, delim, v;
Tchar vlbuf[NC];
Tchar *vlp;
if (ismot(c = getch()))
return;
delim = cbits(c);
dfact = lss;
vflag++;
i = quant(atoi0(), VERT);
dfact = 1;
if (!i) {
eat(delim);
vflag = 0;
return;
}
if ((cbits(c = getch())) == delim) {
c = BOXRULE | chbits; /*default box rule*/
} else
getch();
c |= ZBIT;
neg = 0;
if (i < 0) {
i = -i;
neg = NMOT;
}
if (NROFF)
v = 2 * t.Halfline;
else {
v = EM;
if (v < VERT) /* ATT EVK hack: Erik van Konijnenburg, */
v = VERT; /* hvlpb!evkonij, ATT NSI Hilversum, Holland */
}
cnt = i / v;
rem = makem(i % v) | neg;
ver = makem(v) | neg;
vlp = vlbuf;
if (!neg)
*vlp++ = ver;
if (absmot(rem) != 0) {
*vlp++ = c;
*vlp++ = rem;
}
while (vlp < vlbuf + NC - 3 && cnt--) {
*vlp++ = c;
*vlp++ = ver;
}
*(vlp - 2) &= ~ZBIT;
if (!neg)
vlp--;
*vlp = 0;
pushback(vlbuf);
vflag = 0;
}
示例8: warn1
static int
warn1(void)
{
char name[NC];
int n, sign;
size_t i;
tchar c;
switch (cbits(c = getch())) {
case '-':
c = getch();
sign = -1;
break;
case '+':
c = getch();
sign = 1;
break;
default:
sign = 0;
break;
case 0:
return 1;
}
ch = c;
n = atoi0();
if ((i = cbits(ch)) != 0 && i != ' ' && i != '\n') {
if (c != ch) {
while (getach());
errprint("illegal number, char %c", i);
return 1;
}
for (i = 0; i < sizeof name - 2; i++) {
if ((c = getach()) == 0)
break;
name[i] = c;
}
name[i] = 0;
for (i = 0; warnnames[i].s; i++)
if (strcmp(name, warnnames[i].s) == 0) {
n = warnnames[i].n;
break;
}
if (warnnames[i].s == NULL) {
errprint("unknown warning category %s", name);
return 1;
}
}
switch (sign) {
case 1:
warn |= n;
break;
case -1:
warn &= ~n;
break;
default:
warn = n;
}
return 0;
}
示例9: eat
tchar
eat(tchar c)
{
register tchar i;
while (i = getch(), !issame(i, c) && (cbits(i) != '\n'))
;
if (cbits(c) != ' ' && !issame(i, c))
nodelim(c);
return(i);
}
示例10: chget
int
chget(int c)
{
tchar i = 0;
charf++;
if (skip(0) || ismot(i = getch()) || cbits(i) == ' ' || cbits(i) == '\n') {
ch = i;
return(c);
} else
return(cbits(i));
}
示例11: n_setwd
void n_setwd(void)
{
int base, wid;
Tchar i;
int delim, emsz, k;
int savhp, savapts, savapts1, savfont, savfont1, savpts, savpts1;
base = numtabp[ST].val = wid = numtabp[CT].val = 0;
if (ismot(i = getch()))
return;
delim = cbits(i);
savhp = numtabp[HP].val;
numtabp[HP].val = 0;
savapts = apts;
savapts1 = apts1;
savfont = font;
savfont1 = font1;
savpts = pts;
savpts1 = pts1;
setwdf++;
while (cbits(i = getch()) != delim && !nlflg) {
k = width(i);
wid += k;
numtabp[HP].val += k;
if (!ismot(i)) {
emsz = (INCH * pts + 36) / 72;
} else if (isvmot(i)) {
k = absmot(i);
if (isnmot(i))
k = -k;
base -= k;
emsz = 0;
} else
continue;
if (base < numtabp[SB].val)
numtabp[SB].val = base;
if ((k = base + emsz) > numtabp[ST].val)
numtabp[ST].val = k;
}
setn1(wid, 0, (Tchar) 0);
numtabp[HP].val = savhp;
apts = savapts;
apts1 = savapts1;
font = savfont;
font1 = savfont1;
pts = savpts;
pts1 = savpts1;
mchbits();
setwdf = 0;
}
示例12: copys
void copys(void)
{
Tchar i;
copyf++;
if (skip())
goto c0;
if (cbits(i = getch()) != '"')
wbf(i);
while (cbits(i = getch()) != '\n')
wbf(i);
c0:
wbf((Tchar)0);
copyf--;
}
示例13: n_width
int
n_width(Tchar j)
{
int i, k;
if (iszbit(j))
return 0;
if (ismot(j)) {
if (isvmot(j))
return(0);
k = absmot(j);
if (isnmot(j))
k = -k;
return(k);
}
i = cbits(j);
if (i < ' ') {
if (i == '\b')
return(-widthp);
if (i == PRESC)
i = eschar;
else if (i == HX)
return(0);
}
if (i == ohc)
return(0);
i = trtab[i];
if (i < ' ')
return(0);
k = t.width[i] * t.Char;
widthp = k;
return(k);
}
示例14: caselpfx
void
caselpfx(void)
{
int n;
tchar c;
if (skip(0)) {
free(lpfx);
lpfx = NULL;
nlpfx = 0;
} else {
for (n = 0; ; n++) {
if (n+1 >= nlpfx) {
nlpfx += 10;
lpfx = realloc(lpfx, nlpfx * sizeof *lpfx);
}
c = getch();
if (nlflg)
break;
if (n == 0 && cbits(c) == '"')
continue;
lpfx[n] = c;
}
lpfx[n] = 0;
}
}
示例15: gettch
Tchar gettch(void)
{
extern int c_isalnum;
Tchar i;
int j;
if (TROFF)
return getch();
i = getch();
j = cbits(i);
if (ismot(i) || fbits(i) != ulfont)
return(i);
if (cu) {
if (trtab[j] == ' ') {
setcbits(i, '_');
setfbits(i, FT); /* default */
}
return(i);
}
/* should test here for characters that ought to be underlined */
/* in the old nroff, that was the 200 bit on the width! */
/* for now, just do letters, digits and certain special chars */
if (j <= 127) {
if (!isalnum(j))
setfbits(i, FT);
} else {
if (j < c_isalnum)
setfbits(i, FT);
}
return(i);
}