csharp: Add missing docs to slice.

Summary:
Also removed uneeded methods.

Slice also may need some API love to be actually useful later.

ref T8292

Reviewers: segfaultxavi, felipealmeida, brunobelo, woohyun

Reviewed By: segfaultxavi

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T8292

Differential Revision: https://phab.enlightenment.org/D10327
This commit is contained in:
Lauro Moura 2019-10-11 11:22:32 +02:00 committed by Xavi Artigas
parent 3c0e9b424d
commit dcb6380ab5
2 changed files with 61 additions and 15 deletions

View File

@ -2,15 +2,33 @@
using System; using System;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.ComponentModel;
namespace Eina namespace Eina
{ {
/// <summary>
/// Basic interface for both slice types.
/// <para>Since EFL 1.23.</para>
/// </summary>
public interface ISliceBase public interface ISliceBase
{ {
/// <summary>
/// The length of this slice in bytes.
/// <para>Since EFL 1.23.</para>
/// </summary>
UIntPtr Len {get;set;} UIntPtr Len {get;set;}
/// <summary>
/// The contents of this slice.
/// <para>Since EFL 1.23.</para>
/// </summary>
IntPtr Mem {get;set;} IntPtr Mem {get;set;}
/// <summary>
/// The length in bytes as an integer.
/// <para>Since EFL 1.23.</para>
/// </summary>
int Length {get;set;} int Length {get;set;}
}; };
@ -21,27 +39,39 @@ public interface ISliceBase
[StructLayout(LayoutKind.Sequential)] [StructLayout(LayoutKind.Sequential)]
public struct Slice : ISliceBase public struct Slice : ISliceBase
{ {
/// <summary>
/// The length of this slice.
/// <para>Since EFL 1.23.</para>
/// </summary>
public UIntPtr Len {get;set;} public UIntPtr Len {get;set;}
/// <summary>
/// The contents of this slice.
/// <para>Since EFL 1.23.</para>
/// </summary>
public IntPtr Mem {get;set;} public IntPtr Mem {get;set;}
/// <summary>
/// The length as an integer.
/// <para>Since EFL 1.23.</para>
/// </summary>
public int Length public int Length
{ {
get { return (int)Len; } get { return (int)Len; }
set { Len = (UIntPtr)value; } set { Len = (UIntPtr)value; }
} }
/// <summary>
/// Creates a new slice from the given memory and length.
/// <para>Since EFL 1.23.</para>
/// </summary>
/// <param name="mem">The memory slice.</param>
/// <param name="len">The length.</param>
public Slice(IntPtr mem, UIntPtr len) public Slice(IntPtr mem, UIntPtr len)
{ {
Mem = mem; Mem = mem;
Len = len; Len = len;
} }
public Slice PinnedDataSet(IntPtr mem, UIntPtr len)
{
Mem = mem;
Len = len;
return this;
}
} }
/// <summary>Pointer to a slice of native memory. /// <summary>Pointer to a slice of native memory.
@ -51,28 +81,44 @@ public struct Slice : ISliceBase
[StructLayout(LayoutKind.Sequential)] [StructLayout(LayoutKind.Sequential)]
public struct RwSlice : ISliceBase public struct RwSlice : ISliceBase
{ {
/// <summary>
/// The length of this slice.
/// <para>Since EFL 1.23.</para>
/// </summary>
public UIntPtr Len {get;set;} public UIntPtr Len {get;set;}
/// <summary>
/// The contents of this slice.
/// <para>Since EFL 1.23.</para>
/// </summary>
public IntPtr Mem {get;set;} public IntPtr Mem {get;set;}
/// <summary>
/// The length as an integer.
/// <para>Since EFL 1.23.</para>
/// </summary>
public int Length public int Length
{ {
get { return (int)Len; } get { return (int)Len; }
set { Len = (UIntPtr)value; } set { Len = (UIntPtr)value; }
} }
/// <summary>
/// Creates a new slice from the given memory and length.
/// <para>Since EFL 1.23.</para>
/// </summary>
/// <param name="mem">The memory slice.</param>
/// <param name="len">The length.</param>
public RwSlice(IntPtr mem, UIntPtr len) public RwSlice(IntPtr mem, UIntPtr len)
{ {
Mem = mem; Mem = mem;
Len = len; Len = len;
} }
public RwSlice PinnedDataSet(IntPtr mem, UIntPtr len) /// <summary>
{ /// Returns a read-only slice from this writable memory.
Mem = mem; /// <para>Since EFL 1.23.</para>
Len = len; /// </summary>
return this;
}
Slice ToSlice() Slice ToSlice()
{ {
var r = new Slice(); var r = new Slice();

View File

@ -340,7 +340,7 @@ class TestEinaSlice
public static void pinned_data_set() public static void pinned_data_set()
{ {
var binbuf = new Eina.Binbuf(); var binbuf = new Eina.Binbuf();
binbuf.Append(new Eina.Slice().PinnedDataSet(pinnedPtr, (UIntPtr)3)); binbuf.Append(new Eina.Slice(pinnedPtr, (UIntPtr)3));
Test.Assert(binbuf.GetBytes().SequenceEqual(base_seq)); Test.Assert(binbuf.GetBytes().SequenceEqual(base_seq));
} }
#endif #endif