Exemplo n.º 1
0
Arquivo: dsort.c Projeto: jnjcc/yaseek
int dsortidx(darray *pvda, int idxs[], int sze) {
    darray_t *pda = (darray_t *)pvda; 
    if (sze != pda->elem_num_) {
        return 0;
    }
    darray_t *ptmp = (darray_t *)dclone(pda);
    ptmp = dclear(ptmp);
    int i;
    for (i = 0; i < sze; ++i) {
        int id = idxs[i];
        dpush(ptmp, dgetp(pda, id), dgetlen(pda, id));
    }
    pda = drefer(pda, ptmp);
    free(ptmp);
    return 1;
}
Exemplo n.º 2
0
void
getstatement(void)			/* get next statement */
{
    EPNODE  *ep;
    char  *qname;
    VARDEF  *vdef;

    if (nextc == ';') {		/* empty statement */
	scan();
	return;
    }
    if (esupport&E_OUTCHAN &&
		nextc == '$') {		/* channel assignment */
	ep = getchan();
	addchan(ep);
    } else {				/* ordinary definition */
	ep = getdefn();
	qname = qualname(dname(ep), 0);
	if (esupport&E_REDEFW && (vdef = varlookup(qname)) != NULL) {
	    if (vdef->def != NULL && epcmp(ep, vdef->def)) {
		wputs(qname);
		if (vdef->def->type == ':')
		    wputs(": redefined constant expression\n");
		else
		    wputs(": redefined\n");
	    } else if (ep->v.kid->type == FUNC && vdef->lib != NULL) {
		wputs(qname);
		wputs(": definition hides library function\n");
	    }
	}
	if (ep->type == ':')
	    dremove(qname);
	else
	    dclear(qname);
	dpush(qname, ep);
    }
    if (nextc != EOF) {
	if (nextc != ';')
	    syntax("';' expected");
	scan();
    }
}
Exemplo n.º 3
0
void
varset(		/* set a variable's value */
	char  *vname,
	int  assign,
	double	val
)
{
    char  *qname;
    EPNODE  *ep1, *ep2;
					/* get qualified name */
    qname = qualname(vname, 0);
					/* check for quick set */
    if ((ep1 = dlookup(qname)) != NULL && ep1->v.kid->type == SYM &&
		(ep1->type == ':') <= (assign == ':')) {
	ep2 = ep1->v.kid->sibling;
	if (ep2->type == NUM) {
	    ep2->v.num = val;
	    ep1->type = assign;
	    return;
	}
    }
					/* hand build definition */
    ep1 = newnode();
    ep1->type = assign;
    ep2 = newnode();
    ep2->type = SYM;
    ep2->v.name = savestr(vname);
    addekid(ep1, ep2);
    ep2 = newnode();
    ep2->type = NUM;
    ep2->v.num = val;
    addekid(ep1, ep2);
    if (assign == ':')
	dremove(qname);
    else
	dclear(qname);
    dpush(qname, ep1);
}
Exemplo n.º 4
0
void
dcleanup(		/* clear definitions (0->vars,1->output,2->consts) */
	int  lvl
)
{
    int  i;
    VARDEF  *vp;
    EPNODE  *ep;
				/* if context is global, clear all */
    for (i = 0; i < NHASH; i++)
	for (vp = hashtbl[i]; vp != NULL; vp = vp->next)
	    if (incontext(vp->name)) {
		if (lvl >= 2)
		    dremove(vp->name);
		else
		    dclear(vp->name);
	    }
    if (lvl >= 1) {
	for (ep = outchan; ep != NULL; ep = ep->sibling)
	    epfree(ep);
	outchan = NULL;
    }
}
Exemplo n.º 5
0
INT	CMain::Render()
{
	m_pDev->BeginScene();

	m_pDev->Clear(LC_CLEAR_COLOR_BUFFER | LC_CLEAR_DEPTH_BUFFER);

	LCXCOLOR dclear(0,0,0,1);
	m_pDev->SetRenderState(LC_RS_CLEAR_COLOR, &dclear);

	m_pCam->SetTransformPrj();
	m_pCam->SetTransformViw();


	m_pDev->SetRenderState(LC_RS_CULL_FACE, LC_ST_DISABLE);
	m_pDev->SetRenderState(LC_RS_LIGHTING, LC_ST_DISABLE);


//	m_pXYZ->Render();
//	m_pGrid->Render();

	m_pSpt->Begin();

		m_pSpt->SetRenderState(LC_RS_BLEND_SRC , LC_ST_SRC_ALPHA);
		m_pSpt->SetRenderState(LC_RS_BLEND_DEST, LC_ST_ONE);

		m_pEft1->Render();
		m_pEft2->Render();
		m_pEft3->Render();
		m_pEft4->Render();

	m_pSpt->End();


	m_pDev->EndScene();

	return LC_OK;
}
Exemplo n.º 6
0
dstrlist* dstrlex_parse(const dstring* text, int* errorcode) {
	int in_escape = 0;
	int in_string = 0;
	dstring* buffer = dnew();
	dstrlist* tokens = dlist_new();
	dstrlen_t i, len;
	int ch;
	
	if (errorcode) {
		*errorcode = DSTRLEX_OK;
	}
	
	len = text->len;
	for(i = 0; i < len; i++) {
		ch = text->data[i];
		
		if (in_escape) {
			switch (ch) {
			case 'n':
				dcatc(buffer, '\n');
				break;
			case 'r':
				dcatc(buffer, '\r');
				break;
			case '0':
				dcatc(buffer, '\0');
				break;
			case '"':
				dcatc(buffer, '"');
				break;
			case 't':
				dcatc(buffer, '\t');
				break;
			case '\\':
				dcatc(buffer, '\\');
				break;
			default:
				dcatc(buffer, ch);
				break;
			}
			in_escape = 0;
		} else if (in_string) {
			if (ch == '"') {
				dlist_add(tokens, buffer);
				dclear(buffer);
				in_string = 0;
			} else if (ch == '\\') {
				in_escape = 1;
			} else {
				dcatc(buffer, ch);
			}
		} else {
			if (ch == '"') {
				if (buffer->len) {
					dlist_add(tokens, buffer);
					dclear(buffer);
				}
				
				in_string = 1;
			} else if (ch == '\\') {
				in_escape = 1;
			} else if (ch == ' ' || ch == '\t' || ch == '\n' || ch == '\r') {
				if (buffer->len) {
					dlist_add(tokens, buffer);
					dclear(buffer);
				}
			} else {
				dcatc(buffer, ch);
			}
		}
	}

	if (in_escape) {
		if (errorcode) *errorcode = DSTRLEX_ESCAPE;
		dfree(buffer);
		dlist_free(tokens);
		return NULL;
	} else if (in_string) {
		if (errorcode) *errorcode = DSTRLEX_STRING;
		dfree(buffer);
		dlist_free(tokens);
		return NULL;
	} else if (buffer->len) {
		dlist_add(tokens, buffer);
	}
	
	dfree(buffer);
	return tokens;
}