| using System; | |
| using System.Collections.Generic; | |
| using System.IO; | |
| using System.Text; | |
| namespace Google.ProtocolBuffers.ProtoGen | |
| { | |
| internal class ProtoFile : TempFile | |
| { | |
| public ProtoFile(string filename, string contents) | |
| : base(filename, contents) | |
| { | |
| } | |
| } | |
| internal class TempFile : IDisposable | |
| { | |
| private string tempFile; | |
| public static TempFile Attach(string path) | |
| { | |
| return new TempFile(path, null); | |
| } | |
| protected TempFile(string filename, string contents) | |
| { | |
| tempFile = filename; | |
| if (contents != null) | |
| { | |
| File.WriteAllText(tempFile, contents, new UTF8Encoding(false)); | |
| } | |
| } | |
| public TempFile(string contents) | |
| : this(Path.GetTempFileName(), contents) | |
| { | |
| } | |
| public string TempPath | |
| { | |
| get { return tempFile; } | |
| } | |
| public void ChangeExtension(string ext) | |
| { | |
| string newFile = Path.ChangeExtension(tempFile, ext); | |
| File.Move(tempFile, newFile); | |
| tempFile = newFile; | |
| } | |
| public void Dispose() | |
| { | |
| if (File.Exists(tempFile)) | |
| { | |
| File.Delete(tempFile); | |
| } | |
| } | |
| } | |
| } |