Find Jobs
Hire Freelancers

Sviluppare una Applicazione Mac

$30-250 USD

Cerrado
Publicado hace alrededor de 8 años

$30-250 USD

Pagado a la entrega
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.
ID del proyecto: 10143909

Información sobre el proyecto

1 propuesta
Proyecto remoto
Activo hace 8 años

¿Buscas ganar dinero?

Beneficios de presentar ofertas en Freelancer

Fija tu plazo y presupuesto
Cobra por tu trabajo
Describe tu propuesta
Es gratis registrarse y presentar ofertas en los trabajos
1 freelancer está ofertando un promedio de $222 USD por este trabajo
Avatar del usuario
we can directly create project in mac and use C or C++.Please contact me to discuss in details .... Thanks
$222 USD en 3 días
5,0 (3 comentarios)
3,8
3,8

Sobre este cliente

Bandera de ITALY
Italy
0,0
0
Miembro desde ago 29, 2003

Verificación del cliente

¡Gracias! Te hemos enviado un enlace para reclamar tu crédito gratuito.
Algo salió mal al enviar tu correo electrónico. Por favor, intenta de nuevo.
Usuarios registrados Total de empleos publicados
Freelancer ® is a registered Trademark of Freelancer Technology Pty Limited (ACN 142 189 759)
Copyright © 2024 Freelancer Technology Pty Limited (ACN 142 189 759)
Cargando visualización previa
Permiso concedido para Geolocalización.
Tu sesión de acceso ha expirado y has sido desconectado. Por favor, inica sesión nuevamente.