Esempio n. 1
0
static int valueOfMethod(Ejs *ep, EjsVar *thisObj, int argc, EjsVar **argv)
{
	if (argc != 0) {
		mprAssert(0);
		return -1;
	}

	switch (thisObj->type) {
	default:
	case EJS_TYPE_UNDEFINED:
	case EJS_TYPE_NULL:
	case EJS_TYPE_CMETHOD:
	case EJS_TYPE_OBJECT:
	case EJS_TYPE_METHOD:
	case EJS_TYPE_STRING_CMETHOD:
		ejsWriteVar(ep, ep->result, thisObj, EJS_SHALLOW_COPY);
		break;

	case EJS_TYPE_STRING:
		ejsWriteVarAsInteger(ep, ep->result, atoi(thisObj->string));
		break;

	case EJS_TYPE_BOOL:
	case EJS_TYPE_INT:
#if BLD_FEATURE_INT64
	case EJS_TYPE_INT64:
#endif
#if BLD_FEATURE_FLOATING_POINT
	case EJS_TYPE_FLOAT:
#endif
		ejsWriteVar(ep, ep->result, thisObj, EJS_SHALLOW_COPY);
		break;
	} 
	return 0;
}
Esempio n. 2
0
static int cloneMethod(Ejs *ep, EjsVar *thisObj, int argc, EjsVar **argv)
{
	int		copyDepth;

	copyDepth = EJS_DEEP_COPY;

	if (argc == 1 && ejsVarToBoolean(argv[0])) {
		copyDepth =  EJS_RECURSIVE_DEEP_COPY;
	}

	ejsWriteVar(ep, ep->result, thisObj, copyDepth);

	return 0;
}
Esempio n. 3
0
static EjsVar *setObjProperty(Ejs *ep, EjsVar *obj, const char *property, 
	const EjsVar *value)
{
	EjsProperty		*pp;
	EjsVar			*vp;

	pp = ejsCreateSimpleProperty(ep, obj, property);
	if (pp == 0) {
		mprAssert(pp);
		return 0;
	}
	vp = ejsGetVarPtr(pp);
	if (ejsWriteVar(ep, vp, value, EJS_SHALLOW_COPY) < 0) {
		mprAssert(0);
		return 0;
	}
	return ejsGetVarPtr(pp);
}
Esempio n. 4
0
EjsVar *ejsAddArrayElt(Ejs *ep, EjsVar *op, EjsVar *element,
                       EjsCopyDepth copyDepth)
{
    EjsProperty		*pp;
    EjsVar			*vp;
    char			idx[16];
    int				length;

    mprAssert(op->isArray);

    length = ejsGetPropertyAsInteger(ep, op, "length");

    mprItoa(idx, sizeof(idx), length);
    pp = ejsCreateProperty(ep, op, idx);
    vp = ejsGetVarPtr(pp);

    ejsWriteVar(ep, vp, element, copyDepth);

    ejsSetPropertyToInteger(ep, op, "length", length + 1);

    return vp;
}
Esempio n. 5
0
int ejsArrayConstructor(Ejs *ep, EjsVar *thisObj, int argc, EjsVar **argv)
{
    EjsProperty		*pp;
    EjsVar			*vp;
    char			idx[16];
    int				i, max;

    thisObj->isArray = 1;
    max = 0;

    if (argc > 0) {
        if (argc == 1 && ejsVarIsNumber(argv[0])) {
            /*
             *	x = new Array(size);
             */
            max = (int) ejsVarToInteger(argv[0]);

        } else {
            /*
             *	x = new Array(element0, element1, ..., elementN):
             */
            max = argc;
            for (i = 0; i < max; i++) {
                mprItoa(idx, sizeof(idx), i);
                pp = ejsCreateSimpleProperty(ep, thisObj, idx);
                vp = ejsGetVarPtr(pp);
                ejsWriteVar(ep, vp, argv[i], EJS_SHALLOW_COPY);
            }
        }
    }

    pp = ejsCreateSimpleProperty(ep, thisObj, "length");
    ejsMakePropertyEnumerable(pp, 0);
    vp = ejsGetVarPtr(pp);
    ejsWriteVarAsInteger(ep, vp, max);
    vp->isArrayLength = 1;

    return 0;
}
Esempio n. 6
0
int espWriteVar(EspRequest *ep, char *var, MprVar *value)
{
	return ejsWriteVar(ep->eid, var, value);
}