From: <ne...@us...> - 2012-06-18 14:39:58
|
Revision: 13180 http://swig.svn.sourceforge.net/swig/?rev=13180&view=rev Author: neha1 Date: 2012-06-18 14:39:52 +0000 (Mon, 18 Jun 2012) Log Message: ----------- Added additionally swg files for javascript JSCModule. Added Paths: ----------- branches/gsoc2012-javascript/Lib/javascript/jsc/javascripthelpers.swg branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptruntime.swg Added: branches/gsoc2012-javascript/Lib/javascript/jsc/javascripthelpers.swg =================================================================== Added: branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptruntime.swg =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptruntime.swg (rev 0) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptruntime.swg 2012-06-18 14:39:52 UTC (rev 13180) @@ -0,0 +1,19 @@ +/* ----------------------------------------------------------------------------- + * javascriptruntime.swg + * + * Javascript support code + * ----------------------------------------------------------------------------- */ + +%insert(runtime) %{ +#include <JavaScriptCore/JavaScript.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +%} + +%insert(runtime) %{ +typedef struct { + bool swigCMemOwn; + void *swigCObject; +}SWIG_PRV_DATA; +%} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ne...@us...> - 2012-06-26 18:30:44
|
Revision: 13197 http://swig.svn.sourceforge.net/swig/?rev=13197&view=rev Author: neha1 Date: 2012-06-26 18:30:38 +0000 (Tue, 26 Jun 2012) Log Message: ----------- Added JSC helper function Added JSC helper function. Modified Paths: -------------- branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptcode.swg branches/gsoc2012-javascript/Lib/javascript/jsc/javascripthelpers.swg Modified: branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptcode.swg =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptcode.swg 2012-06-26 18:30:02 UTC (rev 13196) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptcode.swg 2012-06-26 18:30:38 UTC (rev 13197) @@ -4,8 +4,21 @@ * Additional Javascript typemaps for generating code for classes, constants and variables * ----------------------------------------------------------------------------- ----------------*/ +%fragment ("jsc_initializer", "templates") %{ +int ${modulename}_initialize(JSGlobalContextRef context) { + JSObjectRef globalObject = JSContextGetGlobalObject(context); + + ${initializercode} + return SWIG_OK; +} +%} + +%fragment ("jsc_register_global_function", "templates") +%{ +jscinitfunction("${context}", "${context_object}", "${functionname}", "${functionwrapper}"); +%} /* Additional typemaps for the class code needed by the access layer. This code is copy-pasted into the wrapper header and source file */ -%fragment ("getpropertydecl", "templates") +%fragment ("getproperty", "templates") %{ JSValueRef ${getname}(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception) { @@ -15,28 +28,30 @@ } %} -%fragment ("setpropertydecl", "templates") +%fragment ("setproperty", "templates") %{ -bool ${setname}(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef value, -JSValueRef* exception) -JSValueRef* exception); +bool ${setname}(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef value, JSValueRef* exception) { ${LOCALS} ${CODE} } %} -%fragment ("functiondecl", "templates") +%fragment ("functionwrapper", "templates") %{ -JSValueRef $functionname(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argc, const JSValueRef argv[], JSValueRef* exception) +JSValueRef ${functionname}(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argc, const JSValueRef argv[], JSValueRef* exception) { ${LOCALS} ${CODE} - return jsresult; } %} +%fragment ("staticfunctiondecl", "templates") +%{ + {"${propertyname}", "${getname}", "${setname}", +kJSPropertyAttributeNone } +%} %fragment ("accessconstructordecl", "templates") %{ @@ -205,7 +220,7 @@ %{ JSStaticValue cvar_staticValues[] = { -$jsstaticvarcode +${jsstaticvarcode} { 0, 0, 0, 0 } }; @@ -238,4 +253,3 @@ %} - Modified: branches/gsoc2012-javascript/Lib/javascript/jsc/javascripthelpers.swg =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/javascripthelpers.swg 2012-06-26 18:30:02 UTC (rev 13196) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/javascripthelpers.swg 2012-06-26 18:30:38 UTC (rev 13197) @@ -0,0 +1,9 @@ +%insert(runtime) %{ +bool jscinitfunction(JSGlobalContextRef context, JSObjectRef object, const char* szFunctionName,JSObjectCallAsFunctionCallback cbFunction) +{ + JSStringRef functionString = JSStringCreateWithUTF8CString(szFunctionName); + JSObjectSetProperty(context, object, functionString,JSObjectMakeFunctionWithCallback(context, functionString, cbFunction),kJSPropertyAttributeNone,NULL); + JSStringRelease(functionString); + return true; +} +%} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ne...@us...> - 2012-07-09 17:12:14
|
Revision: 13296 http://swig.svn.sourceforge.net/swig/?rev=13296&view=rev Author: neha1 Date: 2012-07-09 17:12:06 +0000 (Mon, 09 Jul 2012) Log Message: ----------- Add initial std and stl swig files. From: Oliver Buchtala <oli...@go...> Added Paths: ----------- branches/gsoc2012-javascript/Lib/javascript/jsc/std_common.i branches/gsoc2012-javascript/Lib/javascript/jsc/std_map.i branches/gsoc2012-javascript/Lib/javascript/jsc/std_pair.i branches/gsoc2012-javascript/Lib/javascript/jsc/std_string.i branches/gsoc2012-javascript/Lib/javascript/jsc/std_vector.i branches/gsoc2012-javascript/Lib/javascript/jsc/stl.i Added: branches/gsoc2012-javascript/Lib/javascript/jsc/std_common.i =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/std_common.i (rev 0) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/std_common.i 2012-07-09 17:12:06 UTC (rev 13296) @@ -0,0 +1,5 @@ +%include <std_except.i> + +%apply size_t { std::size_t }; +%apply const size_t& { const std::size_t& }; + Property changes on: branches/gsoc2012-javascript/Lib/javascript/jsc/std_common.i ___________________________________________________________________ Added: svn:executable + * Added: branches/gsoc2012-javascript/Lib/javascript/jsc/std_map.i =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/std_map.i (rev 0) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/std_map.i 2012-07-09 17:12:06 UTC (rev 13296) @@ -0,0 +1,74 @@ +/* ----------------------------------------------------------------------------- + * std_map.i + * + * SWIG typemaps for std::map + * ----------------------------------------------------------------------------- */ + +%include <std_common.i> + +// ------------------------------------------------------------------------ +// std::map +// ------------------------------------------------------------------------ + +%{ +#include <map> +#include <algorithm> +#include <stdexcept> +%} + +// exported class + +namespace std { + + template<class K, class T> class map { + // add typemaps here + public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef K key_type; + typedef T mapped_type; + map(); + map(const map<K,T> &); + + unsigned int size() const; + bool empty() const; + void clear(); + %extend { + const T& get(const K& key) throw (std::out_of_range) { + std::map<K,T >::iterator i = self->find(key); + if (i != self->end()) + return i->second; + else + throw std::out_of_range("key not found"); + } + void set(const K& key, const T& x) { + (*self)[key] = x; + } + void del(const K& key) throw (std::out_of_range) { + std::map<K,T >::iterator i = self->find(key); + if (i != self->end()) + self->erase(i); + else + throw std::out_of_range("key not found"); + } + bool has_key(const K& key) { + std::map<K,T >::iterator i = self->find(key); + return i != self->end(); + } + } + }; + +// Legacy macros (deprecated) +%define specialize_std_map_on_key(K,CHECK,CONVERT_FROM,CONVERT_TO) +#warning "specialize_std_map_on_key ignored - macro is deprecated and no longer necessary" +%enddef + +%define specialize_std_map_on_value(T,CHECK,CONVERT_FROM,CONVERT_TO) +#warning "specialize_std_map_on_value ignored - macro is deprecated and no longer necessary" +%enddef + +%define specialize_std_map_on_both(K,CHECK_K,CONVERT_K_FROM,CONVERT_K_TO, T,CHECK_T,CONVERT_T_FROM,CONVERT_T_TO) +#warning "specialize_std_map_on_both ignored - macro is deprecated and no longer necessary" +%enddef + +} Property changes on: branches/gsoc2012-javascript/Lib/javascript/jsc/std_map.i ___________________________________________________________________ Added: svn:executable + * Added: branches/gsoc2012-javascript/Lib/javascript/jsc/std_pair.i =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/std_pair.i (rev 0) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/std_pair.i 2012-07-09 17:12:06 UTC (rev 13296) @@ -0,0 +1,34 @@ +/* ----------------------------------------------------------------------------- + * std_pair.i + * + * SWIG typemaps for std::pair + * ----------------------------------------------------------------------------- */ + +%include <std_common.i> +%include <exception.i> + +// ------------------------------------------------------------------------ +// std::pair +// ------------------------------------------------------------------------ + +%{ +#include <utility> +%} + +namespace std { + + template<class T, class U> struct pair { + + pair(); + pair(T first, U second); + pair(const pair& p); + + template <class U1, class U2> pair(const pair<U1, U2> &p); + + T first; + U second; + }; + + // add specializations here + +} Property changes on: branches/gsoc2012-javascript/Lib/javascript/jsc/std_pair.i ___________________________________________________________________ Added: svn:executable + * Added: branches/gsoc2012-javascript/Lib/javascript/jsc/std_string.i =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/std_string.i (rev 0) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/std_string.i 2012-07-09 17:12:06 UTC (rev 13296) @@ -0,0 +1,71 @@ +/* ----------------------------------------------------------------------------- + * std_string.i + * + * Typemaps for std::string and const std::string& + * These are mapped to a JSCore String and are passed around by value. + * + * To use non-const std::string references use the following %apply. Note + * that they are passed by value. + * %apply const std::string & {std::string &}; + * ----------------------------------------------------------------------------- */ + +%{ +#include <string> +%} + +namespace std { + +%naturalvar string; + +class string; + +// string + +%typemap(in) string +%{ if (!$input) { + // TODO: Throw exception? + return NULL; + } + JSStringRef $1_str = JSValueToStringCopy(context, $input, NULL); + size_t $1_strsize = JSStringGetMaximumUTF8CStringSize($1_str); + char* $1_cstr = (char *)malloc($1_strsize * sizeof(char)); + JSStringGetUTF8CString($1_str, $1_cstr, $1_strsize); + $1 = std::string($1_cstr); +%} + +%typemap(out) string %{ + JSStringRef jsstring = JSStringCreateWithUTF8CString($1.c_str()); + $result = JSValueMakeString(context, jsstring); + JSStringRelease(jsstring); +%} + +%typemap(freearg) string //TODO: Not working: A memory leak +%{ free($1_cstr); %} + +//%typemap(typecheck) string = char *; + +// const string & +%typemap(in) const string & +%{ if (!$input) { + // TODO: Throw exception? + return NULL; + } + JSStringRef $1_str = JSValueToStringCopy(context, $input, NULL); + size_t $1_strsize = JSStringGetMaximumUTF8CStringSize($1_str); + char* $1_cstr = (char *)malloc($1_strsize * sizeof(char)); + JSStringGetUTF8CString($1_str, $1_cstr, $1_strsize); + $1 = new std::string($1_cstr); +%} + +%typemap(out) const string & %{ + JSStringRef jsstring = JSStringCreateWithUTF8CString($1.c_str()); + $result = JSValueMakeString(context, jsstring); + JSStringRelease(jsstring); +%} + +%typemap(freearg) const string & //TODO: Not working: A memory leak +%{ free($1_cstr); %} + +//%typemap(typecheck) const string & = char *; + +} Property changes on: branches/gsoc2012-javascript/Lib/javascript/jsc/std_string.i ___________________________________________________________________ Added: svn:executable + * Added: branches/gsoc2012-javascript/Lib/javascript/jsc/std_vector.i =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/std_vector.i (rev 0) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/std_vector.i 2012-07-09 17:12:06 UTC (rev 13296) @@ -0,0 +1,85 @@ +/* ----------------------------------------------------------------------------- + * std_vector.i + * ----------------------------------------------------------------------------- */ + +%include <std_common.i> + +%{ +#include <vector> +#include <stdexcept> +%} + +namespace std { + + template<class T> class vector { + public: + typedef size_t size_type; + typedef T value_type; + typedef const value_type& const_reference; + vector(); + vector(size_type n); + size_type size() const; + size_type capacity() const; + void reserve(size_type n); + %rename(isEmpty) empty; + bool empty() const; + void clear(); + %rename(add) push_back; + void push_back(const value_type& x); + %extend { + const_reference get(int i) throw (std::out_of_range) { + int size = int(self->size()); + if (i>=0 && i<size) + return (*self)[i]; + else + throw std::out_of_range("vector index out of range"); + } + void set(int i, const value_type& val) throw (std::out_of_range) { + int size = int(self->size()); + if (i>=0 && i<size) + (*self)[i] = val; + else + throw std::out_of_range("vector index out of range"); + } + } + }; + + // bool specialization + template<> class vector<bool> { + public: + typedef size_t size_type; + typedef bool value_type; + typedef bool const_reference; + vector(); + vector(size_type n); + size_type size() const; + size_type capacity() const; + void reserve(size_type n); + %rename(isEmpty) empty; + bool empty() const; + void clear(); + %rename(add) push_back; + void push_back(const value_type& x); + %extend { + const_reference get(int i) throw (std::out_of_range) { + int size = int(self->size()); + if (i>=0 && i<size) + return (*self)[i]; + else + throw std::out_of_range("vector index out of range"); + } + void set(int i, const value_type& val) throw (std::out_of_range) { + int size = int(self->size()); + if (i>=0 && i<size) + (*self)[i] = val; + else + throw std::out_of_range("vector index out of range"); + } + } + }; +} + +%define specialize_std_vector(T) +#warning "specialize_std_vector - specialization for type T no longer needed" +%enddef + Property changes on: branches/gsoc2012-javascript/Lib/javascript/jsc/std_vector.i ___________________________________________________________________ Added: svn:executable + * Added: branches/gsoc2012-javascript/Lib/javascript/jsc/stl.i =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/stl.i (rev 0) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/stl.i 2012-07-09 17:12:06 UTC (rev 13296) @@ -0,0 +1,10 @@ +/* ----------------------------------------------------------------------------- + * stl.i + * ----------------------------------------------------------------------------- */ + +%include <std_common.i> +%include <std_string.i> +%include <std_vector.i> +%include <std_map.i> +%include <std_pair.i> + Property changes on: branches/gsoc2012-javascript/Lib/javascript/jsc/stl.i ___________________________________________________________________ Added: svn:executable + * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ne...@us...> - 2012-07-30 18:16:27
|
Revision: 13457 http://swig.svn.sourceforge.net/swig/?rev=13457&view=rev Author: neha1 Date: 2012-07-30 18:16:16 +0000 (Mon, 30 Jul 2012) Log Message: ----------- Switch to using unified typemap library. From: Oliver Buchtala <oli...@go...> Modified Paths: -------------- branches/gsoc2012-javascript/Lib/javascript/jsc/javascript.swg branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptprimitives.swg branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptruntime.swg Added Paths: ----------- branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptfragments.swg branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptstrings.swg branches/gsoc2012-javascript/Lib/javascript/jsc/javascripttypemaps.swg branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptvaltypes.swg Modified: branches/gsoc2012-javascript/Lib/javascript/jsc/javascript.swg =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/javascript.swg 2012-07-30 18:15:18 UTC (rev 13456) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/javascript.swg 2012-07-30 18:16:16 UTC (rev 13457) @@ -4,11 +4,18 @@ * Javascript typemaps * ----------------------------------------------------------------------------- */ +%include <typemaps/swigmacros.swg> + %include <javascriptruntime.swg> +%include <javascriptstrings.swg> + %include <javascripthelpers.swg> -%include <javascriptprimitives.swg> +/* ------------------------------------------------------------ + * Typemap specializations + * ------------------------------------------------------------ */ +%include <javascripttypemaps.swg> %include <javascriptkw.swg> Added: branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptfragments.swg =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptfragments.swg (rev 0) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptfragments.swg 2012-07-30 18:16:16 UTC (rev 13457) @@ -0,0 +1,21 @@ +%define %numeric_type_asval(Type, Base, Frag, OverflowCond) +%fragment(SWIG_AsVal_frag(Type),"header", + fragment=Frag, + fragment=SWIG_AsVal_frag(Base)) { +SWIGINTERN int +SWIG_AsVal_dec(Type)(JSContextRef context, SWIG_Object obj, Type *val) +{ + Base v; + int res = SWIG_AsVal(Base)(context, obj, &v); + if (SWIG_IsOK(res)) { + if (OverflowCond) { + return SWIG_OverflowError; + } else { + if (val) *val = %numeric_cast(v, Type); + } + } + return res; +} +} +%enddef + Modified: branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptprimitives.swg =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptprimitives.swg 2012-07-30 18:15:18 UTC (rev 13456) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptprimitives.swg 2012-07-30 18:16:16 UTC (rev 13457) @@ -1,3 +1,102 @@ + + +%fragment(SWIG_From_frag(bool),"header") { +SWIGINTERNINLINE +JSValueRef SWIG_From_dec(bool)(JSContextRef context, bool value) +{ + return JSValueMakeBoolean(context, value); +} +} + +%fragment(SWIG_AsVal_frag(bool),"header", + fragment=SWIG_AsVal_frag(long)) { +SWIGINTERN +int SWIG_AsVal_dec(bool)(JSContextRef context, JSValueRef obj, bool *val) +{ + if(!JSValueIsBoolean(context, obj)) { + return SWIG_ERROR; + } + if (val) *val = JSValueToBoolean(context, obj, NULL); + return SWIG_OK; +} +} + +%fragment(SWIG_From_frag(int),"header") { +SWIGINTERNINLINE JSValueRef + SWIG_From_dec(int)(JSContextRef context, int value) +{ + return JSValueMakeNumber(context, value); +} +} + +%fragment(SWIG_From_frag(long),"header") { + %define_as(SWIG_From_dec(long), JSValueMakeNumber) +} + +%fragment(SWIG_AsVal_frag(long),"header", + fragment="SWIG_CanCastAsInteger") { +SWIGINTERN int +SWIG_AsVal_dec(long)(JSContextRef context, JSValueRef obj, long* val) +{ + if (!JSValueIsNumber(context, obj)) { + return SWIG_TypeError; + } + if(val) *val = (long) JSValueToNumber(context, obj, NULL); + + return SWIG_OK; +} +} + +/* unsigned long */ + +%fragment(SWIG_From_frag(unsigned long),"header", + fragment=SWIG_From_frag(long)) { +SWIGINTERNINLINE JSValueRef +SWIG_From_dec(unsigned long)(JSContextRef context, unsigned long value) +{ + return (value > LONG_MAX) ? + JSValueMakeNumber(context, value) : JSValueMakeNumber(context, %numeric_cast(value,long)); +} +} + +%fragment(SWIG_AsVal_frag(unsigned long),"header", + fragment="SWIG_CanCastAsInteger") { +SWIGINTERN int +SWIG_AsVal_dec(unsigned long)(JSContextRef context, JSValueRef obj, unsigned long *val) +{ + if(!JSValueIsNumber(context, obj)) { + return SWIG_TypeError; + } + + long longVal = (long) JSValueToNumber(context, obj, NULL); + + if(longVal < 0) { + return SWIG_OverflowError; + } + + if(val) *val = longVal; + + return SWIG_OK; +} +} + +%fragment(SWIG_From_frag(double),"header") { + %define_as(SWIG_From_dec(double), JSValueMakeNumber) +} + +%fragment(SWIG_AsVal_frag(double),"header") { +SWIGINTERN int +SWIG_AsVal_dec(double)(JSContextRef context, JSValueRef obj, double *val) +{ + if(!JSValueIsNumber(context, obj)) { + return SWIG_TypeError; + } + if(val) *val = JSValueToNumber(context, obj, NULL); + + return SWIG_OK; +} +} + // Primitive types %typemap(in) char, signed char, @@ -176,6 +275,7 @@ /* Typemaps for composite types */ %typemap(in) SWIGTYPE ($&1_type argp) // Objects passed by value, convert to a pointer %{ + // DEBUG: typemap(in) SWIGTYPE ($&1_type argp) JSObjectRef o$1 = JSValueToObject(context,$input, NULL); SWIG_PRV_DATA *$1_privatedata = (SWIG_PRV_DATA *)JSObjectGetPrivate(o$1); argp = ($&1_ltype)$1_privatedata->swigCObject; Modified: branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptruntime.swg =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptruntime.swg 2012-07-30 18:15:18 UTC (rev 13456) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptruntime.swg 2012-07-30 18:16:16 UTC (rev 13457) @@ -9,8 +9,15 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> +#include <errno.h> %} +%insert(runtime) "swigrun.swg"; /* SWIG API */ +%insert(runtime) "swigerrors.swg"; /* SWIG errors */ + +#define SWIG_Error(code, msg) "/* TODO: SWIG_Error(code, msg) */" +#define SWIG_fail /* TODO: goto fail ?*/ + %insert(runtime) %{ typedef struct { bool swigCMemOwn; @@ -19,11 +26,6 @@ %} %insert(runtime) %{ -/* Contract support */ -#define SWIG_contract_assert(expr, msg) if (!(expr)) { throw "contract violated: msg"; } else -%} - -%insert(runtime) %{ void SWIG_exception(int code, const char* msg) { // TODO: throw a js exception... throw msg; @@ -82,3 +84,54 @@ JSClassRef _SwigObject_classRef; %} + + +%insert(runtime) %{ +int SWIG_JSC_ConvertPtr(JSContextRef context, JSObjectRef objRef, void** ptr, swig_type_info *info, int flags) { + SWIG_PRV_DATA *cdata = (SWIG_PRV_DATA *) JSObjectGetPrivate(objRef); + if(cdata == NULL) { + return SWIG_ERROR; + } + *ptr = cdata->swigCObject; + + if(flags & SWIG_POINTER_DISOWN) { + cdata->swigCMemOwn = false; + } + + return SWIG_OK; +} + +int SWIG_JSC_ConvertPtr(JSContextRef context, JSValueRef valRef, void** ptr, swig_type_info *info, int flags) { + if(!JSValueIsObject(context, valRef)) { + return SWIG_TypeError; + } + JSObjectRef objRef = JSValueToObject(context, valRef, NULL); + if(!objRef) + return SWIG_ERROR; + + return SWIG_JSC_ConvertPtr(context, objRef, ptr, info, flags); +} + +JSObjectRef SWIG_JSC_NewPointerObj(JSContextRef context, void *ptr, swig_type_info *info, int flags) { + + JSClassRef classRef; + if(info->clientdata == NULL) { + classRef = _SwigObject_classRef; + } else { + classRef = (JSClassRef) info->clientdata; + } + + JSObjectRef result = JSObjectMake(context, classRef, NULL); + + SWIG_PRV_DATA* cdata = new SWIG_PRV_DATA(); + cdata->swigCObject = ptr; + cdata->swigCMemOwn = (flags & SWIG_POINTER_OWN) ? 1 : 0; + + JSObjectSetPrivate(result, cdata); + + return result; +} + +#define SWIG_ConvertPtr(obj, ptr, info, flags) SWIG_JSC_ConvertPtr(context, obj, ptr, info, flags) +#define SWIG_NewPointerObj(ptr, info, flags) SWIG_JSC_NewPointerObj(context, ptr, info, flags) +%} Added: branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptstrings.swg =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptstrings.swg (rev 0) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptstrings.swg 2012-07-30 18:16:16 UTC (rev 13457) @@ -0,0 +1,152 @@ +/* ------------------------------------------------------------ + * utility methods for char strings + * ------------------------------------------------------------ */ +%fragment("SWIG_AsCharPtrAndSize","header",fragment="SWIG_pchar_descriptor") { +SWIGINTERN int +SWIG_JSC_AsCharPtrAndSize(JSContextRef context, JSValueRef valRef, char** cptr, size_t* psize, int *alloc) +{ + if(!JSValueIsString(context, valRef)) { + return SWIG_TypeError; + } + + JSStringRef js_str = JSValueToStringCopy(context, valRef, NULL); + size_t len = JSStringGetMaximumUTF8CStringSize(js_str); + char* cstr = (char*) malloc(len * sizeof(char)); + JSStringGetUTF8CString(js_str, cstr, len); + + if(alloc) *alloc = SWIG_NEWOBJ; + if(psize) *psize = len; + if(cptr) *cptr = cstr; + + return SWIG_OK; +} +} + +%fragment("SWIG_FromCharPtrAndSize","header",fragment="SWIG_pchar_descriptor") { +SWIGINTERNINLINE JSValueRef +SWIG_JSC_FromCharPtrAndSize(JSContextRef context, const char* carray, size_t size) +{ + if (carray) { + if (size > INT_MAX) { + // TODO: handle extra long strings + //swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); + //return pchar_descriptor ? + // SWIG_InternalNewPointerObj(%const_cast(carray,char *), pchar_descriptor, 0) : SWIG_Py_Void(); + } else { + JSStringRef jsstring = JSStringCreateWithUTF8CString(carray); + JSValueRef result = JSValueMakeString(context, jsstring); + JSStringRelease(jsstring); + return result; + } + } else { + return JSValueMakeUndefined(context); + } +} +} + +%define %_typemap2_string(StringCode, CharCode, + Char, CharName, + SWIG_AsCharPtrAndSize, + SWIG_FromCharPtrAndSize, + SWIG_CharPtrLen, + SWIG_NewCopyCharArray, + SWIG_DeleteCharArray, + FragLimits, CHAR_MIN, CHAR_MAX) + +%fragment("SWIG_From"#CharName"Ptr","header",fragment=#SWIG_FromCharPtrAndSize) { +SWIGINTERNINLINE SWIG_Object +SWIG_JSC_From##CharName##Ptr(JSContextRef context, const Char *cptr) +{ + return SWIG_JSC_FromCharPtrAndSize(context, cptr, (cptr ? SWIG_CharPtrLen(cptr) : 0)); +} +} + +%fragment("SWIG_From"#CharName"Array","header",fragment=#SWIG_FromCharPtrAndSize) { +SWIGINTERNINLINE SWIG_Object +SWIG_From##CharName##Array(JSContextRef context, const Char *cptr, size_t size) +{ + return SWIG_JSC_FromCharPtrAndSize(context, cptr, size); +} +} + +%fragment("SWIG_As" #CharName "Ptr","header",fragment=#SWIG_AsCharPtrAndSize) { +%define_as(SWIG_As##CharName##Ptr(obj, val, alloc), SWIG_JSC_AsCharPtrAndSize(context, obj, val, NULL, alloc)) +} + +%fragment("SWIG_As" #CharName "Array","header",fragment=#SWIG_AsCharPtrAndSize) { +SWIGINTERN int +SWIG_As##CharName##Array(JSContextRef context, SWIG_Object obj, Char *val, size_t size) +{ + Char* cptr = 0; size_t csize = 0; int alloc = SWIG_OLDOBJ; + int res = SWIG_JSC_AsCharPtrAndSize(context, obj, &cptr, &csize, &alloc); + if (SWIG_IsOK(res)) { + if ((csize == size + 1) && cptr && !(cptr[csize-1])) --csize; + if (csize <= size) { + if (val) { + if (csize) memcpy(val, cptr, csize*sizeof(Char)); + if (csize < size) memset(val + csize, 0, (size - csize)*sizeof(Char)); + } + if (alloc == SWIG_NEWOBJ) { + SWIG_DeleteCharArray(cptr); + res = SWIG_DelNewMask(res); + } + return res; + } + if (alloc == SWIG_NEWOBJ) SWIG_DeleteCharArray(cptr); + } + return SWIG_TypeError; +} +} + +/* Char */ + +%fragment(SWIG_From_frag(Char),"header",fragment=#SWIG_FromCharPtrAndSize) { +SWIGINTERNINLINE SWIG_Object +SWIG_From_dec(Char)(JSContextRef context, Char c) +{ + return SWIG_JSC_FromCharPtrAndSize(context, &c,1); +} +} + +%fragment(SWIG_AsVal_frag(Char),"header", + fragment="SWIG_As"#CharName"Array", + fragment=FragLimits, + fragment=SWIG_AsVal_frag(long)) { +SWIGINTERN int +SWIG_AsVal_dec(Char)(JSContextRef context, SWIG_Object obj, Char *val) +{ + int res = SWIG_As##CharName##Array(obj, val, 1); + if (!SWIG_IsOK(res)) { + long v; + res = SWIG_AddCast(SWIG_AsVal(long)(obj, &v)); + if (SWIG_IsOK(res)) { + if ((CHAR_MIN <= v) && (v <= CHAR_MAX)) { + if (val) *val = %numeric_cast(v, Char); + } else { + res = SWIG_OverflowError; + } + } + } + return res; +} +} + +%_typemap_string(StringCode, + Char, + SWIG_AsCharPtrAndSize, + SWIG_FromCharPtrAndSize, + SWIG_CharPtrLen, + SWIG_As##CharName##Ptr, + SWIG_From##CharName##Ptr, + SWIG_As##CharName##Array, + SWIG_NewCopyCharArray, + SWIG_DeleteCharArray) + +%enddef + + +%insert(runtime) %{ +#define SWIG_AsCharPtrAndSize(val, cptr, psize, alloc) SWIG_JSC_AsCharPtrAndSize(context, val, cptr, psize, alloc) +#define SWIG_FromCharPtrAndSize(cptr, size) SWIG_JSC_FromCharPtrAndSize(context, cptr, size) +#define SWIG_FromCharPtr(cptr) SWIG_JSC_FromCharPtr(context, cptr) +%} Added: branches/gsoc2012-javascript/Lib/javascript/jsc/javascripttypemaps.swg =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/javascripttypemaps.swg (rev 0) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/javascripttypemaps.swg 2012-07-30 18:16:16 UTC (rev 13457) @@ -0,0 +1,25 @@ + +%include <javascriptfragments.swg> + +/* Include fundamental fragemt definitions */ +%include <typemaps/fragments.swg> + +/* Python fragments for fundamental types */ +%include <javascriptprimitives.swg> + +#define SWIG_Object JSValueRef +#define VOID_Object JSValueMakeUndefined(context) + +/* append output */ +#define SWIG_AppendOutput(result, obj) "/* TODO: SWIG_Javascript_AppendOutput(result, obj) */" + +#define SWIG_SetConstant(name, obj) "/* TODO: SWIG_Javaqscript_SetConstant(d, name,obj) */" + +#define SWIG_Raise(obj, type, desc) "/* TODO: SWIG_Javascript_Raise(obj, type, desc) */" + +/* override some of the macros in global valtypes.swg */ +%include <javascriptvaltypes.swg> + +/* Include the unified typemap library */ +%include <typemaps/swigtypemaps.swg> + Added: branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptvaltypes.swg =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptvaltypes.swg (rev 0) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptvaltypes.swg 2012-07-30 18:16:16 UTC (rev 13457) @@ -0,0 +1,28 @@ +%define %value_in_typemap(asval_meth,frag,Type...) + %typemap(in,noblock=1,fragment=frag) Type (Type val, int ecode = 0) { + ecode = asval_meth(context, $input, &val); + if (!SWIG_IsOK(ecode)) { + %argument_fail(ecode, "$ltype", $symname, $argnum); + } + $1 = %static_cast(val,$ltype); + } + %typemap(freearg) Type ""; + %typemap(in,noblock=1,fragment=frag) const Type & ($*ltype temp, Type val, int ecode = 0) { + ecode = asval_meth(context, $input, &val); + if (!SWIG_IsOK(ecode)) { + %argument_fail(ecode, "$*ltype", $symname, $argnum); + } + temp = %static_cast(val, $*ltype); + $1 = &temp; + } + %typemap(freearg) const Type& ""; +%enddef + +%define %value_out_typemap(from_meth,frag,Type...) + %typemap(out,noblock=1,fragment=frag) Type, const Type { + %set_output(from_meth(context, %static_cast($1,Type))); + } + %typemap(out,noblock=1,fragment=frag) const Type& { + %set_output(from_meth(context, %static_cast(*$1,Type))); + } +%enddef This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ne...@us...> - 2012-07-30 18:24:26
|
Revision: 13468 http://swig.svn.sourceforge.net/swig/?rev=13468&view=rev Author: neha1 Date: 2012-07-30 18:24:16 +0000 (Mon, 30 Jul 2012) Log Message: ----------- Adapted typemaps for exception handling. From: Neha Narang <nar...@gm...> Modified Paths: -------------- branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptruntime.swg branches/gsoc2012-javascript/Lib/javascript/jsc/javascripttypemaps.swg Modified: branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptruntime.swg =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptruntime.swg 2012-07-30 18:23:30 UTC (rev 13467) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptruntime.swg 2012-07-30 18:24:16 UTC (rev 13468) @@ -19,7 +19,9 @@ #define SWIG_Error(code, msg) SWIG_JSC_exception(context, exception, code, msg) #define SWIG_exception(code, msg) SWIG_JSC_exception(context, exception, code, msg) #define SWIG_fail /* TODO: goto fail ?*/ +//#define SWIG_Raise(obj, type, desc) SWIG_Javascript_Raise(context, exception, type) + %insert(runtime) %{ typedef struct { bool swigCMemOwn; @@ -29,7 +31,15 @@ %} %insert(runtime) %{ +void SWIG_Javascript_Raise(JSContextRef context, JSValueRef *exception, const char* type) { + JSStringRef message = JSStringCreateWithUTF8CString(type); + *exception = JSValueMakeString(context, message); + JSStringRelease(message); +} +%} +%insert(runtime) %{ + void SWIG_JSC_exception(JSContextRef context, JSValueRef *exception, int code, const char* msg) { throw msg; Modified: branches/gsoc2012-javascript/Lib/javascript/jsc/javascripttypemaps.swg =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/javascripttypemaps.swg 2012-07-30 18:23:30 UTC (rev 13467) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/javascripttypemaps.swg 2012-07-30 18:24:16 UTC (rev 13468) @@ -13,10 +13,10 @@ /* append output */ #define SWIG_AppendOutput(result, obj) "/* TODO: SWIG_Javascript_AppendOutput(result, obj) */" -#define SWIG_SetConstant(name, obj) "/* TODO: SWIG_Javaqscript_SetConstant(d, name,obj) */" +#define SWIG_SetConstant(name, obj) "/* TODO: SWIG_Javascript_SetConstant(d, name,obj) */" -#define SWIG_Raise(obj, type, desc) "/* TODO: SWIG_Javascript_Raise(obj, type, desc) */" - +#define SWIG_Raise(obj, type, desc) SWIG_Javascript_Raise(context, exception, type) + /* override some of the macros in global valtypes.swg */ %include <javascriptvaltypes.swg> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ne...@us...> - 2012-07-30 18:26:57
|
Revision: 13471 http://swig.svn.sourceforge.net/swig/?rev=13471&view=rev Author: neha1 Date: 2012-07-30 18:26:46 +0000 (Mon, 30 Jul 2012) Log Message: ----------- Clean up swg files after finished switching to UTL. From: Oliver Buchtala <oli...@go...> Modified Paths: -------------- branches/gsoc2012-javascript/Lib/javascript/jsc/javascript.swg branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptfragments.swg branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptprimitives.swg branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptruntime.swg branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptstrings.swg branches/gsoc2012-javascript/Lib/javascript/jsc/javascripttypemaps.swg branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptvaltypes.swg Modified: branches/gsoc2012-javascript/Lib/javascript/jsc/javascript.swg =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/javascript.swg 2012-07-30 18:25:46 UTC (rev 13470) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/javascript.swg 2012-07-30 18:26:46 UTC (rev 13471) @@ -6,17 +6,12 @@ %include <typemaps/swigmacros.swg> +%include <javascripttypemaps.swg> + %include <javascriptruntime.swg> -%include <javascriptstrings.swg> - %include <javascripthelpers.swg> -/* ------------------------------------------------------------ - * Typemap specializations - * ------------------------------------------------------------ */ -%include <javascripttypemaps.swg> - %include <javascriptkw.swg> %include <javascriptcode.swg> Modified: branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptfragments.swg =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptfragments.swg 2012-07-30 18:25:46 UTC (rev 13470) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptfragments.swg 2012-07-30 18:26:46 UTC (rev 13471) @@ -1,21 +0,0 @@ -%define %numeric_type_asval(Type, Base, Frag, OverflowCond) -%fragment(SWIG_AsVal_frag(Type),"header", - fragment=Frag, - fragment=SWIG_AsVal_frag(Base)) { -SWIGINTERN int -SWIG_AsVal_dec(Type)(JSContextRef context, SWIG_Object obj, Type *val) -{ - Base v; - int res = SWIG_AsVal(Base)(context, obj, &v); - if (SWIG_IsOK(res)) { - if (OverflowCond) { - return SWIG_OverflowError; - } else { - if (val) *val = %numeric_cast(v, Type); - } - } - return res; -} -} -%enddef - Modified: branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptprimitives.swg =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptprimitives.swg 2012-07-30 18:25:46 UTC (rev 13470) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptprimitives.swg 2012-07-30 18:26:46 UTC (rev 13471) @@ -2,7 +2,7 @@ %fragment(SWIG_From_frag(bool),"header") { SWIGINTERNINLINE -JSValueRef SWIG_From_dec(bool)(JSContextRef context, bool value) +JSValueRef SWIG_From_dec(bool)(bool value) { return JSValueMakeBoolean(context, value); } @@ -11,7 +11,7 @@ %fragment(SWIG_AsVal_frag(bool),"header", fragment=SWIG_AsVal_frag(long)) { SWIGINTERN -int SWIG_AsVal_dec(bool)(JSContextRef context, JSValueRef obj, bool *val) +int SWIG_AsVal_dec(bool)(JSValueRef obj, bool *val) { if(!JSValueIsBoolean(context, obj)) { return SWIG_ERROR; @@ -23,7 +23,7 @@ %fragment(SWIG_From_frag(int),"header") { SWIGINTERNINLINE JSValueRef - SWIG_From_dec(int)(JSContextRef context, int value) + SWIG_From_dec(int)(int value) { return JSValueMakeNumber(context, value); } @@ -36,7 +36,7 @@ %fragment(SWIG_AsVal_frag(long),"header", fragment="SWIG_CanCastAsInteger") { SWIGINTERN int -SWIG_AsVal_dec(long)(JSContextRef context, JSValueRef obj, long* val) +SWIG_AsVal_dec(long)(JSValueRef obj, long* val) { if (!JSValueIsNumber(context, obj)) { return SWIG_TypeError; @@ -52,7 +52,7 @@ %fragment(SWIG_From_frag(unsigned long),"header", fragment=SWIG_From_frag(long)) { SWIGINTERNINLINE JSValueRef -SWIG_From_dec(unsigned long)(JSContextRef context, unsigned long value) +SWIG_From_dec(unsigned long)(unsigned long value) { return (value > LONG_MAX) ? JSValueMakeNumber(context, value) : JSValueMakeNumber(context, %numeric_cast(value,long)); @@ -62,7 +62,7 @@ %fragment(SWIG_AsVal_frag(unsigned long),"header", fragment="SWIG_CanCastAsInteger") { SWIGINTERN int -SWIG_AsVal_dec(unsigned long)(JSContextRef context, JSValueRef obj, unsigned long *val) +SWIG_AsVal_dec(unsigned long)(JSValueRef obj, unsigned long *val) { if(!JSValueIsNumber(context, obj)) { return SWIG_TypeError; @@ -81,12 +81,16 @@ } %fragment(SWIG_From_frag(double),"header") { - %define_as(SWIG_From_dec(double), JSValueMakeNumber) +SWIGINTERN JSValueRef +SWIG_From_dec(double) (double val) +{ + return JSValueMakeNumber(context, val); } +} %fragment(SWIG_AsVal_frag(double),"header") { SWIGINTERN int -SWIG_AsVal_dec(double)(JSContextRef context, JSValueRef obj, double *val) +SWIG_AsVal_dec(double)(JSValueRef obj, double *val) { if(!JSValueIsNumber(context, obj)) { return SWIG_TypeError; @@ -102,18 +106,18 @@ %fragment(SWIG_From_frag(size_t),"header",fragment=SWIG_From_frag(unsigned long)) { SWIGINTERNINLINE JSValueRef -SWIG_From_dec(size_t)(JSContextRef context, size_t value) +SWIG_From_dec(size_t)(size_t value) { - return SWIG_From(unsigned long)(context, %numeric_cast(value, unsigned long)); + return SWIG_From(unsigned long)(%numeric_cast(value, unsigned long)); } } %fragment(SWIG_AsVal_frag(size_t),"header",fragment=SWIG_AsVal_frag(unsigned long)) { SWIGINTERNINLINE int -SWIG_AsVal_dec(size_t)(JSContextRef context, JSValueRef obj, size_t *val) +SWIG_AsVal_dec(size_t)(JSValueRef obj, size_t *val) { unsigned long v; - int res = SWIG_AsVal(unsigned long)(context, obj, val ? &v : 0); + int res = SWIG_AsVal(unsigned long)(obj, val ? &v : 0); if (SWIG_IsOK(res) && val) *val = %numeric_cast(v, size_t); return res; } @@ -253,7 +257,7 @@ %typemap(arginit) char * %{ -// TODO: need arginit for char* +// TODO: arginit for char* ? %} %typemap(out) unsigned char * @@ -377,9 +381,6 @@ $result = JSObjectMake(context, _SwigObject_classRef, result_privatedata); %} -// Javascript specific directives -//TODO - // Some ANSI C typemaps */ %apply unsigned long { size_t }; %apply const unsigned long & { const size_t & }; Modified: branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptruntime.swg =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptruntime.swg 2012-07-30 18:25:46 UTC (rev 13470) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptruntime.swg 2012-07-30 18:26:46 UTC (rev 13471) @@ -16,13 +16,28 @@ %insert(runtime) "swigrun.swg"; /* SWIG API */ %insert(runtime) "swigerrors.swg"; /* SWIG errors */ +%insert(runtime) %{ #define SWIG_Error(code, msg) SWIG_JSC_exception(context, exception, code, msg) #define SWIG_exception(code, msg) SWIG_JSC_exception(context, exception, code, msg) #define SWIG_fail /* TODO: goto fail ?*/ //#define SWIG_Raise(obj, type, desc) SWIG_Javascript_Raise(context, exception, type) +#define SWIG_JSC_FROM_DECL_ARGS(arg1) (JSContextRef context, arg1) +#define SWIG_JSC_FROM_CALL_ARGS(arg1) (context, arg1) +#define SWIG_JSC_AS_DECL_ARGS(arg1, arg2) (JSContextRef context, arg1, arg2) +#define SWIG_JSC_AS_CALL_ARGS(arg1, arg2) (context, arg1, arg2) +%} + %insert(runtime) %{ +void SWIG_Javascript_Raise(JSContextRef context, JSValueRef *exception, const char* descr) { + JSStringRef jsstring = JSStringCreateWithUTF8CString(descr); + *exception = JSValueMakeString(context, jsstring); + JSStringRelease(jsstring); +} +%} + +%insert(runtime) %{ typedef struct { bool swigCMemOwn; void *swigCObject; Modified: branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptstrings.swg =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptstrings.swg 2012-07-30 18:25:46 UTC (rev 13470) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptstrings.swg 2012-07-30 18:26:46 UTC (rev 13471) @@ -121,7 +121,7 @@ %fragment(SWIG_From_frag(Char),"header",fragment=#SWIG_FromCharPtrAndSize) { SWIGINTERNINLINE SWIG_Object -SWIG_From_dec(Char)(JSContextRef context, Char c) +SWIG_From_dec(Char)(Char c) { return SWIG_JSC_FromCharPtrAndSize(context, &c,1); } @@ -132,12 +132,12 @@ fragment=FragLimits, fragment=SWIG_AsVal_frag(long)) { SWIGINTERN int -SWIG_AsVal_dec(Char)(JSContextRef context, SWIG_Object obj, Char *val) +SWIG_AsVal_dec(Char)(SWIG_Object obj, Char *val) { int res = SWIG_As##CharName##Array(obj, val, 1); if (!SWIG_IsOK(res)) { long v; - res = SWIG_AddCast(SWIG_AsVal(long)(context, obj, &v)); + res = SWIG_AddCast(SWIG_AsVal(long)(obj, &v)); if (SWIG_IsOK(res)) { if ((CHAR_MIN <= v) && (v <= CHAR_MAX)) { if (val) *val = %numeric_cast(v, Char); Modified: branches/gsoc2012-javascript/Lib/javascript/jsc/javascripttypemaps.swg =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/javascripttypemaps.swg 2012-07-30 18:25:46 UTC (rev 13470) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/javascripttypemaps.swg 2012-07-30 18:26:46 UTC (rev 13471) @@ -1,4 +1,9 @@ +#define SWIG_FROM_DECL_ARGS SWIG_JSC_FROM_DECL_ARGS +#define SWIG_FROM_CALL_ARGS SWIG_JSC_FROM_CALL_ARGS +#define SWIG_AS_DECL_ARGS SWIG_JSC_AS_DECL_ARGS +#define SWIG_AS_CALL_ARGS SWIG_JSC_AS_CALL_ARGS + %include <javascriptfragments.swg> /* Include fundamental fragemt definitions */ @@ -20,6 +25,8 @@ /* override some of the macros in global valtypes.swg */ %include <javascriptvaltypes.swg> +%include <javascriptstrings.swg> + /* Include the unified typemap library */ %include <typemaps/swigtypemaps.swg> Modified: branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptvaltypes.swg =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptvaltypes.swg 2012-07-30 18:25:46 UTC (rev 13470) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptvaltypes.swg 2012-07-30 18:26:46 UTC (rev 13471) @@ -1,28 +1 @@ -%define %value_in_typemap(asval_meth,frag,Type...) - %typemap(in,noblock=1,fragment=frag) Type (Type val, int ecode = 0) { - ecode = asval_meth(context, $input, &val); - if (!SWIG_IsOK(ecode)) { - %argument_fail(ecode, "$ltype", $symname, $argnum); - } - $1 = %static_cast(val,$ltype); - } - %typemap(freearg) Type ""; - %typemap(in,noblock=1,fragment=frag) const Type & ($*ltype temp, Type val, int ecode = 0) { - ecode = asval_meth(context, $input, &val); - if (!SWIG_IsOK(ecode)) { - %argument_fail(ecode, "$*ltype", $symname, $argnum); - } - temp = %static_cast(val, $*ltype); - $1 = &temp; - } - %typemap(freearg) const Type& ""; -%enddef -%define %value_out_typemap(from_meth,frag,Type...) - %typemap(out,noblock=1,fragment=frag) Type, const Type { - %set_output(from_meth(context, %static_cast($1,Type))); - } - %typemap(out,noblock=1,fragment=frag) const Type& { - %set_output(from_meth(context, %static_cast(*$1,Type))); - } -%enddef This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ne...@us...> - 2012-07-30 18:30:16
|
Revision: 13476 http://swig.svn.sourceforge.net/swig/?rev=13476&view=rev Author: neha1 Date: 2012-07-30 18:30:10 +0000 (Mon, 30 Jul 2012) Log Message: ----------- Fixes regressions after merge. From: Oliver Buchtala <oli...@go...> Modified Paths: -------------- branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptprimitives.swg branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptruntime.swg Modified: branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptprimitives.swg =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptprimitives.swg 2012-07-30 18:29:34 UTC (rev 13475) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptprimitives.swg 2012-07-30 18:30:10 UTC (rev 13476) @@ -30,8 +30,12 @@ } %fragment(SWIG_From_frag(long),"header") { - %define_as(SWIG_From_dec(long), JSValueMakeNumber) +SWIGINTERNINLINE JSValueRef + SWIG_From_dec(long)(long value) +{ + return JSValueMakeNumber(context, value); } +} %fragment(SWIG_AsVal_frag(long),"header", fragment="SWIG_CanCastAsInteger") { Modified: branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptruntime.swg =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptruntime.swg 2012-07-30 18:29:34 UTC (rev 13475) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptruntime.swg 2012-07-30 18:30:10 UTC (rev 13476) @@ -20,9 +20,7 @@ #define SWIG_Error(code, msg) SWIG_JSC_exception(context, exception, code, msg) #define SWIG_exception(code, msg) SWIG_JSC_exception(context, exception, code, msg) #define SWIG_fail /* TODO: goto fail ?*/ -//#define SWIG_Raise(obj, type, desc) SWIG_Javascript_Raise(context, exception, type) - #define SWIG_JSC_FROM_DECL_ARGS(arg1) (JSContextRef context, arg1) #define SWIG_JSC_FROM_CALL_ARGS(arg1) (context, arg1) #define SWIG_JSC_AS_DECL_ARGS(arg1, arg2) (JSContextRef context, arg1, arg2) @@ -30,19 +28,6 @@ %} %insert(runtime) %{ -void SWIG_Javascript_Raise(JSContextRef context, JSValueRef *exception, const char* descr) { - JSStringRef jsstring = JSStringCreateWithUTF8CString(descr); - *exception = JSValueMakeString(context, jsstring); - JSStringRelease(jsstring); -} - -void SWIG_JSC_exception(JSContextRef context, JSValueRef *exception, int code, const char* msg) { - SWIG_Javascript_Raise(context, exception, msg); -} - -%} - -%insert(runtime) %{ typedef struct { bool swigCMemOwn; void *swigCObject; @@ -51,11 +36,17 @@ %} %insert(runtime) %{ + void SWIG_Javascript_Raise(JSContextRef context, JSValueRef *exception, const char* type) { JSStringRef message = JSStringCreateWithUTF8CString(type); *exception = JSValueMakeString(context, message); JSStringRelease(message); } + +void SWIG_JSC_exception(JSContextRef context, JSValueRef *exception, int code, const char* msg) { + SWIG_Javascript_Raise(context, exception, msg); +} + %} %insert(runtime) %{ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ne...@us...> - 2012-08-20 18:35:01
|
Revision: 13693 http://swig.svn.sourceforge.net/swig/?rev=13693&view=rev Author: neha1 Date: 2012-08-20 18:34:55 +0000 (Mon, 20 Aug 2012) Log Message: ----------- Add support for complex types. Note: in javascript there is no builtin type for complex values. Instead, a number array of length 2 is mapped to complex. Added Paths: ----------- branches/gsoc2012-javascript/Lib/javascript/jsc/ccomplex.i branches/gsoc2012-javascript/Lib/javascript/jsc/complex.i branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptcomplex.swg branches/gsoc2012-javascript/Lib/javascript/jsc/std_complex.i Added: branches/gsoc2012-javascript/Lib/javascript/jsc/ccomplex.i =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/ccomplex.i (rev 0) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/ccomplex.i 2012-08-20 18:34:55 UTC (rev 13693) @@ -0,0 +1,26 @@ +/* ----------------------------------------------------------------------------- + * ccomplex.i + * + * C complex typemaps + * ISO C99: 7.3 Complex arithmetic <complex.h> + * ----------------------------------------------------------------------------- */ + + +%include <javscriptcomplex.swg> + +%{ +#include <complex.h> +%} + + +/* C complex constructor */ +#define CCplxConst(r, i) ((r) + I*(i)) + +%swig_cplxflt_convn(float complex, CCplxConst, creal, cimag); +%swig_cplxdbl_convn(double complex, CCplxConst, creal, cimag); +%swig_cplxdbl_convn(complex, CCplxConst, creal, cimag); + +/* declaring the typemaps */ +%typemaps_primitive(SWIG_TYPECHECK_CPLXFLT, float complex); +%typemaps_primitive(SWIG_TYPECHECK_CPLXDBL, double complex); +%typemaps_primitive(SWIG_TYPECHECK_CPLXDBL, complex); Added: branches/gsoc2012-javascript/Lib/javascript/jsc/complex.i =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/complex.i (rev 0) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/complex.i 2012-08-20 18:34:55 UTC (rev 13693) @@ -0,0 +1,6 @@ +#ifdef __cplusplus +%include <std_complex.i> +#else +%include <ccomplex.i> +#endif + Added: branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptcomplex.swg =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptcomplex.swg (rev 0) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptcomplex.swg 2012-08-20 18:34:55 UTC (rev 13693) @@ -0,0 +1,146 @@ +/* + Defines the As/From converters for double/float complex, you need to + provide complex Type, the Name you want to use in the converters, + the complex Constructor method, and the Real and Imag complex + accessor methods. + + See the std_complex.i and ccomplex.i for concret examples. +*/ + +/* the common from converter */ +%define %swig_fromcplx_conv(Type, Real, Imag) +%fragment(SWIG_From_frag(Type),"header", + fragment=SWIG_From_frag(double)) +{ +SWIGINTERNINLINE JSObjectRef +SWIG_From_dec(Type)(%ifcplusplus(const Type&, Type) c) +{ + JSValueRef vals[2]; + vals[0] = SWIG_From(double)(Real(c)); + vals[1] = SWIG_From(double)(Imag(c)); + return JSObjectMakeArray(context, 2, vals, NULL); +} +} +%enddef + +/* the double case */ +%define %swig_cplxdbl_conv(Type, Constructor, Real, Imag) +%fragment(SWIG_AsVal_frag(Type),"header", + fragment=SWIG_AsVal_frag(double)) +{ +SWIGINTERN int +SWIG_AsVal_dec(Type) (JSValueRef o, Type* val) +{ + if (JSValueIsObject(context, o)) { + JSObjectRef array; + JSValueRef exception, js_re, js_im; + double re, im; + int res; + + exception = 0; + res = 0; + + array = JSValueToObject(context, o, &exception); + if(exception != 0) + return SWIG_TypeError; + + js_re = JSObjectGetPropertyAtIndex(context, array, 0, &exception); + if(exception != 0) + return SWIG_TypeError; + + js_im = JSObjectGetPropertyAtIndex(context, array, 1, &exception); + if(exception != 0) + return SWIG_TypeError; + + res = SWIG_AsVal(double)(js_re, &re); + if(!SWIG_IsOK(res)) { + return SWIG_TypeError; + } + + res = SWIG_AsVal(double)(js_im, &im); + if(!SWIG_IsOK(res)) { + return SWIG_TypeError; + } + + if (val) *val = Constructor(re, im); + return SWIG_OK; + } else { + double d; + int res = SWIG_AddCast(SWIG_AsVal(double)(o, &d)); + if (SWIG_IsOK(res)) { + if (val) *val = Constructor(d, 0.0); + return res; + } + } + return SWIG_TypeError; +} +} +%swig_fromcplx_conv(Type, Real, Imag); +%enddef + +/* the float case */ +%define %swig_cplxflt_conv(Type, Constructor, Real, Imag) +%fragment(SWIG_AsVal_frag(Type),"header", + fragment=SWIG_AsVal_frag(float)) { +SWIGINTERN int +SWIG_AsVal_dec(Type)(JSValueRef o, Type *val) +{ + if (JSValueIsObject(context, o)) { + JSObjectRef array; + JSValueRef exception, js_re, js_im; + double re, im; + int res; + + exception = 0; + res = 0; + + array = JSValueToObject(context, o, &exception); + if(exception != 0) + return SWIG_TypeError; + + js_re = JSObjectGetPropertyAtIndex(context, array, 0, &exception); + if(exception != 0) + return SWIG_TypeError; + + js_im = JSObjectGetPropertyAtIndex(context, array, 1, &exception); + if(exception != 0) + return SWIG_TypeError; + + res = SWIG_AsVal(double)(js_re, &re); + if(!SWIG_IsOK(res)) { + return SWIG_TypeError; + } + + res = SWIG_AsVal(double)(js_im, &im); + if(!SWIG_IsOK(res)) { + return SWIG_TypeError; + } + + if ((-FLT_MAX <= re && re <= FLT_MAX) && (-FLT_MAX <= im && im <= FLT_MAX)) { + if (val) *val = Constructor(%numeric_cast(re, float), + %numeric_cast(im, float)); + return SWIG_OK; + } else { + return SWIG_OverflowError; + } + } else { + float re; + int res = SWIG_AddCast(SWIG_AsVal(float)(o, &re)); + if (SWIG_IsOK(res)) { + if (val) *val = Constructor(re, 0.0); + return res; + } + } + return SWIG_TypeError; +} +} + +%swig_fromcplx_conv(Type, Real, Imag); +%enddef + +#define %swig_cplxflt_convn(Type, Constructor, Real, Imag) \ +%swig_cplxflt_conv(Type, Constructor, Real, Imag) + + +#define %swig_cplxdbl_convn(Type, Constructor, Real, Imag) \ +%swig_cplxdbl_conv(Type, Constructor, Real, Imag) Added: branches/gsoc2012-javascript/Lib/javascript/jsc/std_complex.i =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/std_complex.i (rev 0) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/std_complex.i 2012-08-20 18:34:55 UTC (rev 13693) @@ -0,0 +1,19 @@ +/* + * STD C++ complex typemaps + */ + +%include <javascriptcomplex.swg> + +%{ +#include <complex> +%} + +/* defining the complex as/from converters */ + +%swig_cplxdbl_convn(std::complex<double>, std::complex<double>, std::real, std::imag) +%swig_cplxflt_convn(std::complex<float>, std::complex<float>, std::real, std::imag) + +/* defining the typemaps */ + +%typemaps_primitive(%checkcode(CPLXDBL), std::complex<double>); +%typemaps_primitive(%checkcode(CPLXFLT), std::complex<float>); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ne...@us...> - 2012-08-20 18:36:44
|
Revision: 13696 http://swig.svn.sourceforge.net/swig/?rev=13696&view=rev Author: neha1 Date: 2012-08-20 18:36:38 +0000 (Mon, 20 Aug 2012) Log Message: ----------- Minor clean up in Lib/javascript/jsc. Modified Paths: -------------- branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptprimitives.swg Removed Paths: ------------- branches/gsoc2012-javascript/Lib/javascript/jsc/typemaps.i Modified: branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptprimitives.swg =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptprimitives.swg 2012-08-20 18:36:05 UTC (rev 13695) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptprimitives.swg 2012-08-20 18:36:38 UTC (rev 13696) @@ -224,14 +224,7 @@ float *, double * %{ - //SWIG_PRV_DATA *privatedata = new SWIG_PRV_DATA(); - //privatedata->swigCMemOwn = false; - //privatedata->swigCObject = result; - // DEBUG: JSObjectMake - case 1 - // TODO: this needs to be fixed - // $result = JSObjectMake(context, $1_mangle_classRef, privatedata); - // $result = JSValueMakeUndefined(context); - $result = SWIG_JSC_NewPointerObj(context, $1, SWIGTYPE$1_mangle , SWIG_POINTER_OWN); + $result = SWIG_JSC_NewPointerObj(context, $1, SWIGTYPE$1_mangle, $owner); %} %typemap(in) bool Deleted: branches/gsoc2012-javascript/Lib/javascript/jsc/typemaps.i =================================================================== This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ne...@us...> - 2012-08-20 18:39:34
|
Revision: 13701 http://swig.svn.sourceforge.net/swig/?rev=13701&view=rev Author: neha1 Date: 2012-08-20 18:39:28 +0000 (Mon, 20 Aug 2012) Log Message: ----------- Introduce fail label for immediate return on errors. Modified Paths: -------------- branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptcode.swg branches/gsoc2012-javascript/Lib/javascript/jsc/javascripthelpers.swg branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptruntime.swg Modified: branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptcode.swg =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptcode.swg 2012-08-20 18:38:47 UTC (rev 13700) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptcode.swg 2012-08-20 18:39:28 UTC (rev 13701) @@ -11,6 +11,10 @@ ${LOCALS} ${CODE} return jsresult; + + goto fail; + fail: + return NULL; } %} @@ -26,6 +30,12 @@ { ${LOCALS} ${CODE} + + return true; + + goto fail; + fail: + return false; } %} @@ -41,6 +51,10 @@ ${LOCALS} ${CODE} return jsresult; + + goto fail; + fail: + return NULL; } %} @@ -164,10 +178,13 @@ ${DISPATCH_CASES} { // TODO: handle illegal arguments - thisObject = JSValueToObject(context, JSValueMakeUndefined(context), exception); + SWIG_exception_fail(SWIG_ERROR, "Illegal arguments for contruction of ${classname_mangled}"); } return thisObject; + + fail: + return NULL; } %} @@ -189,6 +206,10 @@ ${CODE} return SWIG_JSC_NewPointerObj(context, result, SWIGTYPE_${type_mangled}, SWIG_POINTER_OWN); + + goto fail; + fail: + return NULL; } %} /********************************************************************** @@ -269,5 +290,3 @@ %fragment ("JS_register_namespace", "templates") %{ JS_registerNamespace(context, ${namespace_mangled}_object, ${parent_namespace}_object, "${namespace}"); %} - - Modified: branches/gsoc2012-javascript/Lib/javascript/jsc/javascripthelpers.swg =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/javascripthelpers.swg 2012-08-20 18:38:47 UTC (rev 13700) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/javascripthelpers.swg 2012-08-20 18:39:28 UTC (rev 13701) @@ -49,9 +49,9 @@ res = sprintf(msg, "Tried to write read-only variable: %s.", buffer); if(res<0) { - SWIG_exception_fail(SWIG_ERROR, "Tried to write read-only variable."); + SWIG_exception(SWIG_ERROR, "Tried to write read-only variable."); } else { - SWIG_exception_fail(SWIG_ERROR, msg); + SWIG_exception(SWIG_ERROR, msg); } return false; Modified: branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptruntime.swg =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptruntime.swg 2012-08-20 18:38:47 UTC (rev 13700) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptruntime.swg 2012-08-20 18:39:28 UTC (rev 13701) @@ -19,7 +19,7 @@ %insert(runtime) %{ #define SWIG_Error(code, msg) SWIG_JSC_exception(context, exception, code, msg) #define SWIG_exception(code, msg) SWIG_JSC_exception(context, exception, code, msg) -#define SWIG_fail /* TODO: goto fail ?*/ +#define SWIG_fail goto fail #define SWIG_JSC_FROM_DECL_ARGS(arg1) (JSContextRef context, arg1) #define SWIG_JSC_FROM_CALL_ARGS(arg1) (context, arg1) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ne...@us...> - 2012-08-20 18:40:07
|
Revision: 13702 http://swig.svn.sourceforge.net/swig/?rev=13702&view=rev Author: neha1 Date: 2012-08-20 18:40:01 +0000 (Mon, 20 Aug 2012) Log Message: ----------- Introduce string helper to reduce some multi-line statements. Modified Paths: -------------- branches/gsoc2012-javascript/Lib/javascript/jsc/javascripthelpers.swg branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptprimitives.swg branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptstrings.swg Modified: branches/gsoc2012-javascript/Lib/javascript/jsc/javascripthelpers.swg =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/javascripthelpers.swg 2012-08-20 18:39:28 UTC (rev 13701) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/javascripthelpers.swg 2012-08-20 18:40:01 UTC (rev 13702) @@ -56,4 +56,14 @@ return false; } + +JSValueRef JS_CharPtrToJSValue(JSContextRef context, char* cstr) { + JSValueRef val; + + JSStringRef jsstring = JSStringCreateWithUTF8CString((char*) cstr); + val = JSValueMakeString(context, jsstring); + JSStringRelease(jsstring); + + return val; +} %} Modified: branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptprimitives.swg =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptprimitives.swg 2012-08-20 18:39:28 UTC (rev 13701) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptprimitives.swg 2012-08-20 18:40:01 UTC (rev 13702) @@ -254,9 +254,7 @@ %typemap(out) char * %{ - JSStringRef jsstring = JSStringCreateWithUTF8CString((char*) $1); - $result = JSValueMakeString(context, jsstring); - JSStringRelease(jsstring); + $result = JS_CharPtrToJSValue(context, (char*) $1); %} %typemap(arginit) char * @@ -279,9 +277,7 @@ %typemap(out) char *& %{ - JSStringRef jsstring = JSStringCreateWithUTF8CString((const char *)*$1); - $result = JSValueMakeString(context, jsstring); - JSStringRelease(jsstring); + $result = JS_CharPtrToJSValue(context, (const char *)*$1); %} /* char arrays - treat as String */ @@ -294,9 +290,7 @@ %typemap(out) char[ANY], char[], unsigned char[ANY], unsigned char[] %{ - JSStringRef jsstring = JSStringCreateWithUTF8CString((char*) $1); - $result = JSValueMakeString(context, jsstring); - JSStringRelease(jsstring); + $result = JS_CharPtrToJSValue(context, (char*) $1); %} %typemap(freearg) char *, char *&, char[ANY], char[] //TODO: Not working: A memory leak Modified: branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptstrings.swg =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptstrings.swg 2012-08-20 18:39:28 UTC (rev 13701) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptstrings.swg 2012-08-20 18:40:01 UTC (rev 13702) @@ -49,6 +49,7 @@ //swig_type_info* pchar_descriptor = SWIG_pchar_descriptor(); //return pchar_descriptor ? // SWIG_InternalNewPointerObj(%const_cast(carray,char *), pchar_descriptor, 0) : SWIG_Py_Void(); + return JSValueMakeUndefined(context); } else { JSStringRef jsstring = JSStringCreateWithUTF8CString(carray); JSValueRef result = JSValueMakeString(context, jsstring); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ne...@us...> - 2012-08-20 18:41:06
|
Revision: 13704 http://swig.svn.sourceforge.net/swig/?rev=13704&view=rev Author: neha1 Date: 2012-08-20 18:40:59 +0000 (Mon, 20 Aug 2012) Log Message: ----------- Cleanup in typemapping files. Modified Paths: -------------- branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptprimitives.swg branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptstrings.swg branches/gsoc2012-javascript/Lib/javascript/jsc/javascripttypemaps.swg Modified: branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptprimitives.swg =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptprimitives.swg 2012-08-20 18:40:26 UTC (rev 13703) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptprimitives.swg 2012-08-20 18:40:59 UTC (rev 13704) @@ -1,5 +1,3 @@ - - %fragment(SWIG_From_frag(bool),"header") { SWIGINTERNINLINE JSValueRef SWIG_From_dec(bool)(bool value) @@ -104,289 +102,3 @@ return SWIG_OK; } } - - -/* size_t */ - -%fragment(SWIG_From_frag(size_t),"header",fragment=SWIG_From_frag(unsigned long)) { -SWIGINTERNINLINE JSValueRef -SWIG_From_dec(size_t)(size_t value) -{ - return SWIG_From(unsigned long)(%numeric_cast(value, unsigned long)); -} -} - -%fragment(SWIG_AsVal_frag(size_t),"header",fragment=SWIG_AsVal_frag(unsigned long)) { -SWIGINTERNINLINE int -SWIG_AsVal_dec(size_t)(JSValueRef obj, size_t *val) -{ - unsigned long v; - int res = SWIG_AsVal(unsigned long)(obj, val ? &v : 0); - if (SWIG_IsOK(res) && val) *val = %numeric_cast(v, size_t); - return res; -} -} - - -// Primitive types -%typemap(in) char, - signed char, - unsigned char, - short, - unsigned short, - int, - unsigned int, - long, - unsigned long, - long long, - unsigned long long, - float, - double -%{ $1 = ($1_ltype)JSValueToNumber(context, $input, NULL); %} - -%typemap(in) const bool &, bool &, - const char &, char &, - const signed char &, signed char &, - const unsigned char &, unsigned char &, - const short &, short &, - const unsigned short &, unsigned short &, - const int &, int &, - const unsigned int &, unsigned int &, - const long &, long &, - const unsigned long &, unsigned long &, - const long long &, long long &, - const unsigned long long &,unsigned long long &, - const float &, float &, - const double &, double & -%{ $1 = ($1_ltype)&$input; %} - -%typemap(out) char, - signed char, - unsigned char, - short, - unsigned short, - int, - unsigned int, - long, - unsigned long, - long long, - unsigned long long, - float, - double -%{ - $result = JSValueMakeNumber(context, $1); -%} - -%typemap(out) const bool &, bool &, - const char &, char &, - const signed char &, signed char &, - const unsigned char &, unsigned char &, - const short &, short &, - const unsigned short &, unsigned short &, - const int &, int &, - const unsigned int &, unsigned int &, - const long &, long &, - const unsigned long &, unsigned long &, - const long long &, long long &, - const unsigned long long &,unsigned long long &, - const float &, float &, - const double &, double & -%{ - $result = JSValueMakeNumber(context,*$1); -%} - - -%typemap(in) short *, - unsigned short *, - int *, - unsigned int *, - long *, - unsigned long *, - long long *, - unsigned long long *, - float *, - double * -%{ - JSObjectRef o$1 = JSValueToObject(context,$input, NULL); - SWIG_PRV_DATA *$1_privatedata = (SWIG_PRV_DATA *)JSObjectGetPrivate(o$1); - $1 = ($1_ltype)$1_privatedata->swigCObject; -%} - - -%typemap(out) short *, - unsigned short *, - int *, - unsigned int *, - long *, - unsigned long *, - long long *, - unsigned long long *, - float *, - double * -%{ - $result = SWIG_JSC_NewPointerObj(context, $1, SWIGTYPE$1_mangle, $owner); -%} - -%typemap(in) bool -%{ - $1 = ($1_ltype)JSValueToBoolean(context, $input); -%} - -%typemap(out) bool -%{ - $result = JSValueMakeBoolean(context, $1); -%} - - -%typemap(out) void -%{ - $result = JSValueMakeUndefined(context); -%} - - -%typemap(in) char * -%{ - JSStringRef $1_str = JSValueToStringCopy(context, $input, NULL); - size_t $1_strsize = JSStringGetMaximumUTF8CStringSize($1_str); - $1 = ($1_ltype) malloc($1_strsize * sizeof(char)); - JSStringGetUTF8CString($1_str, (char*) $1, $1_strsize); -%} - -%typemap(out) char * -%{ - $result = JS_CharPtrToJSValue(context, (char*) $1); -%} - -%typemap(arginit) char * -%{ -// TODO: arginit for char* ? -%} - -%typemap(out) unsigned char * -%{ - // TODO: typemap out for unsigned char* -%} - -%typemap(in) char *& ($*1_ltype temp = 0) %{ - temp = ($*1_ltype)$input; - JSStringRef $1_str = JSValueToStringCopy(context, $input, NULL); - size_t $1_strsize = JSStringGetMaximumUTF8CStringSize($1_str); - $1 = (char *)malloc($1_strsize * sizeof(char)); - JSStringGetUTF8CString($1_str, $1, $1_strsize); -%} - -%typemap(out) char *& -%{ - $result = JS_CharPtrToJSValue(context, (const char *)*$1); -%} - -/* char arrays - treat as String */ -%typemap(in) char[ANY], char[] %{ - JSStringRef $1_str = JSValueToStringCopy(context, $input, NULL); - size_t $1_strsize = JSStringGetMaximumUTF8CStringSize($1_str); - JSStringGetUTF8CString($1_str, $1, $1_strsize); -%} - -%typemap(out) char[ANY], char[], - unsigned char[ANY], unsigned char[] -%{ - $result = JS_CharPtrToJSValue(context, (char*) $1); -%} - -%typemap(freearg) char *, char *&, char[ANY], char[] //TODO: Not working: A memory leak -%{ - free($1); -%} - - -/* Typemaps for composite types */ -%typemap(in) SWIGTYPE ($&1_type argp) // Objects passed by value, convert to a pointer -%{ - // DEBUG: typemap(in) SWIGTYPE ($&1_type argp) - JSObjectRef o$1 = JSValueToObject(context,$input, NULL); - SWIG_PRV_DATA *$1_privatedata = (SWIG_PRV_DATA *)JSObjectGetPrivate(o$1); - argp = ($&1_ltype)$1_privatedata->swigCObject; - $1 = *argp; -%} - -%typemap(out) SWIGTYPE ($&1_type temp) -#ifdef __cplusplus -%{ - temp = new $1_ltype((const $1_ltype &)$1); - SWIG_PRV_DATA *privatedata = new SWIG_PRV_DATA(); - privatedata->swigCMemOwn = false; - privatedata->swigCObject = temp; - // DEBUG: JSObjectMake - case 2 - // TODO: this needs to be fixed - // $result = JSObjectMake(context, $1_mangle_classRef, privatedata); - $result = JSValueMakeUndefined(context); -%} -#else -{ - $&1_ltype $1ptr = ($&1_ltype) malloc(sizeof($1_ltype)); - memmove($1ptr, &$1, sizeof($1_type)); - temp = $1ptr; - SWIG_PRV_DATA *privatedata = (SWIG_PRV_DATA *)malloc(sizeof(SWIG_PRV_DATA()); - privatedata->swigCMemOwn = false; - privatedata->swigCObject = temp; - // DEBUG: JSObjectMake - case 3 - $result = JSObjectMake(context, $*1_mangle_classRef, privatedata); -} -#endif - -%typemap(in) SWIGTYPE *, SWIGTYPE & -%{ - JSObjectRef o$1 = JSValueToObject(context,$input, NULL); - SWIG_PRV_DATA *$1_privatedata = (SWIG_PRV_DATA *)JSObjectGetPrivate(o$1); - $1 = ($1_ltype)$1_privatedata->swigCObject; -%} - -%typemap(out) SWIGTYPE *, SWIGTYPE & -%{ - SWIG_PRV_DATA *privatedata = new SWIG_PRV_DATA(); - privatedata->swigCMemOwn = false; - privatedata->swigCObject = (void*) result; - // DEBUG: JSObjectMake - case 4 - $result = JSObjectMake(context, _SwigObject_classRef, privatedata); -%} -%typemap(arginit) SWIGTYPE * -%{ - // TODO: arginit SWIGTYPE* -%} - -%typemap(in) SWIGTYPE (CLASS::*) -%{ - // TODO: SWIGTYPE Class* in typemap -%} - -%typemap(out) SWIGTYPE (CLASS::*) -%{ - // TODO: SWIGTYPE Class* out typemap - // DEBUG: JSObjectMake - case 5 - $result = JSObjectMake(context, $*1, result); -%} - - - -/* Typecheck typemaps - The purpose of these is merely to issue a warning for overloaded C++ functions - * that cannot be overloaded in Javascript as more than one C++ type maps to a single Javascript type */ -// TODO - -// Default array handling -%typemap(in) SWIGTYPE [] %{ $1 = ($1_ltype)$input; %} -%typemap(out) SWIGTYPE [] %{ - SWIG_PRV_DATA *result_privatedata = (SWIG_PRV_DATA *)malloc(sizeof(SWIG_PRV_DATA)); - result_privatedata->swigCMemOwn = false; - result_privatedata->swigCObject = (void*) $1; - $result = JSObjectMake(context, _SwigObject_classRef, result_privatedata); -%} - -// Some ANSI C typemaps */ -%apply unsigned long { size_t }; -%apply const unsigned long & { const size_t & }; - -// Array reference typemaps -%apply SWIGTYPE & { SWIGTYPE ((&)[ANY]) } - -// const pointers -%apply SWIGTYPE * { SWIGTYPE *const } Modified: branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptstrings.swg =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptstrings.swg 2012-08-20 18:40:26 UTC (rev 13703) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/javascriptstrings.swg 2012-08-20 18:40:59 UTC (rev 13704) @@ -164,7 +164,6 @@ %enddef - %insert(runtime) %{ #define SWIG_AsCharPtrAndSize(val, cptr, psize, alloc) SWIG_JSC_AsCharPtrAndSize(context, val, cptr, psize, alloc) #define SWIG_FromCharPtrAndSize(cptr, size) SWIG_JSC_FromCharPtrAndSize(context, cptr, size) Modified: branches/gsoc2012-javascript/Lib/javascript/jsc/javascripttypemaps.swg =================================================================== --- branches/gsoc2012-javascript/Lib/javascript/jsc/javascripttypemaps.swg 2012-08-20 18:40:26 UTC (rev 13703) +++ branches/gsoc2012-javascript/Lib/javascript/jsc/javascripttypemaps.swg 2012-08-20 18:40:59 UTC (rev 13704) @@ -3,6 +3,11 @@ #define SWIG_FROM_CALL_ARGS SWIG_JSC_FROM_CALL_ARGS #define SWIG_AS_DECL_ARGS SWIG_JSC_AS_DECL_ARGS #define SWIG_AS_CALL_ARGS SWIG_JSC_AS_CALL_ARGS +#define SWIG_Object JSValueRef +#define VOID_Object JSValueMakeUndefined(context) +#define SWIG_AppendOutput(result, obj) +#define SWIG_SetConstant(name, obj) +#define SWIG_Raise(obj, type, desc) SWIG_Javascript_Raise(context, exception, type) %include <javascriptfragments.swg> @@ -11,16 +16,6 @@ /* Python fragments for fundamental types */ %include <javascriptprimitives.swg> - -#define SWIG_Object JSValueRef -#define VOID_Object JSValueMakeUndefined(context) - -/* append output */ -#define SWIG_AppendOutput(result, obj) "/* TODO: SWIG_Javascript_AppendOutput(result, obj) */" - -#define SWIG_SetConstant(name, obj) "/* TODO: SWIG_Javascript_SetConstant(d, name,obj) */" - -#define SWIG_Raise(obj, type, desc) SWIG_Javascript_Raise(context, exception, type) /* override some of the macros in global valtypes.swg */ %include <javascriptvaltypes.swg> @@ -29,4 +24,3 @@ /* Include the unified typemap library */ %include <typemaps/swigtypemaps.swg> - This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |