Skip to content

Commit 2c43ff5

Browse files
committed
Update the Group class to use the new C APIs.
And expose `tiledb_group_get_member_by_name_v2`.
1 parent 460cab7 commit 2c43ff5

File tree

1 file changed

+26
-8
lines changed

1 file changed

+26
-8
lines changed

sources/TileDB.CSharp/Group.cs

+26-8
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using TileDB.Interop;
44
using GroupHandle = TileDB.CSharp.Marshalling.SafeHandles.GroupHandle;
55
using ConfigHandle = TileDB.CSharp.Marshalling.SafeHandles.ConfigHandle;
6+
using TileDB.CSharp.Marshalling;
67

78
namespace TileDB.CSharp
89
{
@@ -278,23 +279,40 @@ public ulong MemberCount()
278279
/// <summary>
279280
/// Get member by index.
280281
/// </summary>
281-
/// <param name="index"></param>
282-
/// <returns></returns>
282+
/// <param name="index">The member's index.</param>
283283
(string uri, ObjectType object_type, string name) MemberByIndex(ulong index)
284284
{
285285
using var ctxHandle = _ctx.Handle.Acquire();
286286
using var handle = _handle.Acquire();
287-
sbyte* uriPtr;
288-
sbyte* namePtr;
287+
using StringHandleHolder uriPtr = new();
288+
using StringHandleHolder namePtr = new();
289289
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));
292292

293-
string uri = MarshaledStringOut.GetStringFromNullTerminated(uriPtr);
294-
string name = MarshaledStringOut.GetStringFromNullTerminated(namePtr);
293+
string uri = uriPtr.ToString();
294+
string name = namePtr.ToString();
295295
return (uri, (ObjectType)tiledb_objecttype, name);
296296
}
297297

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+
298316
/// <summary>
299317
/// Returns if this group is open or not.
300318
/// </summary>

0 commit comments

Comments
 (0)