コード例 #1
0
ファイル: FileSystem.cs プロジェクト: miaoxd/synthesis
 private Inner()
 {
     using var _ = ApiCallSource.ForceInternalCall();
     RootNode    = new Directory("", Permissions.PublicReadOnly); // root node name is "" so paths begin with "/" (since path strings are split at '/')
     RootNode.AddEntryInner(new Directory("environment", Permissions.PublicReadWrite));
     RootNode.AddEntryInner(new Directory("modules", Permissions.PublicReadWrite));
     RootNode.AddEntryInner(new Directory("runtime", Permissions.PublicReadWrite));
     RootNode.AddEntryInner(new Directory("temp", Permissions.PublicReadWrite));
 }
コード例 #2
0
ファイル: BinaryAsset.cs プロジェクト: swipswaps/synthesis
        private void SaveToFileInner()
        {
            ApiCallSource.AssertAccess(Permissions, Access.Write);

            long pos = SharedStream.Stream.Position;

            SharedStream.Seek(0);
            File.WriteAllBytes(SourcePath, SharedStream.ReadToEnd());
            SharedStream.Seek(pos);
        }
コード例 #3
0
ファイル: TextAsset.cs プロジェクト: swipswaps/synthesis
        internal void SaveToFileInner()
        {
            ApiCallSource.AssertAccess(Permissions, Access.Write);

            var pos = SharedStream.Stream.Position;

            SharedStream.Seek(0);
            File.WriteAllText(SourcePath, SharedStream.ReadToEnd());
            SharedStream.Seek(pos);
        }
コード例 #4
0
ファイル: JsonAsset.cs プロジェクト: swipswaps/synthesis
 internal void SerializeInner <TObject>(TObject obj, WriteMode writeMode = WriteMode.Overwrite)
 {
     ApiCallSource.AssertAccess(Permissions, Access.Write);
     if (writeMode == WriteMode.Overwrite)
     {
         SharedStream.Seek(0);
         SharedStream.SetLength(0);
     }
     else
     {
         SharedStream.Seek(0, SeekOrigin.End);
     }
     SharedStream.WriteLine(JsonConvert.SerializeObject(obj, Formatting.Indented));
 }
コード例 #5
0
ファイル: XmlAsset.cs プロジェクト: swipswaps/synthesis
        internal void SerializeInner <TObject>(TObject obj, WriteMode writeMode = WriteMode.Overwrite)
        {
            ApiCallSource.AssertAccess(Permissions, Access.Write);
            if (writeMode == WriteMode.Overwrite)
            {
                SharedStream.Seek(0);
                SharedStream.SetLength(0);
            }
            else
            {
                SharedStream.Seek(0, SeekOrigin.End);
            }

            using (var writer = new StringWriter())
            {
                new XmlSerializer(typeof(TObject)).Serialize(writer, obj);
                SharedStream.WriteLine(writer.ToString());
            }
        }
コード例 #6
0
ファイル: XmlAsset.cs プロジェクト: swipswaps/synthesis
        internal TObject DeserializeInner <TObject>(long offset = long.MaxValue, SeekOrigin loc = SeekOrigin.Begin, bool retainPosition = true)
        {
            ApiCallSource.AssertAccess(Permissions, Access.Read);
            long?returnPosition = null;

            if (offset != long.MaxValue)
            {
                if (retainPosition)
                {
                    returnPosition = SharedStream.Stream.Position;
                }
                SharedStream.Seek(offset, loc);
            }

            TObject obj = (TObject) new XmlSerializer(typeof(TObject)).Deserialize(new StreamReader(SharedStream.Stream));

            if (returnPosition != null)
            {
                SharedStream.Seek(returnPosition.Value);
            }
            return(obj);
        }
コード例 #7
0
ファイル: JsonAsset.cs プロジェクト: swipswaps/synthesis
        internal TObject DeserializeInner <TObject>(long offset         = long.MaxValue, SeekOrigin loc = SeekOrigin.Begin,
                                                    bool retainPosition = true)
        {
            ApiCallSource.AssertAccess(Permissions, Access.Read);
            long?returnPosition = null;

            if (offset != long.MaxValue)
            {
                if (retainPosition)
                {
                    returnPosition = SharedStream.Stream.Position;
                }
                SharedStream.Seek(offset, loc);
            }

            var obj = JsonConvert.DeserializeObject <TObject>(SharedStream.ReadToEnd());

            if (returnPosition != null)
            {
                SharedStream.Seek(returnPosition.Value);
            }
            return(obj);
        }
コード例 #8
0
 public static Asset?Import(string assetType, bool createOnFail, string targetPath, string name, Permissions perm, string sourcePath, params object[] args)
 {
     using var _ = ApiCallSource.StartExternalCall();
     return(ImportInner(assetType, createOnFail, targetPath, name, perm, sourcePath, args));
 }
コード例 #9
0
 public static TAsset?Import <TAsset>(string assetType, Stream stream, string targetPath, string name,
                                      Permissions perm, string sourcePath, params object[] args) where TAsset : Asset
 {
     using var _ = ApiCallSource.StartExternalCall();
     return(ImportInner <TAsset>(assetType, stream, targetPath, name, perm, sourcePath, args));
 }
コード例 #10
0
 public static Asset?Search(string name)
 {
     using var _ = ApiCallSource.StartExternalCall();
     return(SearchInner(name));
 }
コード例 #11
0
 public static Asset?Search(VirtualFileSystem.Directory parent, string name)
 {
     using var _ = ApiCallSource.StartExternalCall();
     return(SearchInner(parent, name));
 }
