Jsctypes/api: Difference between revisions

Jump to navigation Jump to search
→‎Conversions: elaborate on that
(→‎Conversions: Add note about not autoconverting from a char.array(10) to a JS string)
(→‎Conversions: elaborate on that)
Line 387: Line 387:
Note that null C/C++ pointers do not convert to the JavaScript <code>null</code> value.  ''(Open issue: Should we? Is there any value in retaining the type of a particular null pointer?)''
Note that null C/C++ pointers do not convert to the JavaScript <code>null</code> value.  ''(Open issue: Should we? Is there any value in retaining the type of a particular null pointer?)''


''(Arrays of characters do not convert to JavaScript strings. Rationale: Suppose <code>x</code> is a <code>CData</code> object of a struct type with a member <code>a</code> of type <code>char[10]</code>. Then <code>x.a[0] = '\0';</code> should modify the contents of the array. This implies that <code>x.a</code> must be a <code>CData</code> object, not a JavaScript string.)''
''(Arrays of characters do not convert to JavaScript strings. Rationale: Suppose <code>x</code> is a <code>CData</code> object of a struct type with a member <code>a</code> of type <code>char[10]</code>. Then <code>x.a[1]</code> should return the character in element 1 of the array, even if <code>x.a[0]</code> is a null character.  Likewise, <code>x.a[0] = '\0';</code> should modify the contents of the array. Both are possible only if <code>x.a</code> is a <code>CData</code> object of array type, not a JavaScript string.)''


<code>'''ImplicitConvert(''val'', ''t'')'''</code> - Convert the JavaScript value ''val'' to a C/C++ value of type ''t''.  This is called whenever a JavaScript value of any kind is passed to a parameter of a ctypes-declared function, passed to <code>''cdata''.value = ''val''</code>, or assigned to an array element or struct member, as in <code>''carray''[''i''] = ''val''</code> or <code>''cstruct''.''member'' = ''val''</code>. This function is intended to lose precision only when there is no reasonable alternative. It generally does not coerce values of one type to another type.
<code>'''ImplicitConvert(''val'', ''t'')'''</code> - Convert the JavaScript value ''val'' to a C/C++ value of type ''t''.  This is called whenever a JavaScript value of any kind is passed to a parameter of a ctypes-declared function, passed to <code>''cdata''.value = ''val''</code>, or assigned to an array element or struct member, as in <code>''carray''[''i''] = ''val''</code> or <code>''cstruct''.''member'' = ''val''</code>. This function is intended to lose precision only when there is no reasonable alternative. It generally does not coerce values of one type to another type.
638

edits

Navigation menu