⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ejsvar.h

📁 samba最新软件
💻 H
📖 第 1 页 / 共 3 页
字号:
extern bool			ejsIsObjDirty(EjsVar *vp);			extern void			ejsResetObjDirtyBit(EjsVar *vp);			extern int			ejsObjHasErrors(EjsVar *vp);extern void			ejsClearObjErrors(EjsVar *vp);extern EjsVar		*ejsClearProperty(Ejs *ep, EjsVar *obj, const char *prop);typedef int 		(*EjsSortFn)(Ejs *ep, EjsProperty *p1, EjsProperty *p2,						const char *propertyName, int order);extern void			ejsSortProperties(Ejs *ep, EjsVar *obj, EjsSortFn fn,						const char *propertyName, int order);#if BLD_DEBUG#define 			ejsSetVarName(ep, vp, varName) \						if (1) { \							(vp)->propertyName = varName; \							if ((vp)->type == EJS_TYPE_OBJECT && \								(vp)->objectState && \								((vp)->objectState->objName == 0)) { \									(vp)->objectState->objName = \										mprStrdup(ep, varName); \							} \						} else#else#define 			ejsSetVarName(ep, vp, varName) #endifEjsVar 				*ejsFindProperty(Ejs *ep, EjsVar **obj, char **property, 						EjsVar *global, EjsVar *local, const char *fullName, 						int create);extern EjsVar 		*ejsCopyProperties(Ejs *ep, EjsVar *dest, 						const EjsVar *src, EjsCopyDepth copyDepth);#define EJS_LINK_OFFSET ((uint) (&((EjsProperty*) 0)->link))#define ejsGetPropertyFromLink(lp) \		((EjsProperty*) ((char*) lp - EJS_LINK_OFFSET))#define ejsGetObjPtr(vp) ((EjsObj*) vp->objectState)extern void 		ejsMakePropertyPrivate(EjsProperty *pp, int isPrivate);extern void 		ejsMakePropertyReadOnly(EjsProperty *pp, int readonly);extern void 		ejsMakePropertyUndeleteable(EjsProperty *pp, int deletable);extern int	 		ejsMakeObjLive(EjsVar *vp, bool alive);extern void 		ejsMakeClassNoConstructor(EjsVar *vp);extern bool			ejsBlockInUseInt(EjsVar *vp);#if BLD_DEBUG	#define ejsBlockInUse(vp) ejsBlockInUseInt(vp)#else	#define ejsBlockInUse(vp)#endif/********************************* Prototypes *********************************//* *	Variable constructors and destructors */extern EjsVar		*ejsCreateBinaryStringVar(Ejs *ep, const uchar *value,						int len);extern EjsVar 		*ejsCreateBoolVar(Ejs *ep, int value);extern EjsVar 		*ejsCreateCMethodVar(Ejs *ep, EjsCMethod fn, 						void *userData, int flags);#if BLD_FEATURE_FLOATING_POINTextern EjsVar 		*ejsCreateFloatVar(Ejs *ep, double value);#endifextern EjsVar 		*ejsCreateIntegerVar(Ejs *ep, int value);#if BLD_FEATURE_INT64extern EjsVar 		*ejsCreateInteger64Var(Ejs *ep, int64 value);#endifextern EjsVar 		*ejsCreateMethodVar(Ejs *ep, const char *body, 						MprArray *args, int flags);extern EjsVar		*ejsCreateNullVar(Ejs *ep);extern EjsVar 		*ejsCreateNumberVar(Ejs *ep, EjsNumber value);#define ejsCreateObjVar(ep) \					ejsCreateObjVarInternal(EJS_LOC_ARGS(ep))extern EjsVar		*ejsCreateObjVarInternal(EJS_LOC_DEC(ep, loc));extern EjsVar 		*ejsCreatePtrVar(Ejs *ep, void *ptr, EjsDestructor dest);extern EjsVar 		*ejsCreateStringCMethodVar(Ejs *ep, EjsStringCMethod fn, 						void *userData, int flags);#define ejsCreateStringVar(ep, value) \					ejsCreateStringVarInternal(EJS_LOC_ARGS(ep), value)extern EjsVar		*ejsCreateStringVarInternal(EJS_LOC_DEC(ep, loc), 						const char *value);extern EjsVar		*ejsCreateUndefinedVar(Ejs *ep);/* MOB -- naming. Should be Create/Destroy */extern void	 		ejsFreeVar(Ejs *ep, EjsVar *vp);/* *	Var support routines */extern int			ejsGetVarFlags(EjsVar *vp);extern void			ejsSetVarFlags(EjsVar *obj, int flags);extern EjsType		ejsGetVarType(EjsVar *vp);extern const char 	*ejsGetVarTypeAsString(EjsVar *vp);extern void			*ejsGetCMethodUserData(EjsVar *obj);extern void			ejsSetCMethodUserData(EjsVar *obj, void *userData);extern void			*ejsGetVarUserPtr(EjsVar *vp);extern void			ejsSetVarUserPtr(EjsVar *vp, void *data);/* *	Variable access and manipulation. These work on standalone objects. */#define ejsDupVar(ep, src, copyDepth) \						ejsDupVarInternal(EJS_LOC_ARGS(ep), src, copyDepth)extern EjsVar		*ejsDupVarInternal(EJS_LOC_DEC(ep, loc), EjsVar *src, 						EjsCopyDepth copyDepth);#define ejsWriteVar(ep, dest, src, copyDepth) \					ejsWriteVarInternal(EJS_LOC_ARGS(ep), dest, src, copyDepth)extern EjsVar		*ejsWriteVarInternal(EJS_LOC_DEC(ep, loc), EjsVar *dest, 						const EjsVar *src, EjsCopyDepth copyDepth);extern EjsVar 		*ejsWriteVarAsBinaryString(Ejs *ep, EjsVar *dest, 						const uchar *value, int len);extern EjsVar		*ejsWriteVarAsBoolean(Ejs *ep, EjsVar *dest, bool value);extern EjsVar		*ejsWriteVarAsCMethod(Ejs *ep, EjsVar *dest, EjsCMethod fn, 						void *userData, int flags);#if BLD_FEATURE_FLOATING_POINTextern EjsVar		*ejsWriteVarAsFloat(Ejs *ep, EjsVar *dest, double value);#endifextern EjsVar		*ejsWriteVarAsInteger(Ejs *ep, EjsVar *dest, int value);#if BLD_FEATURE_INT64extern EjsVar		*ejsWriteVarAsInteger64(Ejs *ep, EjsVar *dest, int64 value);#endifextern EjsVar		*ejsWriteVarAsMethod(Ejs *ep, EjsVar *dest, 						const char *body, MprArray *args);extern EjsVar		*ejsWriteVarAsNull(Ejs *ep, EjsVar *dest);extern EjsVar		*ejsWriteVarAsNumber(Ejs *ep, EjsVar *dest, EjsNum value);#define ejsWriteVarAsString(ep, dest, value) \					ejsWriteVarAsStringInternal(EJS_LOC_ARGS(ep), dest, value)extern EjsVar		*ejsWriteVarAsStringInternal(EJS_LOC_DEC(ep, loc), 						EjsVar *dest, const char *value);extern EjsVar		*ejsWriteVarAsStringCMethod(Ejs *ep, EjsVar *dest, 						EjsStringCMethod fn, void *userData, int flags);extern EjsVar		*ejsWriteVarAsUndefined(Ejs *ep, EjsVar *dest);/* *	These routines do not convert types *//* MOB -- make this a fn and pass back the length as an arg */#define ejsReadVarAsBinaryString(vp) ((const uchar*) (vp->ustring));#define ejsReadVarAsBoolean(vp) (vp->boolean);#define ejsReadVarAsCMethod(vp) (vp->cMethod);#if BLD_FEATURE_FLOATING_POINT#define ejsReadVarAsFloat(vp) (vp->floating);#endif#define ejsReadVarAsInteger(vp) (vp->integer);#if BLD_FEATURE_INT64#define ejsReadVarAsInteger64(vp) (vp->int64);#endif#define ejsReadVarAsString(vp) ((const char*) (vp->string));#define ejsReadVarAsStringCMethod(vp) (vp->cMethodWithStrings);/* MOB -- remove this fn */#define ejsReadVarStringLength(vp) (vp->length);/* *	Object property creation routines */extern EjsProperty	*ejsCreateProperty(Ejs *ep, EjsVar *obj, const char *prop);extern EjsProperty	*ejsCreateSimpleProperty(Ejs *ep, EjsVar *obj, 						const char *prop);extern EjsProperty	*ejsCreateSimpleNonUniqueProperty(Ejs *ep, EjsVar *obj, 						const char *prop);/* MOB -- should be destroy */extern int			ejsDeleteProperty(Ejs *ep, EjsVar *obj, const char *prop);/* *	Get property routines */extern EjsProperty 	*ejsGetProperty(Ejs *ep, EjsVar *obj, const char *prop);extern EjsProperty 	*ejsGetSimpleProperty(Ejs *ep, EjsVar *obj, 						const char *prop);extern EjsVar		*ejsGetPropertyAsVar(Ejs *ep, EjsVar *obj, 						const char *prop);extern int			ejsGetPropertyCount(EjsVar *obj);extern const uchar	*ejsGetPropertyAsBinaryString(Ejs *ep, EjsVar *obj, 						const char *prop, int *length);extern bool			ejsGetPropertyAsBoolean(Ejs *ep, EjsVar *obj, 						const char *prop);extern int			ejsGetPropertyAsInteger(Ejs *ep, EjsVar *obj, 						const char *prop);extern int64		ejsGetPropertyAsInteger64(Ejs *ep, EjsVar *obj, 						const char *prop);extern EjsNum 		ejsGetPropertyAsNumber(Ejs *ep, EjsVar *obj, 						const char *prop);extern void			*ejsGetPropertyAsPtr(Ejs *ep, EjsVar *obj, 						const char *prop);extern const char	*ejsGetPropertyAsString(Ejs *ep, EjsVar *obj, 						const char *prop);/*  *	Object property update routines  */extern EjsProperty	*ejsSetBaseProperty(Ejs *ep, EjsVar *obj, const char *prop, 						const EjsVar *value);extern EjsProperty	*ejsSetProperty(Ejs *ep, EjsVar *obj, const char *prop, 						const EjsVar *value);extern EjsProperty	*ejsSetPropertyAndFree(Ejs *ep, EjsVar *obj, 						const char *prop, EjsVar *value);extern EjsProperty	*ejsSetPropertyToBinaryString(Ejs *ep, EjsVar *obj, 						const char *prop, const uchar *value, int len);extern EjsProperty	*ejsSetPropertyToBoolean(Ejs *ep, EjsVar *obj, 						const char *prop, bool value);extern EjsProperty	*ejsSetPropertyToCMethod(Ejs *ep, EjsVar *obj, 						const char *prop, EjsCMethod fn, void *userData, 						int flags);#if BLD_FEATURE_FLOATING_POINTextern EjsProperty	*ejsSetPropertyToFloat(Ejs *ep, EjsVar *obj, 						const char *prop, double value);#endifextern EjsProperty	*ejsSetPropertyToInteger(Ejs *ep, EjsVar *obj, 						const char *prop, int value);#if BLD_FEATURE_INT64extern EjsProperty	*ejsSetPropertyToInteger64(Ejs *ep, EjsVar *obj, 						const char *prop, int64 value);#endifextern EjsProperty	*ejsSetPropertyToMethod(Ejs *ep, EjsVar *obj, 						const char *prop, const char *body, MprArray *args,						int flags);extern EjsProperty	*ejsSetPropertyToNewObj(Ejs *ep, EjsVar *obj, 						const char *prop, const char *className, 						MprArray *args);extern EjsProperty	*ejsSetPropertyToNull(Ejs *ep, EjsVar *obj, 						const char *prop);extern EjsProperty	*ejsSetPropertyToNumber(Ejs *ep, EjsVar *obj, 						const char *prop, EjsNum value);extern EjsProperty	*ejsSetPropertyToObj(Ejs *ep, EjsVar *obj, 						const char *prop);extern EjsProperty	*ejsSetPropertyToPtr(Ejs *ep, EjsVar *obj, 						const char *prop, void *ptr, EjsDestructor destructor);extern EjsProperty	*ejsSetPropertyToStringCMethod(Ejs *ep, EjsVar *obj, 						const char *prop, EjsStringCMethod fn, 						void *userData, int flags);extern EjsProperty	*ejsSetPropertyToString(Ejs *ep, EjsVar *obj, 						const char *prop, const char *value);extern EjsProperty	*ejsSetPropertyToUndefined(Ejs *ep, EjsVar *obj, 						const char *prop);/* Convenience function */extern EjsVar 		*ejsSetPropertyToObjAsVar(Ejs *ep, EjsVar *obj, 						const char *prop);extern void			ejsSetObjDestructor(Ejs *ep, EjsVar *obj, 						EjsDestructor destructor);extern void			ejsClearObjDestructor(Ejs *ep, EjsVar *obj);/* *	Enumeration of properties *	MOB -- should these take an ejs parameter to be consistent */extern EjsProperty 	*ejsGetFirstProperty(const EjsVar *obj, int flags);extern EjsProperty 	*ejsGetNextProperty(EjsProperty *last, int flags);/*  *	Method definition and control. */extern EjsProperty	*ejsDefineMethod(Ejs *ep, EjsVar *obj, const char *prop, 						const char *body, MprArray *args);extern EjsProperty	*ejsDefineCMethod(Ejs *ep, EjsVar *obj, const char *prop, 						EjsCMethod fn, int flags);extern EjsProperty	*ejsDefineStringCMethod(Ejs *ep, EjsVar *obj, 						const char *prop, EjsStringCMethod fn, int flags);extern EjsProperty	*ejsDefineAccessors(Ejs *ep, EjsVar *obj, 						const char *prop, const char *getBody, 						const char *setBody);extern EjsProperty	*ejsDefineCAccessors(Ejs *ep, EjsVar *obj, 						const char *prop, EjsCMethod getFn, EjsCMethod setFn,						 int flags);/* *	Macro to get the variable value portion of a property */#define ejsGetVarPtr(pp) (&((pp)->var))#define ejsGetPropertyPtr(vp) ((EjsProperty*) vp)/* MOB -- take ejs to be consistent */extern int	 		ejsMakePropertyEnumerable(EjsProperty *pp, bool enumerable);extern int	 		ejsMakeObjPermanent(EjsVar *vp, bool permanent);/* *	Var conversion routines *	MOB -- should these take an Ejs as first arg for consistency */extern bool	 	ejsVarToBoolean(EjsVar *vp);#if BLD_FEATURE_FLOATING_POINTextern double 	ejsVarToFloat(EjsVar *vp);#endifextern int	 	ejsVarToInteger(EjsVar *vp);#if BLD_FEATURE_INT64extern int64 	ejsVarToInteger64(EjsVar *vp);#endifextern EjsNum 	ejsVarToNumber(EjsVar *vp);extern char		*ejsVarToString(Ejs *ep, EjsVar *vp);extern char 	*ejsVarToStringEx(Ejs *ep, EjsVar *vp, bool *alloc);extern char		*ejsFormatVar(Ejs *ep, const char *fmt, EjsVar *vp);#if BLD_FEATURE_FLOATING_POINTextern double 	ejsParseFloat(const char *str);#endif/* *	Parsing and type range checking routines */extern bool	 	ejsParseBoolean(const char *str);extern int	 	ejsParseInteger(const char *str);#if BLD_FEATURE_INT64extern int64 	ejsParseInteger64(const char *str);#endifextern EjsNum 	ejsParseNumber(const char *str);extern EjsVar 	*ejsParseVar(Ejs *ep, const char *str, EjsType prefType);#if BLD_FEATURE_FLOATING_POINTextern bool	 	ejsIsInfinite(double f);extern bool	 	ejsIsNan(double f);#endif/* *	Advisory locking support */#if BLD_FEATURE_MULTITHREADextern void 	ejsLockObj(EjsVar *vp);extern void 	ejsUnlockObj(EjsVar *vp);#endif/* *	Just for debugging */extern bool 		ejsObjIsCollectable(EjsVar *vp);#ifdef __cplusplus}#endif/*****************************************************************************/#endif /* _h_EJS_VAR *//* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: * vim:tw=78 * vim600: sw=4 ts=4 fdm=marker * vim<600: sw=4 ts=4 */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -