@@ -139,9 +139,17 @@ static NativeType map_native_type(HandlerMapping p_mapping, NameRef p_type)
139139 switch (NativeTypeFromName (p_type))
140140 {
141141 case kNativeTypeCString :
142- return kNativeTypeJavaString ;
142+ return kNativeTypeJavaString ;
143+ case kNativeTypeUTF8CString :
144+ return kNativeTypeJavaUTF8String ;
145+ case kNativeTypeUTF16CString :
146+ return kNativeTypeJavaUTF16String ;
143147 case kNativeTypeCData :
144148 return kNativeTypeJavaData ;
149+ case kNativeTypeUTF8CData :
150+ return kNativeTypeJavaUTF8Data ;
151+ case kNativeTypeUTF16CData :
152+ return kNativeTypeJavaUTF16Data ;
145153 }
146154 }
147155
@@ -496,6 +504,11 @@ class EnumTypeMapper: public TypeMapper
496504class JavaStringTypeMapper : public TypeMapper
497505{
498506public:
507+ JavaStringTypeMapper (NativeType p_type)
508+ {
509+ m_tag = NativeTypeGetTag (p_type);
510+ }
511+
499512 virtual const char *GetTypedef (ParameterType type)
500513 {
501514 return " __INTERNAL_ERROR__" ;
@@ -509,7 +522,7 @@ class JavaStringTypeMapper: public TypeMapper
509522
510523 virtual void Fetch (CoderRef p_coder, ParameterType p_mode, const char *p_name, const char *p_source)
511524 {
512- CoderWriteStatement (p_coder, " success = fetch__java_string (__java_env, name__%s, %s, %s)" , p_name, p_source, p_name);
525+ CoderWriteStatement (p_coder, " success = fetch__%s (__java_env, name__%s, %s, %s)" , m_tag , p_name, p_source, p_name);
513526 }
514527
515528 virtual void Default (CoderRef p_coder, ParameterType p_mode, const char *p_name, ValueRef p_value)
@@ -519,18 +532,27 @@ class JavaStringTypeMapper: public TypeMapper
519532
520533 virtual void Store (CoderRef p_coder, ParameterType p_mode, const char *p_name, const char *p_target)
521534 {
522- CoderWriteStatement (p_coder, " success = store__java_string (__java_env, %s, %s)" , p_target, p_name);
535+ CoderWriteStatement (p_coder, " success = store__%s (__java_env, %s, %s)" , m_tag , p_target, p_name);
523536 }
524537
525538 virtual void Finalize (CoderRef p_coder, ParameterType p_mode, const char *p_name)
526539 {
527540 CoderWriteStatement (p_coder, " free__java_string(__java_env, %s)" , p_name);
528541 }
542+
543+ private:
544+ const char * m_tag;
529545};
530546
531547class JavaDataTypeMapper : public TypeMapper
532548{
533549public:
550+
551+ JavaDataTypeMapper (NativeType p_type)
552+ {
553+ m_tag = NativeTypeGetTag (p_type);
554+ }
555+
534556 virtual const char *GetTypedef (ParameterType type)
535557 {
536558 return " __INTERNAL_ERROR__" ;
@@ -544,7 +566,7 @@ class JavaDataTypeMapper: public TypeMapper
544566
545567 virtual void Fetch (CoderRef p_coder, ParameterType p_mode, const char *p_name, const char *p_source)
546568 {
547- CoderWriteStatement (p_coder, " success = fetch__java_data (__java_env, name__%s, %s, %s)" , p_name, p_source, p_name);
569+ CoderWriteStatement (p_coder, " success = fetch__%s (__java_env, name__%s, %s, %s)" , m_tag , p_name, p_source, p_name);
548570 }
549571
550572 virtual void Default (CoderRef p_coder, ParameterType p_mode, const char *p_name, ValueRef p_value)
@@ -554,13 +576,16 @@ class JavaDataTypeMapper: public TypeMapper
554576
555577 virtual void Store (CoderRef p_coder, ParameterType p_mode, const char *p_name, const char *p_target)
556578 {
557- CoderWriteStatement (p_coder, " success = store__java_data (__java_env, %s, %s)" , p_target, p_name);
579+ CoderWriteStatement (p_coder, " success = store__%s (__java_env, %s, %s)" , m_tag , p_target, p_name);
558580 }
559581
560582 virtual void Finalize (CoderRef p_coder, ParameterType p_mode, const char *p_name)
561583 {
562584 CoderWriteStatement (p_coder, " free__java_data(__java_env, %s)" , p_name);
563585 }
586+
587+ private:
588+ const char * m_tag;
564589};
565590
566591// //////////////////////////////////////////////////////////////////////////////
@@ -1096,8 +1121,14 @@ static TypeMapper *map_parameter_type(InterfaceRef self, HandlerMapping p_mappin
10961121 case kNativeTypeObjcData : return new ObjcDataTypeMapper;
10971122 case kNativeTypeObjcArray : return new ObjcArrayTypeMapper;
10981123 case kNativeTypeObjcDictionary : return new ObjcDictionaryTypeMapper;
1099- case kNativeTypeJavaString : return new JavaStringTypeMapper;
1100- case kNativeTypeJavaData : return new JavaDataTypeMapper;
1124+ case kNativeTypeJavaString :
1125+ case kNativeTypeJavaUTF8String :
1126+ case kNativeTypeJavaUTF16String :
1127+ return new JavaStringTypeMapper (t_type);
1128+ case kNativeTypeJavaData :
1129+ case kNativeTypeJavaUTF8Data :
1130+ case kNativeTypeJavaUTF16Data :
1131+ return new JavaDataTypeMapper (t_type);
11011132 }
11021133 return nil;
11031134}
0 commit comments