Esempio n. 1
0
        public static void InitDynamic(UnsafeBuffer *buffer, int length, int stride)
        {
            Assert.Check(buffer != null);
            Assert.Check(length > 0);
            Assert.Check(stride > 0);

            buffer->Ptr     = AllocHelper.MallocAndClear(length * stride, AllocHelper.GetAlignmentForArrayElement(stride));
            buffer->Length  = length;
            buffer->Stride  = stride;
            buffer->Dynamic = true;
        }
Esempio n. 2
0
        public static void InitDynamic(UnsafeBuffer *buffer, int length, int stride)
        {
            Assert.Check(buffer != null);
            Assert.Check(length > 0);
            Assert.Check(stride > 0);

            buffer->Ptr     = Native.MallocAndClear(length * stride, Native.GetAlignment(stride));
            buffer->Length  = length;
            buffer->Stride  = stride;
            buffer->Dynamic = 1;
        }
Esempio n. 3
0
 public static void FillFromString(UnsafeBuffer *buffer, string value)
 {
     using (var stream = new UnsafeStream((byte *)buffer))
         using (var writer = new StreamWriter(stream, BsonConstants.Encoding))
         {
             foreach (var symbol in value)
             {
                 writer.Write(symbol);
             }
         }
 }
Esempio n. 4
0
        public static void InitFixed(UnsafeBuffer *buffer, void *ptr, int length, int stride)
        {
            Assert.Check(buffer != null);
            Assert.Check(ptr != null);

            Assert.Check(length > 0);
            Assert.Check(stride > 0);

            // ensure alignment of fixed buffer
            Assert.Check((((IntPtr)ptr).ToInt64() % AllocHelper.GetAlignmentForArrayElement(stride)) == 0);

            buffer->Ptr     = ptr;
            buffer->Length  = length;
            buffer->Stride  = stride;
            buffer->Dynamic = false;
        }
Esempio n. 5
0
        public static void Free(UnsafeBuffer *buffer)
        {
            Assert.Check(buffer != null);

            if (buffer->Dynamic == false)
            {
                throw new InvalidOperationException("Can't free a fixed buffer");
            }

            // buffer ptr can't be null
            Assert.Check(buffer->Ptr != null);

            // free memory of ptr
            AllocHelper.Free(buffer->Ptr);

            // clear buffer itself
            *buffer = default;
        }
Esempio n. 6
0
 public static void InitDynamic <T>(UnsafeBuffer *buffer, int length) where T : unmanaged
 {
     InitDynamic(buffer, length, sizeof(T));
 }
Esempio n. 7
0
 public static void Clear(UnsafeBuffer *buffer)
 {
     AllocHelper.MemClear(buffer->Ptr, buffer->Length * buffer->Stride);
 }
Esempio n. 8
0
 public static void Clear(UnsafeBuffer *buffer)
 {
     Native.MemClear(buffer->Ptr, buffer->Length * buffer->Stride);
 }