Example #1
0
 /// <summary>Converts a <see cref="FileOpConstant"/> value to <see cref="FileMode"/>.</summary>
 /// <param name="value">The value.</param>
 /// <returns>The result.</returns>
 public static FileMode ToFileMode(this FileOpConstant value)
 {
     // Note: This is not done in a switch because the order of tests matters.
     if ((FileOpConstant._O_CREAT | FileOpConstant._O_EXCL) == (value & (FileOpConstant._O_CREAT | FileOpConstant._O_EXCL)))
     {
         return(FileMode.CreateNew);
     }
     else if ((FileOpConstant._O_CREAT | FileOpConstant._O_TRUNC) == (value & (FileOpConstant._O_CREAT | FileOpConstant._O_TRUNC)))
     {
         return(FileMode.OpenOrCreate);
     }
     else if (0 != (value & FileOpConstant._O_APPEND))
     {
         return(FileMode.Append);
     }
     else if (0 != (value & FileOpConstant._O_CREAT))
     {
         return(FileMode.Create);
     }
     else if (0 != (value & FileOpConstant._O_RDWR))
     {
         return(FileMode.Open);
     }
     else if (0 != (value & FileOpConstant._O_TRUNC))
     {
         return(FileMode.Truncate);
     }
     else
     {
         return(FileMode.OpenOrCreate);                // This seemed the safest way to handled unrecognized types
     }
 }
Example #2
0
        /// <summary>Converts a <see cref="FileOpConstant"/> value to <see cref="FileOptions"/>.</summary>
        /// <param name="value">The value.</param>
        /// <returns>The result.</returns>
        public static FileOptions ToFileOptions(this FileOpConstant value)
        {
            FileOptions ret = 0;

            if ((value & FileOpConstant._O_RANDOM) != 0)
            {
                ret |= FileOptions.RandomAccess;
            }
            if ((value & FileOpConstant._O_TEMPORARY) != 0)
            {
                ret |= FileOptions.DeleteOnClose;
            }
            if ((value & FileOpConstant._O_SEQUENTIAL) != 0)
            {
                ret |= FileOptions.SequentialScan;
            }
            return(ret);
        }