字符串列表缓冲区 / String list buffer 用于在 Python 和 C API 之间传递字符串列表数据。 Used to pass string list data between Python and C API.
| 116 | |
| 117 | |
| 118 | class StringListBuffer: |
| 119 | """字符串列表缓冲区 / String list buffer |
| 120 | |
| 121 | 用于在 Python 和 C API 之间传递字符串列表数据。 |
| 122 | Used to pass string list data between Python and C API. |
| 123 | """ |
| 124 | |
| 125 | _handle: MaaStringListBufferHandle |
| 126 | _own: bool |
| 127 | |
| 128 | def __init__(self, handle: Optional[MaaStringListBufferHandle] = None): |
| 129 | self._set_api_properties() |
| 130 | |
| 131 | if handle: |
| 132 | self._handle = handle |
| 133 | self._own = False |
| 134 | else: |
| 135 | self._handle = Library.framework().MaaStringListBufferCreate() |
| 136 | self._own = True |
| 137 | |
| 138 | if not self._handle: |
| 139 | raise RuntimeError("Failed to create string list buffer.") |
| 140 | |
| 141 | def __del__(self): |
| 142 | if self._handle and self._own: |
| 143 | Library.framework().MaaStringListBufferDestroy(self._handle) |
| 144 | |
| 145 | def get(self) -> list[str]: |
| 146 | """获取字符串列表 / Get string list |
| 147 | |
| 148 | Returns: |
| 149 | List[str]: 字符串列表 / String list |
| 150 | """ |
| 151 | count = Library.framework().MaaStringListBufferSize(self._handle) |
| 152 | result: list[str] = [] |
| 153 | for i in range(count): |
| 154 | buff = Library.framework().MaaStringListBufferAt(self._handle, i) |
| 155 | s = StringBuffer(buff).get() |
| 156 | result.append(s) |
| 157 | return result |
| 158 | |
| 159 | def set(self, value: list[str]) -> bool: |
| 160 | """设置字符串列表 / Set string list |
| 161 | |
| 162 | Args: |
| 163 | value: 字符串列表 / String list |
| 164 | |
| 165 | Returns: |
| 166 | bool: 是否成功 / Whether successful |
| 167 | """ |
| 168 | self.clear() |
| 169 | for s in value: |
| 170 | if not self.append(s): |
| 171 | return False |
| 172 | return True |
| 173 | |
| 174 | def append(self, value: str) -> bool: |
| 175 | """追加字符串 / Append string |
no outgoing calls
no test coverage detected