//-----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation.
//
//-----------------------------------------------------------------------
namespace Microsoft.Isam.Esent.Interop
{
using System;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.Runtime.InteropServices;
///
/// The native version of the JET_OBJECTINFO structure.
///
[StructLayout(LayoutKind.Sequential)]
[SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules",
"SA1305:FieldNamesMustNotUseHungarianNotation",
Justification = "This should match the unmanaged API, which isn't capitalized.")]
[SuppressMessage(
"Microsoft.StyleCop.CSharp.NamingRules",
"SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter",
Justification = "This should match the unmanaged API, which isn't capitalized.")]
internal struct NATIVE_OBJECTINFO
{
///
/// Size of the structure.
///
public uint cbStruct;
///
/// Holds the JET_OBJTYP of the structure. Currently only tables will be
/// returned (that is, ).
///
public uint objtyp;
///
/// Obsolete. Do not use.
///
[Obsolete("Unused member")]
public double ignored1;
///
/// Obsolete. Do not use.
///
[Obsolete("Unused member")]
public double ignored2;
///
/// A group of bits that contain table options.
///
public uint grbit;
///
/// Table type flags.
///
public uint flags;
///
/// Number of records in the table.
///
public uint cRecord;
///
/// Number of pages used by the table.
///
public uint cPage;
}
///
/// The JET_OBJECTINFO structure holds information about an object.
/// Tables are the only object types that are currently supported.
///
[SuppressMessage(
"Microsoft.StyleCop.CSharp.NamingRules",
"SA1300:ElementMustBeginWithUpperCaseLetter",
Justification = "This should match the unmanaged API, which isn't capitalized.")]
public class JET_OBJECTINFO
{
///
/// Gets the JET_OBJTYP of the table. Currently only tables will be
/// returned (that is, ).
///
public JET_objtyp objtyp { get; private set; }
///
/// Gets the table options.
///
public ObjectInfoGrbit grbit { get; private set; }
///
/// Gets the table type flags.
///
public ObjectInfoFlags flags { get; private set; }
///
/// Gets the number of records in the table.
///
public int cRecord { get; private set; }
///
/// Gets the number of pages used by the table.
///
public int cPage { get; private set; }
///
/// Returns a that represents the current .
///
///
/// A that represents the current .
///
public override string ToString()
{
return string.Format(CultureInfo.InvariantCulture, "JET_OBJECTINFO({0})", this.flags);
}
///
/// Sets the fields of the object from a native JET_OBJECTINFO struct.
///
///
/// The native objectlist to set the values from.
///
internal void SetFromNativeObjectinfo(ref NATIVE_OBJECTINFO value)
{
unchecked
{
this.objtyp = (JET_objtyp)value.objtyp;
this.grbit = (ObjectInfoGrbit)value.grbit;
this.flags = (ObjectInfoFlags)value.flags;
this.cRecord = (int)value.cRecord;
this.cPage = (int)value.cPage;
}
}
}
}