| 114 | |
| 115 | |
| 116 | class RetStr(object): |
| 117 | |
| 118 | def __init__(self, length, encoding='ascii'): |
| 119 | self.length = length |
| 120 | self.buffer = ctypes.create_string_buffer(b'', length) |
| 121 | self.encoding = encoding |
| 122 | |
| 123 | def __iter__(self): |
| 124 | yield self |
| 125 | yield self.length |
| 126 | |
| 127 | @property |
| 128 | def value(self): |
| 129 | if self.encoding: |
| 130 | return self.buffer.value.decode(self.encoding) |
| 131 | else: |
| 132 | return self.buffer.value |
| 133 | |
| 134 | |
| 135 | class RetValue(object): |
no outgoing calls