Example #1
0
int ejsDefineDateClass(Ejs *ep)
{
	EjsVar	*dateClass;

	dateClass = ejsDefineClass(ep, "Date", "Object", ejsDateConstructor);
	if (dateClass == 0) {
		return MPR_ERR_CANT_INITIALIZE;
	}

	ejsDefineCMethod(ep, dateClass, "getDate", xxxProc, EJS_NO_LOCAL);

	/* Returns  "Friday" or 4 ? */
	ejsDefineCMethod(ep, dateClass, "getDay", xxxProc, EJS_NO_LOCAL);

	ejsDefineCMethod(ep, dateClass, "getMonth", xxxProc, EJS_NO_LOCAL);
	ejsDefineCMethod(ep, dateClass, "getFullYear", xxxProc, EJS_NO_LOCAL);
	ejsDefineCMethod(ep, dateClass, "getYear", xxxProc, EJS_NO_LOCAL);
	ejsDefineCMethod(ep, dateClass, "getHours", xxxProc, EJS_NO_LOCAL);
	ejsDefineCMethod(ep, dateClass, "getMinutes", xxxProc, EJS_NO_LOCAL);
	ejsDefineCMethod(ep, dateClass, "getSeconds", xxxProc, EJS_NO_LOCAL);
	ejsDefineCMethod(ep, dateClass, "getMilliseconds", xxxProc, EJS_NO_LOCAL);
	ejsDefineCMethod(ep, dateClass, "getTime", xxxProc, EJS_NO_LOCAL);
	ejsDefineCMethod(ep, dateClass, "getTimeZoneOffset", xxxProc, EJS_NO_LOCAL);

	ejsDefineCMethod(ep, dateClass, "parse", xxxProc, EJS_NO_LOCAL);
	ejsDefineCMethod(ep, dateClass, "setDate", xxxProc, EJS_NO_LOCAL);
	ejsDefineCMethod(ep, dateClass, "setMonth", xxxProc, EJS_NO_LOCAL);
	ejsDefineCMethod(ep, dateClass, "setFullYear", xxxProc, EJS_NO_LOCAL);
	ejsDefineCMethod(ep, dateClass, "setYear", xxxProc, EJS_NO_LOCAL);
	ejsDefineCMethod(ep, dateClass, "setMinutes", xxxProc, EJS_NO_LOCAL);
	ejsDefineCMethod(ep, dateClass, "setSeconds", xxxProc, EJS_NO_LOCAL);
	ejsDefineCMethod(ep, dateClass, "setMilliseconds", xxxProc, EJS_NO_LOCAL);
	ejsDefineCMethod(ep, dateClass, "setTime", xxxProc, EJS_NO_LOCAL);

	ejsDefineCMethod(ep, dateClass, "toString", xxxProc, EJS_NO_LOCAL);
	ejsDefineCMethod(ep, dateClass, "toGMTString", xxxProc, EJS_NO_LOCAL);
	ejsDefineCMethod(ep, dateClass, "toUTCString", xxxProc, EJS_NO_LOCAL);
	ejsDefineCMethod(ep, dateClass, "toLocaleString", xxxProc, EJS_NO_LOCAL);
	ejsDefineCMethod(ep, dateClass, "UTC", xxxProc, EJS_NO_LOCAL);
	ejsDefineCMethod(ep, dateClass, "valueOf", xxxProc, EJS_NO_LOCAL);
	/*
		UTC: getUTCDate, getUTCDay, getUTCMonth, getUTCFullYear, getUTCHours,
			getUTCMinutes, getUTCSeconds, getUTCMilliseconds
			setUTCDate, setUTCDay, setUTCMonth, setUTCFullYear, setUTCHours,
			setUTCMinutes, setUTCSeconds, setUTCMilliseconds
	 */

	return ejsObjHasErrors(dateClass) ? MPR_ERR_CANT_INITIALIZE : 0;
}
Example #2
0
int ejsDefineDebugClass(EjsFiber *fp)
{
    EjsVar  *systemDebugClass;

    systemDebugClass =  ejsDefineClass(fp, "System.Debug", "Object", 0);
    if (systemDebugClass == 0) {
        return MPR_ERR_CANT_INITIALIZE;
    }

    /*
     *  Define the class methods
     */
    ejsDefineCMethod(fp, systemDebugClass, "isDebugMode", isDebugMode,
        0);

    return ejsObjHasErrors(systemDebugClass) ? MPR_ERR_CANT_INITIALIZE : 0;
}
Example #3
0
int ejsDefineFileClass(Ejs *ep)
{
	EjsVar	*fileClass;

	fileClass = ejsDefineClass(ep, "File", "Object", 0);
	if (fileClass == 0) {
		return MPR_ERR_CANT_INITIALIZE;
	}

	/*
	 *	Define the methods
	 */
	ejsDefineCMethod(ep, fileClass, "open", openProc, 0);
	ejsDefineCMethod(ep, fileClass, "close", closeProc, 0);
	ejsDefineCMethod(ep, fileClass, "read", readProc, 0);
	ejsDefineCMethod(ep, fileClass, "write", writeProc, 0);

	return ejsObjHasErrors(fileClass) ? MPR_ERR_CANT_INITIALIZE: 0;
}
Example #4
0
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;
}