コード例 #12
0
ファイル: FileSystem.cs プロジェクト: miaoxd/synthesis
        public static TEntry?Search <TEntry>(string name) where TEntry : class, IEntry
        {
            using var _ = ApiCallSource.StartExternalCall();

            return(SearchInner <TEntry>(Instance.RootNode, name));
        }
コード例 #13
0
ファイル: FileSystem.cs プロジェクト: miaoxd/synthesis
 public static Directory?CreatePath(string path, Permissions perm)
 {
     using var _ = ApiCallSource.StartExternalCall();
     return(CreatePathInner(path, perm));
 }
コード例 #14
0
ファイル: FileSystem.cs プロジェクト: miaoxd/synthesis
        public static IEntry?AddEntry(string path, IEntry entry, Permissions perm = Permissions.PublicReadWrite)
        {
            using var _ = ApiCallSource.StartExternalCall();

            return(AddEntryInner(path, entry, perm));
        }
コード例 #15
0
 public static Asset?GetAsset(string targetPath)
 {
     using var _ = ApiCallSource.StartExternalCall();
     return(GetAssetInner(targetPath));
 }
コード例 #16
0
ファイル: FileSystem.cs プロジェクト: miaoxd/synthesis
 public static TEntry?AddEntry <TEntry>(string path, TEntry entry, Permissions perm = Permissions.PublicReadWrite) where TEntry : class, IEntry
 {
     using var _ = ApiCallSource.StartExternalCall();
     return(AddEntryInner(path, entry, perm));
 }
コード例 #17
0
ファイル: FileSystem.cs プロジェクト: miaoxd/synthesis
        public static bool EntryExists(string path, string name)
        {
            using var _ = ApiCallSource.StartExternalCall();

            return(EntryExistsInner(path, name));
        }
コード例 #18
0
ファイル: FileSystem.cs プロジェクト: miaoxd/synthesis
        public static IEntry?Search(Directory parent, string name)
        {
            using var _ = ApiCallSource.StartExternalCall();

            return(SearchInner(parent, name));
        }
コード例 #19
0
ファイル: FileSystem.cs プロジェクト: miaoxd/synthesis
        public static IEntry?Search(string name)
        {
            using var _ = ApiCallSource.StartExternalCall();

            return(SearchInner(Instance.RootNode, name));
        }
コード例 #20
0
ファイル: FileSystem.cs プロジェクト: miaoxd/synthesis
        public static TEntry?Search <TEntry>(Directory parent, string name) where TEntry : class, IEntry
        {
            using var _ = ApiCallSource.StartExternalCall();

            return(SearchInner <TEntry>(parent, name));
        }
コード例 #21
0
 public static LazyAsset?ImportLazy(string assetType, Stream stream, string targetPath, string name,
                                    Permissions perm, string sourcePath, params object[] args)
 {
     using var _ = ApiCallSource.StartExternalCall();
     return(ImportLazyInner(assetType, stream, targetPath, name, perm, sourcePath, args));
 }
コード例 #22
0
ファイル: XmlAsset.cs プロジェクト: swipswaps/synthesis
 public TObject Deserialize <TObject>(long offset = long.MaxValue, SeekOrigin loc = SeekOrigin.Begin, bool retainPosition = true)
 {
     using var _ = ApiCallSource.StartExternalCall();
     return(DeserializeInner <TObject>(offset, loc, retainPosition));
 }
コード例 #23
0
 public static void RegisterAssetType(string type, string subtype, string[] fileExtensions, HandlerFunc handler)
 {
     using var _ = ApiCallSource.StartExternalCall();
     RegisterAssetTypeInner(type, subtype, fileExtensions, handler);
 }
コード例 #24
0
ファイル: XmlAsset.cs プロジェクト: swipswaps/synthesis
 public void Serialize <TObject>(TObject obj, WriteMode writeMode = WriteMode.Overwrite)
 {
     using var _ = ApiCallSource.StartExternalCall();
     SerializeInner(obj, writeMode);
 }
コード例 #25
0
 public static TAsset?GetAsset <TAsset>(string targetPath) where TAsset : Asset
 {
     using var _ = ApiCallSource.StartExternalCall();
     return(GetAssetInner <TAsset>(targetPath));
 }
コード例 #26
0
ファイル: FileSystem.cs プロジェクト: miaoxd/synthesis
        public static IEntry?Traverse(string path)
        {
            using var _ = ApiCallSource.StartExternalCall();

            return(TraverseInner(path));
        }
コード例 #27
0
 public static TAsset?Search <TAsset>(string name) where TAsset : Asset
 {
     using var _ = ApiCallSource.StartExternalCall();
     return(SearchInner <TAsset>(name));
 }
コード例 #28
0
 public static TAsset?Search <TAsset>(VirtualFileSystem.Directory parent, string name) where TAsset : Asset
 {
     using var _ = ApiCallSource.StartExternalCall();
     return(SearchInner <TAsset>(parent, name));
 }
コード例 #29
0
ファイル: FileSystem.cs プロジェクト: miaoxd/synthesis
        public static void DeleteEntry(string path, string name)
        {
            using var _ = ApiCallSource.StartExternalCall();

            DeleteEntryInner(path, name);
        }
コード例 #30
0
ファイル: FileSystem.cs プロジェクト: miaoxd/synthesis
        public static TEntry?Traverse <TEntry>(string path) where TEntry : class, IEntry
        {
            using var _ = ApiCallSource.StartExternalCall();

            return(TraverseInner <TEntry>(path));
        }