Find Jobs
Hire Freelancers

Sviluppare una Applicazione Mac

$30-250 USD

Chiuso
Pubblicato circa 8 anni fa

$30-250 USD

Pagato al completamento
HI, I need convert a DLL from Windows C++ to Mac C++ I have the source code, I write the windows version, I need have the source code and a Mac batch to compile on Mac The DLL use the cUrl library to call a web site and return the html The code ha 6 files: I will send the file by mail.. /************************* / MAIN FILE /************************* extern "C" { #include "mm_jsapi.h" } #include "global.h" #include "WebRequest.h" #include "MMInfo.h" /* Every implementation of a Javascript function must have this signature */ JSBool getServerBehaviorDefinition(JSContext *cx, JSObject *obj, unsigned int argc, jsval *argv, jsval *rval) { char *m_user_name; char *m_password; char *m_serial; char *m_operazione; char *m_extension; char *m_url; char *m_version; char *m_sub_type; /* Make sure the right number of arguments were passed in */ if (argc != 8) return JS_FALSE; JSBool success = JS_TRUE; m_user_name = JS_ValueToString(cx, argv[0], 0); m_password = JS_ValueToString(cx, argv[1], 0); m_serial = JS_ValueToString(cx, argv[2], 0); m_operazione = JS_ValueToString(cx, argv[3], 0); m_extension = JS_ValueToString(cx, argv[4], 0); m_url = JS_ValueToString(cx, argv[5], 0); m_version = JS_ValueToString(cx, argv[6], 0); m_sub_type = JS_ValueToString(cx, argv[7], 0); char* f_html = new char[10]; char* f_params[14] = { "user_name", m_user_name, "password", m_password, "serial", m_serial, "operazione", m_operazione, "extension", m_extension, "version", m_version, "sub_type", m_sub_type}; int f_result = CallWeb(m_url, f_params, f_html); if (f_result == 1) { success = JS_StringToValue(cx, f_html, 0, rval); } else { f_html = "error_void_response"; success = JS_StringToValue(cx, f_html, 0, rval); } /* Indicate success */ return success; } JSBool setShowMessage(JSContext *cx, JSObject *obj, unsigned int argc, jsval *argv, jsval *rval) { if (argc != 1) return JS_FALSE; char *m_show = JS_ValueToString(cx, argv[0], 0); if (strcmp(m_show, "1") == 0) { m_show_message = 1; } else { m_show_message = 0; } return JS_TRUE; } JSBool setWriteLog(JSContext *cx, JSObject *obj, unsigned int argc, jsval *argv, jsval *rval) { if (argc != 1) return JS_FALSE; char *m_show = JS_ValueToString(cx, argv[0], 0); if (strcmp(m_show, "1") == 0) { m_write_log = 1; } else { m_write_log = 0; } return JS_TRUE; } JSBool setLogPath(JSContext *cx, JSObject *obj, unsigned int argc, jsval *argv, jsval *rval) { if (argc != 1) return JS_FALSE; m_log_path = JS_ValueToString(cx, argv[0], 0); return JS_TRUE; } /* MM_STATE is a macro that expands to some definitions that are * needed in order interact with Dreamweaver. This macro must be * defined exactly once in your library */ MM_STATE /* Dreamweaver calls MM_Init when your library is loaded. */ void MM_Init() { /* Declare the Javascript function, giving it a name that's * likely to be unique */ JS_DefineFunction("getServerBehaviorDefinition", getServerBehaviorDefinition, 8); JS_DefineFunction("setShowMessage", setShowMessage, 1); JS_DefineFunction("setWriteLog", setWriteLog, 1); JS_DefineFunction("setLogPath", setLogPath, 1); } /************************* / GLOBAL.H /************************* #ifndef _DWZ_GLOBAL_H_ #define _DWZ_GLOBAL_H_ #include <string.h> #include <fstream> #include <windows.h> static int m_show_message = 0; static int m_write_log = 0; static std::string m_log_path; void write_text_to_log_file(char *text) { if (m_write_log == 0 || [login to view URL]() == 0) { return; } std::ofstream log(m_log_path, std::ios_base::app | std::ios_base::out); log << text << "\n"; } void ShowError(char *text) { if (m_show_message == 0) { return; } MessageBox(0, (LPCSTR)text, (LPCSTR)("Errore"), MB_OK); } #endif /************************* / WebRequest.h /************************* #include "global.h" #include "curl/curl.h" #include <fstream> #include <string.h> static std::string readBuffer; static size_t WriteCallback(void *contents, size_t size, size_t nmemb, void *userp) { ((std::string*)userp)->append((char*)contents, size * nmemb); return size * nmemb; } int CallWeb(char *v_url, char* v_params[], char* &res) { int f_result = 0; std::string f_str_params = ""; char* f_key = NULL; char* f_value = NULL; for (int x = 0; x < sizeof(v_params); x = x + 2) { if (x > 0) { f_str_params += "&"; } f_key = v_params[x]; f_value = v_params[x + 1]; f_str_params += f_key; f_str_params += "="; f_str_params += f_value; } char *f_char_params = _strdup(f_str_params.c_str()); f_str_params += "&PAR-NAME"; f_str_params += "="; f_str_params += "SOME-TEXT"; CURL *curl; CURLcode response; [login to view URL](); /* In windows, this will init the winsock stuff */ curl_global_init(CURL_GLOBAL_ALL); /* get a curl handle */ curl = curl_easy_init(); if (curl) { /* First set the URL that is about to receive our POST. This URL can just as well be a https:// URL if that is what should receive the data. */ curl_easy_setopt(curl, CURLOPT_URL, v_url); /* Now specify the POST data */ curl_easy_setopt(curl, CURLOPT_POSTFIELDS, f_char_params); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer); /* Perform the request, res will get the return code */ response = curl_easy_perform(curl); /* Check for errors */ if (response != CURLE_OK) { f_result = 0; fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(response)); } else { f_result = 1; } /* always cleanup */ curl_easy_cleanup(curl); } curl_global_cleanup(); if (f_result == 1) { res = new char[[login to view URL]()]; strcpy(res, readBuffer.c_str()); } else { //res = "ko"; } return f_result; } /************************* / mm_jsapi_environment.h /************************* #ifndef _MM_JSAPI_ENVIRONMENT_H_ #define _MM_JSAPI_ENVIRONMENT_H_ /***************************************************************************** * Private data types, macros, and globals ****************************************************************************/ #include "mm_jsclassapi.h" typedef struct { JSObject *libObj; JSBool (*defineFunction)(JSObject *libObj, char *name, JSNative call, unsigned int nargs); char *(*valueToString)(JSContext *cx, jsval v, size_t *pLength); JSBool (*valueToInteger)(JSContext *cx, jsval v, long *lp); JSBool (*valueToDouble)(JSContext *cx, jsval v, double *dp); JSBool (*valueToBoolean)(JSContext *cx, jsval v, JSBool *bp); JSBool (*valueToObject)(JSContext *cx, jsval v, JSObject **op); JSBool (*stringToValue)(JSContext *cx, char *b, unsigned int sz, jsval *vp); JSBool (*doubleToValue)(JSContext *cx, double dv, jsval *vp); char *(*objectType)(JSObject *obj); JSObject *(*newArrayObject)(JSContext *cx, unsigned int length, jsval *vp); long (*getArrayLength)(JSContext *cx, JSObject *obj); JSBool (*getElement)(JSContext *cx, JSObject *obj, unsigned int idx, jsval *vp); JSBool (*setElement)(JSContext *cx, JSObject *obj, unsigned int idx, jsval *vp); JSBool (*executeScript)(JSContext *cx, JSObject *obj, char *script, unsigned int sz, const char *file, unsigned int lineNum, jsval *rval); JSBool (*reportError)(JSContext *cx, char *error, unsigned int sz); JSBool (*getJavaVM)(void **jvm, void** env); // for private internal use jschar *(*valueToUCString)(JSContext *cx, jsval v, size_t *pLength); JSBool (*ucstringToValue)(JSContext *cx, jschar *c, unsigned int sz, jsval *vp); JSObject *(*getConfigFolderList)(JSContext *cx, char *fileUrl, char *constraints); JSBool (*configFileExists)(char *fileURL); int (*openConfigFile)(char *fileURL, char *mode); JSBool (*getConfigFileAttributes)(char *fileUrl, unsigned long* attrs, unsigned long* filesize, unsigned long* modtime, unsigned long* createtime); JSBool (*setConfigFileAttributes)(char *fileURL, unsigned long attrs); JSBool (*createConfigFolder)(char *fileURL); JSBool (*removeConfigFolder)(char *fileURL); JSBool (*deleteConfigFile)(char *fileURL); JSObject *(*getUCConfigFolderList)(JSContext *cx, jschar *fileUrl, jschar *constraints); JSBool (*ucconfigFileExists)(jschar *fileURL); ptrdiff_t (*openUCConfigFile)(jschar *fileURL, jschar *mode); JSBool (*getUCConfigFileAttributes)(jschar *fileUrl, unsigned long* attrs, unsigned long* filesize, unsigned long* modtime, unsigned long* createtime); JSBool (*setUCConfigFileAttributes)(jschar *fileURL, unsigned long attrs); JSBool (*createUCConfigFolder)(jschar *fileURL); JSBool (*removeUCConfigFolder)(jschar *fileURL); JSBool (*deleteUCConfigFile)(jschar *fileURL); JSBool (*executeUCScript)(JSContext *cx, JSObject *obj, jschar *script, unsigned int sz, const char *file, unsigned int lineNum, jsval *rval); JSBool (*readUCConfigFile)(JSContext *cx, jschar *fileURL, jschar *charset, jsval *vp); JSBool (*writeUCConfigFile)(jschar *fileURL, jschar *mode, jschar *text, jschar *charset, jsval *vp); JSBool (*resolveUCConfigFilePath)(const jschar * inFilePath, jschar* outFilePath, unsigned int outFileLength); JSBool (*reportErrorByStringID)(JSContext *cx, const jschar *error, unsigned int sz); JSObject *(*registerClass)(JSContext *cx, JSObject *obj, JSObject *parent_proto, JS_ClassSpec *class_spec); JSBool (*setClassData)(JSContext *cx, JSObject *obj, void *data); void * (*getClassData)(JSContext *cx, JSObject *obj); } MM_Environment; #endif /* _MM_JSAPI_ENVIRONMENT_H_ */ /************************* / mm_jsapi.h /************************* #ifndef _MM_JSAPI_H_ #define _MM_JSAPI_H_ #include <stddef.h> /***************************************************************************** * Public data types ****************************************************************************/ typedef struct JSContext JSContext; typedef struct JSObject JSObject; typedef ptrdiff_t jsval; //DW_64BIT Fix JavaScript Spider Monkey Crash on start with 64 bit. //There was a difference in data type used in Spider Monkey Code and DW interface. //Hence changing from long to ptrdiff_t #ifndef CORE_INT_TYPES #define CORE_INT_TYPES #if __GNUC__ #include <stdint.h> #endif //These usigned versions are also declared in some apple headers so make sure our types match #ifndef _UINT64 #ifdef _UINT64_T typedef uint64_t uint64; #else typedef unsigned long long uint64; #endif #endif #ifdef _INT64_T typedef int64_t int64; #else typedef long long int64; #endif #ifndef _UINT32 #ifdef _UINT32_T typedef uint32_t uint32; #else typedef unsigned long uint32; #endif #endif #ifdef _INT32_T typedef int32_t int32; #else typedef signed long int32; #endif #ifndef _UINT16 #ifdef _UINT16_T typedef uint16_t uint16; #else typedef unsigned short uint16; #endif #endif #ifdef _INT16_T typedef int16_t int16; #else typedef signed short int16; #endif #ifndef _UINT8 #ifdef _UINT8_T typedef uint8_t uint8; #else typedef unsigned char uint8; #endif #endif #ifdef _INT8_T typedef int8_t int8; #else typedef signed char int8; #endif #endif typedef int32 jsint; #ifndef JSBool typedef int JSBool; #endif #ifndef jschar typedef unsigned short jschar; #endif #ifndef NULL #define NULL 0 #endif typedef JSBool (*JSNative)(JSContext *cx, JSObject *obj, unsigned int argc, jsval *argv, jsval *rval); #ifndef jsapi_h___ /* Possible values for JSBool */ #define JS_TRUE 1 #define JS_FALSE 0 /* * Type tags stored in the low bits of a jsval. */ #define JSVAL_OBJECT 0x0 /* untagged reference to object */ #define JSVAL_INT 0x1 /* tagged 31-bit integer value */ #define JSVAL_DOUBLE 0x2 /* tagged reference to double */ #define JSVAL_STRING 0x4 /* tagged reference to string */ #define JSVAL_BOOLEAN 0x6 /* tagged boolean value */ #define JSVAL_INT_POW2(n) ((jsval)1 << (n)) #define JSVAL_VOID INT_TO_JSVAL(0 - JSVAL_INT_POW2(30)) #define JSVAL_TO_INT(v) ((jsint)(v) >> 1) #define INT_TO_JSVAL(i) (((jsval)(i) << 1) | JSVAL_INT) #define JSVAL_IS_INT(v) (((v) & JSVAL_INT) && (v) != JSVAL_VOID) #endif // Attribute values Get/SetConfigFileAttributes // #define MM_FILEATTR_NORMAL 0x00 /* Normal file - No read/write restrictions */ #define MM_FILEATTR_RDONLY 0x01 /* Read only file */ #define MM_FILEATTR_HIDDEN 0x02 /* Hidden file */ #define MM_FILEATTR_SYSTEM 0x04 /* System file */ #define MM_FILEATTR_SUBDIR 0x10 /* Subdirectory */ /***************************************************************************** * Public functions ****************************************************************************/ /* JSBool JS_DefineFunction(char *name, JSNative call, unsigned int nargs) */ #define JS_DefineFunction(n, c, a) \ ([login to view URL] ? (*([login to view URL]))([login to view URL], n, c, a) \ : JS_FALSE) /* char *JS_ValueToString(JSContext *cx, jsval v, unsigned int *pLength) */ #define JS_ValueToString(c, v, l) \ ([login to view URL] ? (*([login to view URL]))(c, v, l) : (char *)0) /* char *JS_ValueToUCString(JSContext *cx, jsval v, unsigned int *pLength) */ #define JS_ValueToUCString(c, v, l) \ ([login to view URL] ? (*([login to view URL]))(c, v, l) : (jschar *)0) /* JSBool JS_ValueToInteger(JSContext *cx, jsval v, long *lp); */ #define JS_ValueToInteger(c, v, l) \ ([login to view URL] ? (*([login to view URL]))(c, v, l) : JS_FALSE) /* JSBool JS_ValueToDouble(JSContext *cx, jsval v, double *dp); */ #define JS_ValueToDouble(c, v, d) \ ([login to view URL] ? (*([login to view URL]))(c, v, d) : JS_FALSE) /* JSBool JS_ValueToBoolean(JSContext *cx, jsval v, JSBool *bp); */ #define JS_ValueToBoolean(c, v, b) \ ([login to view URL] ? (*([login to view URL]))(c, v, b) : JS_FALSE) /* JSBool JS_ValueToObject(JSContext *cx, jsval v, JSObject **op); */ #define JS_ValueToObject(c, v, o) \ ([login to view URL] ? (*([login to view URL]))(c, v, o) : JS_FALSE) /* JSBool JS_StringToValue(JSContext *cx, char *bytes, uint sz, jsval *vp); */ #define JS_StringToValue(c, b, s, v) \ ([login to view URL] ? (*([login to view URL]))(c, b, s, v) : JS_FALSE) /* JSBool JS_UCStringToValue(JSContext *cx, char *bytes, uint sz, jsval *vp); */ #define JS_UCStringToValue(c, b, s, v) \ ([login to view URL] ? (*([login to view URL]))(c, b, s, v) : JS_FALSE) /* JSBool JS_DoubleToValue(JSContext *cx, double dv, jsval *vp); */ #define JS_DoubleToValue(c, d, v) \ ([login to view URL] ? (*([login to view URL]))(c, d, v) : JS_FALSE) /* jsval JS_IntegerToValue(long lv); */ #define JS_IntegerToValue(lv) (((jsval)(lv) << 1) | 0x1) /* jsval JS_BooleanToValue(JSBool bv); */ #define JS_BooleanToValue(bv) (((jsval)(bv) << 3) | 0x6) /* jsval JS_ObjectToValue(JSObject *obj); */ #define JS_ObjectToValue(ov) ((jsval)(ov)) /* char *JS_ObjectType(JSObject *obj); */ #define JS_ObjectType(o) \ ([login to view URL] ? (*([login to view URL]))(o) : (char *)0) /* JSObject *JS_NewArrayObject(JSContext *cx, unsigned int length, jsval *v) */ #define JS_NewArrayObject(c, l, v) \ ([login to view URL] ? (*([login to view URL]))(c, l, v) : (JSObject *)0) /* long JS_GetArrayLength(JSContext *cx, JSObject *obj) */ #define JS_GetArrayLength(c, o) \ ([login to view URL] ? (*([login to view URL]))(c, o) : -1) /* JSBool JS_GetElement(JSContext *cx, JSObject *obj, jsint idx, jsval *vp) */ #define JS_GetElement(c, o, i, v) \ ([login to view URL] ? (*([login to view URL]))(c, o, i, v) : JS_FALSE) /* JSBool JS_SetElement(JSContext *cx, JSObject *obj, jsint idx, jsval *vp) */ #define JS_SetElement(c, o, i, v) \ ([login to view URL] ? (*([login to view URL]))(c, o, i, v) : JS_FALSE) /* JSBool JS_ExecuteScript(JSContext *cx, JSObject *obj, char *script, * unsigned int sz, jsval *rval) */ #define JS_ExecuteScript(c, o, s, z, r) \ ([login to view URL] ? (*([login to view URL]))(c, o, s, z, __FILE__, \ __LINE__, r) : JS_FALSE) /* JSBool JS_ExecuteUCScript(JSContext *cx, JSObject *obj, char *script, * unsigned int sz, jsval *rval) */ #define JS_ExecuteUCScript(c, o, s, z, r) \ ([login to view URL] ? (*([login to view URL]))(c, o, s, z, __FILE__, \ __LINE__, r) : JS_FALSE) /* JSBool JS_ReportError(JSContext *cx, char *error, unsigned int sz) */ #define JS_ReportError(c, e, s) \ ([login to view URL] ? (*([login to view URL]))(c, e, s) : JS_FALSE) /* JSBool JS_ReportErrorByStringID(JSContext *cx, const jschar *errorId, unsigned int sz) * This will load the appropiate localized string and report the error */ #define JS_ReportErrorByStringID(c, e, s) \ ([login to view URL] ? (*([login to view URL]))(c, e, s) : JS_FALSE) /***************************************************************************** * ConfigFile functions * Use the following file functions in place of system calls if any of * the file operations may act on files in the Dreamweaver configuration * folder. On multiple user systems, such as Windows XP and Mac OSX, * these functions will always work even if the user does not have write * permission in the configuration folder. See Extending Dreamweaver for * more info. * * Note: you can use these functions for non-configuration files as well. ****************************************************************************/ /* JSObject * MM_GetConfigFolderList (JSContext *cx, char *fileUrl, char *constraints = NULL) */ #define MM_GetConfigFolderList(c, f, cn) \ ([login to view URL] ? (*([login to view URL]))(c, f, cn) : (JSObject *)0) /* JSObject * MM_GetUCConfigFolderList (JSContext *cx, char *fileUrl, char *constraints = NULL) */ #define MM_GetUCConfigFolderList(c, f, cn) \ ([login to view URL] ? (*([login to view URL]))(c, f, cn) : (JSObject *)0) /* JSBool MM_ConfigFileExists (char *fileURL) */ #define MM_ConfigFileExists(f) \ ([login to view URL] ? (*([login to view URL]))(f) : JS_FALSE) /* JSBool MM_UCConfigFileExists (char *fileURL) */ #define MM_UCConfigFileExists(f) \ ([login to view URL] ? (*([login to view URL]))(f) : JS_FALSE) /* int MM_OpenConfigFile (char *fileURL, char *mode) - note: mode can be "read" or "write", "write" implies create - note: on windows, the handle you get back is a MS C Runtime file handle opened from msvcrt.dll. This is for backwards compatibility, as Dreamweaver no longer links against this dll. The function MM_OpenUCConfigFile() is preferred to get a file handle. - note: on mac, the handle is the forkRefNum result from FSOpenFork() with the data fork of the file*/ #define MM_OpenConfigFile(f, m) \ ([login to view URL] ? (*([login to view URL]))(f, m) : JS_FALSE) /* long MM_OpenUCConfigFile (char *fileURL, char *mode) - note: mode can be "read" or "write", "write" implies create - note: on windows, the handle you get back is an osfhandle in order to use it with the MS Runtime Library use _open_osfhandle() - note: on mac, the handle is the forkRefNum result from FSOpenFork() with the data fork of the file*/ #define MM_OpenUCConfigFile(f, m) \ ([login to view URL] ? (*([login to view URL]))(f, m) : JS_FALSE) /* JSObject * MM_GetConfigFileAttributes (char *fileUrl, unsigned long* attrs, unsigned long* filesize, unsigned long* modtime, unsigned long* createtime) - return string with some or all characters "DRHS", or NULL if error */ #define MM_GetConfigFileAttributes(f, a, s, m, c) \ ([login to view URL] ? (*([login to view URL]))(f, a, s, m, c) : JS_FALSE) /* JSObject * MM_GetUCConfigFileAttributes (char *fileUrl, unsigned long* attrs, unsigned long* filesize, unsigned long* modtime, unsigned long* createtime) - return string with some or all characters "DRHS", or NULL if error */ #define MM_GetUCConfigFileAttributes(f, a, s, m, c) \ ([login to view URL] ? (*([login to view URL]))(f, a, s, m, c) : JS_FALSE) /* JSBool MM_SetConfigFileAttributes (char *fileURL, unsigned long attrs) */ #define MM_SetConfigFileAttributes(f, a) \ ([login to view URL] ? (*([login to view URL]))(f, a) : JS_FALSE) /* JSBool MM_SetUCConfigFileAttributes (char *fileURL, unsigned long attrs) */ #define MM_SetUCConfigFileAttributes(f, a) \ ([login to view URL] ? (*([login to view URL]))(f, a) : JS_FALSE) /* JSBool MM_CreateConfigFolder (char *fileURL) */ #define MM_CreateConfigFolder(f) \ ([login to view URL] ? (*([login to view URL]))(f) : JS_FALSE) /* JSBool MM_CreateUCConfigFolder (char *fileURL) */ #define MM_CreateUCConfigFolder(f) \ ([login to view URL] ? (*([login to view URL]))(f) : JS_FALSE) /* JSBool MM_RemoveConfigFolder (char *fileURL) */ #define MM_RemoveConfigFolder(f) \ ([login to view URL] ? (*([login to view URL]))(f) : JS_FALSE) /* JSBool MM_RemoveUCConfigFolder (char *fileURL) */ #define MM_RemoveUCConfigFolder(f) \ ([login to view URL] ? (*([login to view URL]))(f) : JS_FALSE) /* JSBool MM_DeleteConfigFile (char *fileURL) */ #define MM_DeleteConfigFile(f) \ ([login to view URL] ? (*([login to view URL]))(f) : JS_FALSE) /* JSBool MM_DeleteUCConfigFile (char *fileURL) */ #define MM_DeleteUCConfigFile(f) \ ([login to view URL] ? (*([login to view URL]))(f) : JS_FALSE) /* JSBool MM_ReadUCConfigFile (JSContext *cx, char *fileURL, char* charset, jsval *rval) */ #define MM_ReadUCConfigFile(cx, f, c, v) \ ([login to view URL] ? (*([login to view URL]))(cx, f, c, v) : JS_FALSE) /* JSBool MM_WriteUCConfigFile (char *fileURL, char *mode, char *text, char* charset, jsval *rval) */ #define MM_WriteUCConfigFile(f, m, t, c, v) \ ([login to view URL] ? (*([login to view URL]))(f, m, t, c, v) : JS_FALSE) /* JSBool MM_ResolveUCConfigFileURL (const jschar * inFileUrl, jschar* outFileUrl, unsigned int outFileLength) */ #define MM_ResolveUCConfigFilePath(ip, op, l) \ ([login to view URL] ? (*([login to view URL]))(ip, op, l) : JS_FALSE) /* JSObject * JS_RegisterClass (JSContext *cx, JSObject *obj, JSObject *parent_proto, MM_ClassSpec * class_spec) */ #define JS_RegisterClass(cx, obj, parent_proto, class_spec) \ ([login to view URL] ? (*([login to view URL]))(cx, obj, parent_proto, class_spec) : NULL) /* JSBool JS_SetClassData (JSContext *cx, JSObject *obj, void *data) */ #define JS_SetClassData(cx, obj, data) \ ([login to view URL] ? (*([login to view URL]))(cx, obj, data) : JS_FALSE) /* void * JS_GetClassData (JSContext *cx, JSObject *obj) */ #define JS_GetClassData(cx, obj) \ ([login to view URL] ? (*([login to view URL]))(cx, obj) : NULL) /***************************************************************************** * Public interfaces for defining your own classes. Normally a JSExtension is * it's own static global object so there's no instance or state information * associated with it. These let you define your own classes that can have * multiple instances of and a little more object oriented for the js scrippter. ****************************************************************************/ /* You need to implement this function to get your classes register. This function * will get called during application lauch so it shouldn't do more work than just * defining the apis you are exposing. If you aren't defining a class you can * comment this prototype out. */ // Declare the external entry point and linkage #ifdef _WIN32 __declspec( dllexport ) void MM_RegisterClasses(JSContext *cx, JSObject *obj, JSObject *parent_proto); #else // Codewarrior # pragma export on extern void MM_RegisterClasses(JSContext *cx, JSObject *obj, JSObject *parent_proto); # pragma export off #endif #ifndef jsapi_h___ /* * Add, delete, get or set a property named by iD in obj. Note the jsval iD * type -- iD may be a string (Unicode property identifier) or an int (element * index). The *vp out parameter, on success, is the new property value after * an add, get, or set. After a successful delete, *vp is JSVAL_FALSE iff * obj[iD] can't be deleted (because it's permanent). */ typedef JSBool(*JSPropertyOp)(JSContext *cx, JSObject *obj, jsval iD, jsval *vp); typedef void(*JSFinalizeOp)(JSContext *cx, JSObject *obj); /* Stub function for default implementation */ JSBool JS_PropertyStub(JSContext *cx, JSObject *obj, jsval iD, jsval *vp); void JS_FinalizeStub(JSContext *cx, JSObject *obj); /* Property attributes, set in JSPropertySpec and passed to API functions. */ #define JSPROP_ENUMERATE 0x01 /* property is visible to for/in loop */ #define JSPROP_READONLY 0x02 /* not settable: assignment is no-op */ #define JSPROP_PERMANENT 0x04 /* property cannot be deleted */ #define JSPROP_EXPORTED 0x08 /* property is exported from object */ #define JSPROP_GETTER 0x10 /* property holds getter function */ #define JSPROP_SETTER 0x20 /* property holds setter function */ #define JSPROP_SHARED 0x40 /* don't allocate a value slot for this property; don't copy the property on set of the same-named property in an object that delegates to a prototype containing this property */ #define JSPROP_INDEX 0x80 /* name is actually (jsint) index */ /* Function flags, set in JSFunctionSpec and passed to JS_NewFunction etc. */ #define JSFUN_LAMBDA 0x08 /* expressed, not declared, function */ #define JSFUN_GETTER JSPROP_GETTER #define JSFUN_SETTER JSPROP_SETTER #define JSFUN_BOUND_METHOD 0x40 /* bind this to fun->object's parent */ #define JSFUN_HEAVYWEIGHT 0x80 /* activation requires a Call object */ #define JSFUN_FLAGS_MASK 0xf8 /* overlay JSFUN_* attributes */ /* describe a property in your class */ typedef struct { const char *name; int8 tinyid; uint8 flags; JSPropertyOp getter; JSPropertyOp setter; }JSPropertySpec; /* describe a function in your class */ typedef struct { const char *name; JSNative call; uint8 nargs; uint8 flags; uint16 extra; /* number of arg slots for local GC roots */ }JSFunctionSpec; #endif // all the information you to to fill out to define your class is in this file #include "mm_jsclassapi.h" /***************************************************************************** * Private data types, macros, and globals ****************************************************************************/ #include "mm_jsapi_environment.h" extern MM_Environment mmEnv; // Declare the external entry point and linkage #ifdef _WIN32 # ifndef _MAC // Windows __declspec( dllexport ) void MM_InitWrapper( MM_Environment *env, unsigned int envSize ); # else // Mac with MSVC++ Win32 portability lib extern void MM_InitWrapper( MM_Environment *env, unsigned int envSize ); # endif #else // Codewarrior # pragma export on extern void MM_InitWrapper( MM_Environment *env, unsigned int envSize ); # pragma export off #endif #define MM_STATE \ /* Definitions of global variables */ \ MM_Environment mmEnv; \ \ void \ MM_InitWrapper(MM_Environment *env, unsigned int envSize) \ { \ extern void MM_Init(); \ \ char **envPtr = (char **)env; \ char **mmPtr = (char **)(&mmEnv); \ char **envEnd = (char **)((char *)envPtr + envSize); \ char **mmEnd = (char **)((char *)mmPtr + sizeof(MM_Environment)); \ \ /* Copy fields from env to mmEnv, one pointer at a time */ \ while (mmPtr < mmEnd && envPtr < envEnd) \ *mmPtr++ = *envPtr++; \ \ /* If env doesn't define all of mmEnv's fields, set extras to NULL */ \ while (mmPtr < mmEnd) \ *mmPtr++ = (char *)0; \ \ /* Call user's MM_Init function */ \ MM_Init(); \ } \ \ \ /* Defined our stub functions */ \ JSBool JS_PropertyStub(JSContext *cx, JSObject *obj, jsval iD, jsval *vp){ \ return JS_TRUE; \ } \ \ void JS_FinalizeStub(JSContext *cx, JSObject *obj){} \ #endif /* _MM_JSAPI_H_ */ /************************* / mm_jsclassapi.h /************************* #ifndef _MM_JS_CLASS_API_H_ #define _MM_JS_CLASS_API_H_ typedef struct { int sizeofClassSpec; /* required - the size of this struct, used to verify it gets passed correctly from the dll to the app */ const char *name; /* required - name for your class, like foo. */ JSNative constructor; /* required - called when someone calls new on your object */ uint8 nConstructorArgs; /* required - number of required args for the constructor */ JSFinalizeOp finalize; /* called when your object is destroyed, do any local cleanup from the contructor */ JSPropertyOp addProperty; /* property operations called when a script adds, dels object instance */ JSPropertyOp delProperty; JSPropertyOp getProperty; JSPropertyOp setProperty; JSPropertySpec *props; /* per instance props and funcs. */ JSFunctionSpec *funcs; JSPropertySpec *static_props; /* static props and funcs, the kind that can get called without going var = new foo() first */ JSFunctionSpec *static_funcs; } JS_ClassSpec; /* default initializer JS_ClassSpec() : sizeofClassSpec(sizeof(JS_ClassSpec)), name(0), constructor(0), nConstructorArgs(0), finalize(JS_FinalizeStub), addProperty(JS_PropertyStub), delProperty(JS_PropertyStub), getProperty(JS_PropertyStub), setProperty(JS_PropertyStub), props(0), funcs(0), static_props(0), static_funcs(0) {} */ #endif /* _MM_JS_CLASS_API_H_ */ /************************* / MMInfo.h /************************* #pragma once // // Copyright (c) 1998 Macromedia, inc. All Rights Reserved. // --------------------------------------------------------- // // MMInfo.h // #ifndef _MMINFO_H_ #define _MMINFO_H_ #ifdef _WIN32 // Windows #define MMNOTES_EXPORT __declspec( dllexport ) #define WCHAR wchar_t #ifndef _UNICODE #define _UNICODE #endif #include <tchar.h> #else // Codewarrior/Mac #define MMNOTES_EXPORT extern #include "tchar_mac.h" #define WCHAR char16_t #define BOOL int #ifdef TRUE #undef TRUE #endif #ifdef FALSE #undef FALSE #endif #define TRUE true #define FALSE false #ifdef __cplusplus extern "C" { #endif #endif typedef int FileHandle; typedef char InfoKey[64]; typedef WCHAR InfoKeyW[64]; struct InfoPrefs { BOOL bUseDesignNotes; BOOL bUploadDesignNotes; }; // Declare the external entry point and linkage MMNOTES_EXPORT FileHandle OpenNotesFile( const char* mediaFilePath, BOOL bForce=FALSE ); MMNOTES_EXPORT FileHandle OpenNotesFileWithOpenFlags( const char* mediaFilePath, BOOL bForce=FALSE, BOOL bReadOnly=FALSE ); MMNOTES_EXPORT void CloseNotesFile( FileHandle infoHandle ); MMNOTES_EXPORT BOOL SetNote( FileHandle infoHandle, const InfoKey key, const char* value ); MMNOTES_EXPORT BOOL RemoveNote( FileHandle infoHandle, const InfoKey key ); MMNOTES_EXPORT int GetNoteLength( FileHandle infoHandle, const InfoKey key ); MMNOTES_EXPORT BOOL GetNote( FileHandle infoHandle, const InfoKey key, char* valueBuf, int valueBufMaxLen ); MMNOTES_EXPORT int GetNotesKeyCount( FileHandle infoHandle ); MMNOTES_EXPORT BOOL GetNotesKeys( FileHandle infoHandle, InfoKey* keyList, int keyListMaxLen ); MMNOTES_EXPORT BOOL GetSiteRootForFile( const char* mediaFilePath, char* siteRootBuf, int siteRootBufMaxLen, InfoPrefs* prefs=NULL ); MMNOTES_EXPORT BOOL GetVersionNum( char* versionNumBuf, int versionNumBufMaxLen ); MMNOTES_EXPORT BOOL GetVersionName( char* versionNameBuf, int versionNameBufMaxLen ); MMNOTES_EXPORT BOOL FilePathToLocalURL( const char* filePath, char* localURL, int localURLMaxLen ); MMNOTES_EXPORT BOOL LocalURLToFilePath( const char* localURL, char* filePath, int filePathMaxLen ); //Wide versions of the entry points MMNOTES_EXPORT FileHandle OpenNotesFileW( const WCHAR* mediaFilePath, BOOL bForce=FALSE ); MMNOTES_EXPORT FileHandle OpenNotesFileWithOpenFlagsW( const WCHAR* mediaFilePath, BOOL bForce=FALSE, BOOL bReadOnly=FALSE ); MMNOTES_EXPORT void CloseNotesFileW( FileHandle infoHandle ); MMNOTES_EXPORT BOOL SetNoteW( FileHandle infoHandle, const InfoKeyW key, const WCHAR* value ); MMNOTES_EXPORT BOOL RemoveNoteW( FileHandle infoHandle, const InfoKeyW key ); MMNOTES_EXPORT int GetNoteLengthW( FileHandle infoHandle, const InfoKeyW key ); MMNOTES_EXPORT BOOL GetNoteW( FileHandle infoHandle, const InfoKeyW key, WCHAR* valueBuf, int valueBufMaxLen ); MMNOTES_EXPORT int GetNotesKeyCountW( FileHandle infoHandle ); MMNOTES_EXPORT BOOL GetNotesKeysW( FileHandle infoHandle, InfoKeyW* keyList, int keyListMaxLen ); MMNOTES_EXPORT BOOL GetSiteRootForFileW( const WCHAR* mediaFilePath, WCHAR* siteRootBuf, int siteRootBufMaxLen, InfoPrefs* prefs=NULL ); MMNOTES_EXPORT BOOL GetVersionNumW( WCHAR* versionNumBuf, int versionNumBufMaxCount ); MMNOTES_EXPORT BOOL GetVersionNameW( WCHAR* versionNameBuf, int versionNameBufMaxCount ); MMNOTES_EXPORT BOOL FilePathToLocalURLW( const WCHAR* filePath, WCHAR* localURL, int localURLMaxCount ); MMNOTES_EXPORT BOOL LocalURLToFilePathW( const WCHAR* localURL, WCHAR* filePath, int filePathMaxCount ); #ifndef _WIN32 #ifdef __cplusplus } #endif #endif // Exported functions JSBool openInfo( JSContext* cx, JSObject* obj, unsigned int argc , jsval* jsArgv, jsval* rval ); JSBool closeInfo( JSContext* cx, JSObject* obj, unsigned int argc , jsval* jsArgv, jsval* rval ); JSBool set( JSContext* cx, JSObject* obj, unsigned int argc , jsval* jsArgv, jsval* rval ); JSBool remove( JSContext* cx, JSObject* obj, unsigned int argc , jsval* jsArgv, jsval* rval ); JSBool getLength( JSContext* cx, JSObject* obj, unsigned int argc , jsval* jsArgv, jsval* rval ); JSBool get( JSContext* cx, JSObject* obj, unsigned int argc , jsval* jsArgv, jsval* rval ); JSBool getKeyCount( JSContext* cx, JSObject* obj, unsigned int argc , jsval* jsArgv, jsval* rval ); JSBool getKeys( JSContext* cx, JSObject* obj, unsigned int argc , jsval* jsArgv, jsval* rval ); JSBool getSiteRootForFile( JSContext* cx, JSObject* obj, unsigned int argc , jsval* jsArgv, jsval* rval ); JSBool getVersionNum( JSContext* cx, JSObject* obj, unsigned int argc , jsval* jsArgv, jsval* rval ); JSBool getVersionName( JSContext* cx, JSObject* obj, unsigned int argc , jsval* jsArgv, jsval* rval ); JSBool filePathToLocalURL( JSContext* cx, JSObject* obj, unsigned int argc , jsval* jsArgv, jsval* rval ); JSBool localURLToFilePath( JSContext* cx, JSObject* obj, unsigned int argc , jsval* jsArgv, jsval* rval ); void MM_Init( void ); #endif //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// // LOG //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// // 20-sep-99 hbauer Changed function names to use the word Notes // instead of Info.
Rif. progetto: 10143909

Info sul progetto

1 proposta
Progetto a distanza
Attivo 8 anni fa

Hai voglia di guadagnare un po'?

I vantaggi delle offerte su Freelancer

Imposta il tuo budget e le scadenze
Fatti pagare per il lavoro svolto
Delinea la tua proposta
La registrazione e le offerte sui lavori sono gratuite
1 freelance ha fatto un'offerta media di $222 USD per questo lavoro
Avatar dell'utente
we can directly create project in mac and use C or C++.Please contact me to discuss in details .... Thanks
$222 USD in 3 giorni
5,0 (3 valutazioni)
3,8
3,8

Info sul cliente

Bandiera: ITALY
Italy
0,0
0
Membro dal ago 29, 2003

Verifica del cliente

Grazie! Ti abbiamo inviato tramite email il link per richiedere il tuo bonus gratuito.
Non è stato possibile inviarti l'email. Riprova per piacere.
di utenti registrati di lavori pubblicati
Freelancer ® is a registered Trademark of Freelancer Technology Pty Limited (ACN 142 189 759)
Copyright © 2024 Freelancer Technology Pty Limited (ACN 142 189 759)
Caricamento anteprima
Autorizzazione per la geolocalizzazione concessa.
La tua sessione è scaduta ed è stato effettuato il log out. Accedi nuovamente per piacere.