(p: Parameter)
| 992 | |
| 993 | @cwrap('std::string', 'char*') |
| 994 | def string_c_wrap(p: Parameter) -> None: |
| 995 | t = Type('char*') |
| 996 | if p.returns: |
| 997 | if p.type.is_reference(): |
| 998 | p.add_param(t.add_pointer()) |
| 999 | p.bad_param('${name} == nullptr', 'Null pointer') |
| 1000 | else: |
| 1001 | p.add_param(t) |
| 1002 | p.add_param('size_t', p.name + '_size') |
| 1003 | p.bad_param('${name} == nullptr', 'Null pointer') |
| 1004 | else: |
| 1005 | p.add_param(t) |
| 1006 | p.bad_param('${name} == nullptr', 'Null pointer') |
| 1007 | |
| 1008 | p.read = '${type}(${name})' |
| 1009 | p.cpp_write = '${type}(${name})' |
| 1010 | p.virtual_read = ['${name}.c_str()'] |
| 1011 | if p.type.is_reference(): |
| 1012 | p.write = ['*${name} = ${result}.c_str()'] |
| 1013 | else: |
| 1014 | p.write = [ |
| 1015 | 'auto* it = std::copy_n(${result}.begin(), std::min(${result}.size(), ${name}_size - 1), ${name});' |
| 1016 | '*it = \'\\0\'' |
| 1017 | ] |
| 1018 | |
| 1019 | |
| 1020 | class Handle: |
nothing calls this directly
no test coverage detected