コード例 #1
0
ファイル: ejsArray.c プロジェクト: embedthis/ejs-1
static void destroyArray(Ejs *ejs, EjsArray *ap)
{
    mprAssert(ap);

    mprFree(ap->data);
    ap->data = 0;
    ejsFreeVar(ejs, (EjsVar*) ap, -1);
}
コード例 #2
0
ファイル: ejsWorker.c プロジェクト: embedthis/ejs-1
static void destroyWorker(Ejs *ejs, EjsWorker *worker)
{
    if (!worker->inside) {
        removeWorker(ejs, worker);
        mprAssert(worker->pair);
        mprFree(worker->pair->ejs);
        worker->pair = 0;
    }
    ejsFreeVar(ejs, (EjsVar*) worker, -1);
}
コード例 #3
0
ファイル: shape.c プロジェクト: varphone/ejs-2
/*
    Destroy the instance. The default implementation is to just call the GC ejsFreeVar routine which will 
    either free the memory or return it to a type specific pool, ready for reuse
 */
static void destroyVar(Ejs *ejs, EjsObj *obj)
{
    ejsFreeVar(ejs, obj);
}
コード例 #4
0
ファイル: ejsVar.c プロジェクト: jsjohnst/ejscript
static void destroyVar(Ejs *ejs, EjsVar *vp)
{
    ejsFreeVar(ejs, vp);
}
コード例 #5
0
ファイル: ejsObject.c プロジェクト: Marvin-Lee/libwmiclient
int ejsDefineObjectClass(Ejs *ep)
{
	EjsMethods	*methods;
	EjsProperty	*objectProp, *protoProp;
	EjsVar		*op, *globalClass;

	/*
	 *	Must specially hand-craft the object class as it is the base class
	 *	of all objects.
	 */
	op = ejsCreateObjVar(ep);
	if (op == 0) {
		return MPR_ERR_CANT_CREATE;
	}
	ejsSetClassName(ep, op, "Object");

	/*
	 *	Don't use a constructor for objects for speed
	 */
	ejsMakeClassNoConstructor(op);

	/*
	 *	MOB -- should mark properties as public / private and class or instance.
	 */
	ejsDefineCMethod(ep, op, "clone", cloneMethod, EJS_NO_LOCAL);
	ejsDefineCMethod(ep, op, "toString", toStringMethod, EJS_NO_LOCAL);
	ejsDefineCMethod(ep, op, "valueOf", valueOfMethod, EJS_NO_LOCAL);
	ejsDefineCMethod(ep, op, "mixin", mixinMethod, EJS_NO_LOCAL);

	ejsDefineCAccessors(ep, op, "hash", hashGetAccessor, 0, EJS_NO_LOCAL);
	ejsDefineCAccessors(ep, op, "baseClass", classGetAccessor, 0, EJS_NO_LOCAL);

	/*
	 *	MOB -- make this an accessor
	 */
	protoProp = ejsSetProperty(ep, op, "prototype", op);
	if (protoProp == 0) {
		ejsFreeVar(ep, op);
		return MPR_ERR_CANT_CREATE;
	}

	/*
	 *	Setup the internal methods. Most classes will never override these.
	 *	The XML class will. We rely on talloc to free internal. Use "ep" as
	 *	the parent as we need "methods" to live while the interpreter lives.
	 */
	methods = mprAllocTypeZeroed(ep, EjsMethods);
	op->objectState->methods = methods;

	methods->createProperty = createObjProperty;
	methods->deleteProperty = deleteObjProperty;
	methods->getProperty = getObjProperty;
	methods->setProperty = setObjProperty;

	objectProp = ejsSetPropertyAndFree(ep, ep->global, "Object", op);

	/*
	 *	Change the global class to use Object's methods 
	 */
	globalClass = ep->service->globalClass;
	globalClass->objectState->methods = methods;
	globalClass->objectState->baseClass = ejsGetVarPtr(protoProp);

	ep->objectClass = ejsGetVarPtr(objectProp);

	if (ejsObjHasErrors(ejsGetVarPtr(objectProp))) {
		ejsFreeVar(ep, op);
		return MPR_ERR_CANT_CREATE;
	}
	return 0;
}