@@ -394,8 +394,9 @@ def ffi_set_value(self, ptr, val):
394394 vpnt = rffi .cast (rffi .VOIDPP , ptr )
395395 vpnt [0 ] = rffi .cast (rffi .VOIDP , val .raw_data ())
396396 else :
397- print val
398- affirm (False , u"Cannot encode this type" )
397+ frm_name = rt .name (rt .str (val .type ()))
398+ to_name = rt .name (rt .str (self ))
399+ affirm (False , u"Cannot encode " + frm_name + u" as " + to_name )
399400
400401
401402 def ffi_size (self ):
@@ -445,7 +446,13 @@ def ffi_get_value(self, ptr):
445446
446447 def ffi_set_value (self , ptr , val ):
447448 pnt = rffi .cast (rffi .VOIDPP , ptr )
448- if isinstance (val , Buffer ):
449+ if isinstance (val , String ):
450+ pnt = rffi .cast (rffi .CCHARPP , ptr )
451+ utf8 = unicode_to_utf8 (rt .name (val ))
452+ raw = rffi .str2charp (utf8 )
453+ pnt [0 ] = raw
454+ return CCharPToken (raw )
455+ elif isinstance (val , Buffer ):
449456 pnt [0 ] = val .buffer ()
450457 elif isinstance (val , VoidP ):
451458 pnt [0 ] = val .raw_data ()
@@ -454,8 +461,10 @@ def ffi_set_value(self, ptr, val):
454461 elif isinstance (val , CStruct ):
455462 pnt [0 ] = rffi .cast (rffi .VOIDP , val .raw_data ())
456463 else :
457- print val
458- affirm (False , u"Cannot encode this type" )
464+ frm_name = rt .name (rt .str (val .type ()))
465+ to_name = rt .name (rt .str (self ))
466+ affirm (False , u"Cannot encode " + frm_name + u" as " + to_name )
467+
459468
460469 def ffi_size (self ):
461470 return rffi .sizeof (rffi .VOIDP )
0 commit comments