Esempio n. 1
0
        AllocPyString(int length)
        {
            uint   size = (uint)(Marshal.SizeOf(typeof(PyStringObject)) + length);
            IntPtr data = this.allocator.Alloc(size);

            PyStringObject s = new PyStringObject();

            s.ob_refcnt = 1;
            s.ob_type   = this.PyString_Type;
            s.ob_size   = length;
            s.ob_shash  = -1;
            s.ob_sstate = 0;
            Marshal.StructureToPtr(s, data, false);

            IntPtr terminator = CPyMarshal.Offset(data, size - 1);

            CPyMarshal.WriteByte(terminator, 0);

            return(data);
        }
Esempio n. 2
0
        private IntPtr AllocPyString(int length)
        {
            uint size = (uint)(Marshal.SizeOf(typeof(PyStringObject)) + length);
            IntPtr data = this.allocator.Alloc(size);

            PyStringObject s = new PyStringObject();
            s.ob_refcnt = 1;
            s.ob_type = this.PyString_Type;
            s.ob_size = length;
            s.ob_shash = -1;
            s.ob_sstate = 0;
            Marshal.StructureToPtr(s, data, false);

            IntPtr terminator = CPyMarshal.Offset(data, size - 1);
            CPyMarshal.WriteByte(terminator, 0);

            return data;
        }