|
3 | 3 | using TileDB.Interop;
|
4 | 4 | using GroupHandle = TileDB.CSharp.Marshalling.SafeHandles.GroupHandle;
|
5 | 5 | using ConfigHandle = TileDB.CSharp.Marshalling.SafeHandles.ConfigHandle;
|
| 6 | +using TileDB.CSharp.Marshalling; |
6 | 7 |
|
7 | 8 | namespace TileDB.CSharp
|
8 | 9 | {
|
@@ -278,23 +279,40 @@ public ulong MemberCount()
|
278 | 279 | /// <summary>
|
279 | 280 | /// Get member by index.
|
280 | 281 | /// </summary>
|
281 |
| - /// <param name="index"></param> |
282 |
| - /// <returns></returns> |
| 282 | + /// <param name="index">The member's index.</param> |
283 | 283 | (string uri, ObjectType object_type, string name) MemberByIndex(ulong index)
|
284 | 284 | {
|
285 | 285 | using var ctxHandle = _ctx.Handle.Acquire();
|
286 | 286 | using var handle = _handle.Acquire();
|
287 |
| - sbyte* uriPtr; |
288 |
| - sbyte* namePtr; |
| 287 | + using StringHandleHolder uriPtr = new(); |
| 288 | + using StringHandleHolder namePtr = new(); |
289 | 289 | tiledb_object_t tiledb_objecttype;
|
290 |
| - _ctx.handle_error(Methods.tiledb_group_get_member_by_index( |
291 |
| - ctxHandle, handle, index, &uriPtr, &tiledb_objecttype, &namePtr)); |
| 290 | + _ctx.handle_error(Methods.tiledb_group_get_member_by_index_v2( |
| 291 | + ctxHandle, handle, index, &uriPtr._handle, &tiledb_objecttype, &namePtr._handle)); |
292 | 292 |
|
293 |
| - string uri = MarshaledStringOut.GetStringFromNullTerminated(uriPtr); |
294 |
| - string name = MarshaledStringOut.GetStringFromNullTerminated(namePtr); |
| 293 | + string uri = uriPtr.ToString(); |
| 294 | + string name = namePtr.ToString(); |
295 | 295 | return (uri, (ObjectType)tiledb_objecttype, name);
|
296 | 296 | }
|
297 | 297 |
|
| 298 | + /// <summary> |
| 299 | + /// Get member by name. |
| 300 | + /// </summary> |
| 301 | + /// <param name="name">The member's name.</param> |
| 302 | + (string uri, ObjectType object_type) MemberByName(string name) |
| 303 | + { |
| 304 | + using var ctxHandle = _ctx.Handle.Acquire(); |
| 305 | + using var handle = _handle.Acquire(); |
| 306 | + using var ms_name = new MarshaledString(name); |
| 307 | + using StringHandleHolder uriPtr = new(); |
| 308 | + tiledb_object_t tiledb_objecttype; |
| 309 | + _ctx.handle_error(Methods.tiledb_group_get_member_by_name_v2( |
| 310 | + ctxHandle, handle, ms_name, &uriPtr._handle, &tiledb_objecttype)); |
| 311 | + |
| 312 | + string uri = uriPtr.ToString(); |
| 313 | + return (uri, (ObjectType)tiledb_objecttype); |
| 314 | + } |
| 315 | + |
298 | 316 | /// <summary>
|
299 | 317 | /// Returns if this group is open or not.
|
300 | 318 | /// </summary>
|
|
0 commit comments