//-----------------------------------------------------------------------
// 
//     Copyright (c) Microsoft Corporation.
// 
//-----------------------------------------------------------------------
namespace Microsoft.Isam.Esent.Interop.Windows7
{
    using System;
#if !MANAGEDESENT_ON_WSA // Not exposed in MSDK
    /// 
    /// Options for .
    /// 
    [Flags]
    public enum CrashDumpGrbit
    {
        /// 
        /// Default options.
        /// 
        None = 0,
        /// 
        /// Dump minimum includes .
        /// 
        Minimum = 0x1,
        /// 
        /// Dump maximum includes .
        /// 
        Maximum = 0x2,
        /// 
        /// CacheMinimum includes pages that are latched.
        /// CacheMinimum includes pages that are used for memory.
        /// CacheMinimum includes pages that are flagged with errors.
        /// 
        CacheMinimum = 0x4,
        /// 
        /// Cache maximum includes cache minimum.
        /// Cache maximum includes the entire cache image.
        /// 
        CacheMaximum = 0x8,
        /// 
        /// Dump includes pages that are modified.
        /// 
        CacheIncludeDirtyPages = 0x10,
        /// 
        /// Dump includes pages that contain valid data.
        /// 
        CacheIncludeCachedPages = 0x20,
        /// 
        /// Dump includes pages that are corrupted (expensive to compute).
        /// 
        CacheIncludeCorruptedPages = 0x40,
    }
#endif // !MANAGEDESENT_ON_WSA
    /// 
    /// Options for .
    /// 
    [Flags]
    public enum PrereadKeysGrbit
    {
        /// 
        /// Preread forward.
        /// 
        Forward = 0x1,
        /// 
        /// Preread backwards.
        /// 
        Backwards = 0x2,
    }
    /// 
    /// Grbits that have been added to the Windows 7 version of ESENT.
    /// 
    public static class Windows7Grbits
    {
        /// 
        /// Compress data in the column, if possible.
        /// 
        public const ColumndefGrbit ColumnCompressed = (ColumndefGrbit)0x80000;
        /// 
        /// Try to compress the data when storing it.
        /// 
        public const SetColumnGrbit Compressed = (SetColumnGrbit)0x20000;
        /// 
        /// Don't compress the data when storing it.
        /// 
        public const SetColumnGrbit Uncompressed = (SetColumnGrbit)0x10000;
        /// 
        /// Recover without error even if uncommitted logs have been lost. Set 
        /// the recovery waypoint with Windows7Param.WaypointLatency to enable
        /// this type of recovery.
        /// 
        public const InitGrbit ReplayIgnoreLostLogs = (InitGrbit)0x80;
        /// 
        /// Terminate without flushing the database cache.
        /// 
        public const TermGrbit Dirty = (TermGrbit)0x8;
        /// 
        /// Permit only intrinsic LV's (so materialisation is not required simply
        /// because a TT has an LV column).
        /// 
        public const TempTableGrbit IntrinsicLVsOnly = (TempTableGrbit)0x80;
        /// 
        /// When enumerating column values only retrieve data that is present in
        /// the record. This means that BLOB columns will not always be retrieved.
        /// 
        public const EnumerateColumnsGrbit EnumerateInRecordOnly = (EnumerateColumnsGrbit)0x00200000;
        /// 
        /// Force a new logfile to be created. This option may be used even if
        /// the session is not currently in a transaction. This option cannot
        /// be used in combination with any other option.
        /// 
        public const CommitTransactionGrbit ForceNewLog = (CommitTransactionGrbit)0x10;
#if !MANAGEDESENT_ON_WSA
        /// 
        /// No instances will be prepared by default. Instances must be added explicitly.
        /// 
        public const SnapshotPrepareGrbit ExplicitPrepare = (SnapshotPrepareGrbit)0x8;
#endif // !MANAGEDESENT_ON_WSA
        /// 
        /// Hint that the sequential traversal will be in the forward direction.
        /// 
        public const SetTableSequentialGrbit Forward = (SetTableSequentialGrbit)0x1;
        /// 
        /// While running Online Defragmentation, do not perform partial merges of pages.
        /// 
        public const DefragGrbit NoPartialMerges = (DefragGrbit)0x80;
        /// 
        /// Defragment a single BTree.
        /// 
        public const DefragGrbit DefragmentBTree = (DefragGrbit)0x100;
        /// 
        /// Hint that the sequential traversal will be in the backward direction.
        /// 
        public const SetTableSequentialGrbit Backward = (SetTableSequentialGrbit)0x2;
        /// 
        /// The database engine will initiate automatic background database maintenance upon database attachment.
        /// 
        public const AttachDatabaseGrbit EnableAttachDbBackgroundMaintenance = (AttachDatabaseGrbit)0x800;
        /// 
        /// The database engine will initiate automatic background database maintenance upon database creation.
        /// 
        public const CreateDatabaseGrbit EnableCreateDbBackgroundMaintenance = (CreateDatabaseGrbit)0x800;
    }
}