Ejemplo n.º 1
0
cell * new_cell()
{
 cell * c;
 if ((c=free_cell_chain) != NULL)
	 free_cell_chain=c->next;
 else
	 c=empty_cell++;
 //assert(c < cell_boundary); // Valdemar
 if( c >= cell_boundary )
    ErrorExit (RSTR_ERR_NOPLACE);
 c->difflg = 0;
 c->bas1=c->bas2=c->bas3=c->bas4=c->basflg=0;
 c->recsource = 0;
 c->history=0;
 c->flg = 0;
 c->flg_new = 0;
 c->font = 0;
 c->n_baton=NO_BATONS;
 c->pos_inc = erect_no;
 c->accent_leader = 0;
 c->bottom_accent = 0;
 c->language = language;
 err_pnlet(c);
 err_pncell(c);
 c->clink = -1;
 c->clu_attr = 0;
 c->nClust   = 0;
 c->dup = dup_default;
 c->dupstart    =   0;
 c->dupend      =   0;
 c->dlang_dup   =   0;  // Nick 17.02.2001 - was error!
 c->cg_flag_fine = 0;
 c->pr_vers.let=bad_char;   c->pr_vers.prob=0;
 return c;
}
Ejemplo n.º 2
0
void del_retain_cell(cell *c)
{
 //  AFTER TESTS PROTECT MYSELF: if (c->prev == (cell*)(0xffff0000)) return;
	//AK add c/g

	// 17.06.2002 E.P.
	if (c->prev == NoNextPrev)
		return;

	if ( c->next )
	{
		(c->prev)->next=c->next;
		(c->next)->prev=c->prev;

		if ( ( c->flg&(c_f_let|c_f_bad) && !(c->flg&(c_f_dust|c_f_punct)) ) ||
			  c->nextl && c->nextl != NoNextPrev &&
			  c->prevl && c->prevl != NoNextPrev
		   )
		{
			(c->prevl)->nextl=c->nextl;
			(c->nextl)->prevl=c->prevl;
		}
	}

	err_pnlet(c);  // AL 940319
	err_pncell(c);
}
Ejemplo n.º 3
0
void del_retain_cell(cell *c) {
	//  AFTER TESTS PROTECT MYSELF: if (c->prev == (cell*)(0xffff0000)) return;
	//AK add c/g

	// 17.06.2002 E.P.
	if (c->prev == NoNextPrev)
		return;

	if (c->next) {
		(c->prev)->next = c->next;
		(c->next)->prev = c->prev;

        if (c->isBadLetter() && !c->isDustOrPunct())
            c->deleteFromLettersChain();
	}

	err_pncell(c);
}