Exemple #1
0
        protected override Stream OpenStream(AccessMode accessMode)
        {
            var memoryStream = new ExtendingMemoryStream();

            if (accessMode.HasFlag(AccessMode.Read))
            {
                memoryStream.Write(mBuffer, 0, mBuffer.Length);
            }

            if (accessMode.HasFlag(AccessMode.Append))
            {
                memoryStream.OnClose += (o, e) =>
                {
                    var l = mBuffer.Length;
                    mBuffer = new byte[l + memoryStream.Length];
                    memoryStream.Write(mBuffer, l, (int)memoryStream.Length);
                };
            }
            else if (accessMode.HasFlag(AccessMode.Write))
            {
                memoryStream.Seek(0, SeekOrigin.Begin);
                memoryStream.OnClose += (o, e) =>
                {
                    mBuffer = memoryStream.ToArray();
                };
            }

            return(memoryStream);
        }
        public static void MakeAccessible(this ParamDef parameter, AccessMode mode)
        {
            if (parameter.IsAccessible(mode))
            {
                return;
            }
            ParamAttributes attributes = parameter.Attributes;

            if (mode.HasFlag(AccessMode.Read))
            {
                attributes &= ~ParamAttributes.Out;
            }
            if (mode.HasFlag(AccessMode.Write))
            {
                attributes &= ~ParamAttributes.In;
            }
            parameter.Attributes = attributes;
        }
Exemple #3
0
        protected override Stream OpenStream(StringKey key, AccessMode accessMode)
        {
            if (accessMode.HasFlag(AccessMode.Write) || accessMode.HasFlag(AccessMode.Append))
            {
                throw new NotSupportedException("Writing objects to embedded BLOB stores is not supported.");
            }

            var completeName = mName.Concat(key).ToString(".");

            var stream = mAssembly.GetManifestResourceStream(completeName);

            if (stream == null)
            {
                return(new MemoryStream());
            }

            return(stream);
        }
        protected override Stream OpenStream(StringKey key, AccessMode accessMode)
        {
            if (accessMode.HasFlag(AccessMode.Append))
            {
                throw new NotSupportedException("Appending is not supported for compressed BLOB stores.");
            }

            var completeName = mThisFolderName.Concat(key).ToString("\\");

            if (!Exists(key))
            {
                if (accessMode == AccessMode.Read)
                {
                    return(new MemoryStream());
                }

                AddElement(key);

                return(mArchive.CreateEntry(completeName).Open());
            }

            return(mArchive.GetEntry(completeName).Open());
        }
 public static bool IsAccessible(this ParamDef parameter, AccessMode mode) => !(mode.HasFlag(AccessMode.Read) && parameter.IsOut || mode.HasFlag(AccessMode.Write) && parameter.IsIn);