예제 #1
0
 /// <summary>
 /// Sets the fields of the object from a native JET_ENUMCOLUMN struct.
 /// </summary>
 /// <param name="value">
 /// The native enumcolumn to set the values from.
 /// </param>
 internal void SetFromNativeEnumColumn(NATIVE_ENUMCOLUMN value)
 {
     this.columnid = new JET_COLUMNID {
         Value = value.columnid
     };
     this.err = (JET_wrn)value.err;
     if (JET_wrn.ColumnSingleValue == this.err)
     {
         this.cbData = checked ((int)value.cbData);
         this.pvData = value.pvData;
     }
     else
     {
         this.cEnumColumnValue  = checked ((int)value.cEnumColumnValue);
         this.rgEnumColumnValue = null;
     }
 }
예제 #2
0
        public void TestSingleValueConversion()
        {
            var native = new NATIVE_ENUMCOLUMN
            {
                columnid = 1,
                err = (int) JET_wrn.ColumnSingleValue,
                cbData = 3,
                pvData = new IntPtr(4),
            };

            var managed = new JET_ENUMCOLUMN();
            managed.SetFromNativeEnumColumn(native);

            Assert.AreEqual<uint>(1, managed.columnid.Value);
            Assert.AreEqual(JET_wrn.ColumnSingleValue, managed.err);
            Assert.AreEqual(3, managed.cbData);
            Assert.AreEqual(new IntPtr(4), managed.pvData);
        }
예제 #3
0
        public void TestMultiValueConversion()
        {
            var managed = new JET_ENUMCOLUMN();
            unsafe
            {
                var columnvalues = stackalloc NATIVE_ENUMCOLUMNVALUE[2];
                var native = new NATIVE_ENUMCOLUMN
                {
                    columnid = 1,
                    err = (int) JET_wrn.Success,
                    cEnumColumnValue = 3,
                    rgEnumColumnValue = columnvalues,
                };

                managed.SetFromNativeEnumColumn(native);                
            }

            Assert.AreEqual<uint>(1, managed.columnid.Value);
            Assert.AreEqual(JET_wrn.Success, managed.err);
            Assert.AreEqual(3, managed.cEnumColumnValue);
            Assert.AreEqual(null, managed.rgEnumColumnValue);
        }
예제 #4
0
 /// <summary>
 /// Sets the fields of the object from a native JET_ENUMCOLUMN struct.
 /// </summary>
 /// <param name="value">
 /// The native enumcolumn to set the values from.
 /// </param>
 internal void SetFromNativeEnumColumn(NATIVE_ENUMCOLUMN value)
 {
     this.columnid = new JET_COLUMNID { Value = value.columnid };
     this.err = (JET_wrn) value.err;
     if (JET_wrn.ColumnSingleValue == this.err)
     {
         this.cbData = checked((int) value.cbData);
         this.pvData = value.pvData;
     }
     else
     {
         this.cEnumColumnValue = checked((int) value.cEnumColumnValue);
         this.rgEnumColumnValue = null;
     }
 }
예제 #5
0
 public static unsafe extern int JetEnumerateColumns(
     IntPtr sesid,
     IntPtr tableid,
     uint cEnumColumnId,
     NATIVE_ENUMCOLUMNID* rgEnumColumnId,
     out uint pcEnumColumn,
     out NATIVE_ENUMCOLUMN* prgEnumColumn,
     JET_PFNREALLOC pfnRealloc,
     IntPtr pvReallocContext,
     uint cbDataMost,
     uint grbit);