37189cb66668bbb80d5c921c7151f375284633a1
[mono.git] / mcs / class / Mono.Cecil / Mono.Cecil.PE / BinaryStreamWriter.cs
1 //
2 // BinaryStreamWriter.cs
3 //
4 // Author:
5 //   Jb Evain (jbevain@gmail.com)
6 //
7 // Copyright (c) 2008 - 2010 Jb Evain
8 //
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
16 //
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
19 //
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27 //
28
29 using System;
30 using System.IO;
31
32 #if !READ_ONLY
33
34 namespace Mono.Cecil.PE {
35
36         class BinaryStreamWriter : BinaryWriter {
37
38                 public BinaryStreamWriter (Stream stream)
39                         : base (stream)
40                 {
41                 }
42
43                 public void WriteByte (byte value)
44                 {
45                         Write (value);
46                 }
47
48                 public void WriteUInt16 (ushort value)
49                 {
50                         Write (value);
51                 }
52
53                 public void WriteInt16 (short value)
54                 {
55                         Write (value);
56                 }
57
58                 public void WriteUInt32 (uint value)
59                 {
60                         Write (value);
61                 }
62
63                 public void WriteInt32 (int value)
64                 {
65                         Write (value);
66                 }
67
68                 public void WriteUInt64 (ulong value)
69                 {
70                         Write (value);
71                 }
72
73                 public void WriteBytes (byte [] bytes)
74                 {
75                         Write (bytes);
76                 }
77
78                 public void WriteDataDirectory (DataDirectory directory)
79                 {
80                         Write (directory.VirtualAddress);
81                         Write (directory.Size);
82                 }
83
84                 public void WriteBuffer (ByteBuffer buffer)
85                 {
86                         Write (buffer.buffer, 0, buffer.length);
87                 }
88
89                 protected void Advance (int bytes)
90                 {
91                         BaseStream.Seek (bytes, SeekOrigin.Current);
92                 }
93         }
94 }
95
96 #endif