00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #ifndef __OFFSCREENGECKO_SCRIPTOBJECTTEMPLATE_H__
00038 #define __OFFSCREENGECKO_SCRIPTOBJECTTEMPLATE_H__
00039
00043 #include "baseobj.h"
00044 #include "browser.h"
00045 #include "scriptvariant.h"
00046
00047 OSGK_DERIVEDTYPE(OSGK_ScriptObjectTemplate);
00048
00049 typedef enum OSGK_ScriptResult
00050 {
00051 srSuccess = 0,
00052 srFailed = 0x80004005L
00053 } OSGK_ScriptResult;
00054
00055 typedef struct OSGK_ScriptObjectCreateParams_s
00056 {
00057 void* createParam;
00058 OSGK_Browser* browser;
00059 } OSGK_ScriptObjectCreateParams;
00060
00061 typedef OSGK_ScriptResult (*OSGK_CreateObjFunc) (
00062 OSGK_ScriptObjectCreateParams* params, void** objTag);
00063 typedef void (*OSGK_DestroyObjFunc) (void* objTag);
00064
00065 OSGK_EXTERN_C OSGK_API OSGK_ScriptObjectTemplate* osgk_sot_create (
00066 OSGK_Embedding* embedding,
00067 OSGK_CreateObjFunc createFunc, OSGK_DestroyObjFunc destroyFunc,
00068 void* createParam);
00069
00070 typedef OSGK_ScriptVariant* (*OSGK_GetPropertyFunc) (void* objTag,
00071 void* propTag);
00072 typedef OSGK_ScriptResult (*OSGK_SetPropertyFunc) (void* objTag,
00073 void* propTag, OSGK_ScriptVariant* val);
00074
00075 OSGK_EXTERN_C OSGK_API int osgk_sot_add_property (
00076 OSGK_ScriptObjectTemplate* templ, const char* propName, void* propTag,
00077 OSGK_GetPropertyFunc getter, OSGK_SetPropertyFunc setter);
00078
00079 typedef OSGK_ScriptResult (*OSGK_FunctionCallFunc) (void* objTag,
00080 void* methTag, size_t numParams, OSGK_ScriptVariant** params,
00081 OSGK_ScriptVariant** returnVal);
00082
00083 OSGK_EXTERN_C OSGK_API int osgk_sot_add_function (
00084 OSGK_ScriptObjectTemplate* templ, const char* funcName, void* funcTag,
00085 OSGK_FunctionCallFunc callFunc);
00086
00087 OSGK_EXTERN_C OSGK_API OSGK_ScriptVariant* osgk_sot_instantiate (
00088 OSGK_ScriptObjectTemplate* templ, void** objTag);
00089
00090 OSGK_EXTERN_C OSGK_API int osgk_sot_register (
00091 OSGK_ScriptObjectTemplate* templ, OSGK_Embedding* embedding,
00092 const char* name, unsigned int flags);
00093
00094
00095
00096 #endif // __OFFSCREENGECKO_SCRIPTOBJECTTEMPLATE_H__