Skip to content

Commit

Permalink
Script no longer IBitcoinSerializable
Browse files Browse the repository at this point in the history
  • Loading branch information
NicolasDorier committed Nov 4, 2014
1 parent 007cf53 commit 280c18b
Show file tree
Hide file tree
Showing 5 changed files with 92 additions and 58 deletions.
90 changes: 47 additions & 43 deletions NBitcoin/BitcoinStream.Partial.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ namespace NBitcoin
{
public partial class BitcoinStream
{

private void ReadWriteArray<T>(ref T[] data) where T : IBitcoinSerializable, new()
private void ReadWriteArray<T>(ref T[] data) where T : IBitcoinSerializable
{
if(data == null && Serializing)
throw new ArgumentNullException("Impossible to serialize a null array");
Expand All @@ -28,14 +28,12 @@ private void ReadWriteArray<T>(ref T[] data) where T : IBitcoinSerializable, new
for(int i = 0 ; i < data.Length ; i++)
{
T obj = data[i];
if(!Serializing)
obj = new T();
ReadWrite(ref obj);
data[i] = obj;
}
}


private void ReadWriteArray(ref ulong[] data)
{
if(data == null && Serializing)
Expand All @@ -55,7 +53,7 @@ private void ReadWriteArray(ref ulong[] data)
}
}


private void ReadWriteArray(ref ushort[] data)
{
if(data == null && Serializing)
Expand All @@ -75,7 +73,7 @@ private void ReadWriteArray(ref ushort[] data)
}
}


private void ReadWriteArray(ref uint[] data)
{
if(data == null && Serializing)
Expand All @@ -95,7 +93,7 @@ private void ReadWriteArray(ref uint[] data)
}
}


private void ReadWriteArray(ref byte[] data)
{
if(data == null && Serializing)
Expand All @@ -115,7 +113,7 @@ private void ReadWriteArray(ref byte[] data)
}
}


private void ReadWriteArray(ref long[] data)
{
if(data == null && Serializing)
Expand All @@ -135,7 +133,7 @@ private void ReadWriteArray(ref long[] data)
}
}


private void ReadWriteArray(ref short[] data)
{
if(data == null && Serializing)
Expand All @@ -155,7 +153,7 @@ private void ReadWriteArray(ref short[] data)
}
}


private void ReadWriteArray(ref int[] data)
{
if(data == null && Serializing)
Expand All @@ -175,18 +173,18 @@ private void ReadWriteArray(ref int[] data)
}
}





private void ReadWriteList<T>(ref List<T> data) where T : IBitcoinSerializable, new()

private void ReadWriteList<T>(ref List<T> data) where T : IBitcoinSerializable
{
var dataArray = data.ToArray();
ReadWriteArray(ref dataArray);
if(!Serializing)
data = dataArray.ToList();
}


private void ReadWriteList(ref List<ulong> data)
{
var dataArray = data.ToArray();
Expand All @@ -195,7 +193,7 @@ private void ReadWriteList(ref List<ulong> data)
data = dataArray.ToList();
}


private void ReadWriteList(ref List<ushort> data)
{
var dataArray = data.ToArray();
Expand All @@ -204,7 +202,7 @@ private void ReadWriteList(ref List<ushort> data)
data = dataArray.ToList();
}


private void ReadWriteList(ref List<uint> data)
{
var dataArray = data.ToArray();
Expand All @@ -213,7 +211,7 @@ private void ReadWriteList(ref List<uint> data)
data = dataArray.ToList();
}


private void ReadWriteList(ref List<byte> data)
{
var dataArray = data.ToArray();
Expand All @@ -222,7 +220,7 @@ private void ReadWriteList(ref List<byte> data)
data = dataArray.ToList();
}


private void ReadWriteList(ref List<long> data)
{
var dataArray = data.ToArray();
Expand All @@ -231,7 +229,7 @@ private void ReadWriteList(ref List<long> data)
data = dataArray.ToList();
}


private void ReadWriteList(ref List<short> data)
{
var dataArray = data.ToArray();
Expand All @@ -240,7 +238,7 @@ private void ReadWriteList(ref List<short> data)
data = dataArray.ToList();
}


private void ReadWriteList(ref List<int> data)
{
var dataArray = data.ToArray();
Expand All @@ -249,51 +247,52 @@ private void ReadWriteList(ref List<int> data)
data = dataArray.ToList();
}



public void ReadWrite(ref ulong[] data)
{
ReadWriteArray(ref data);
}


public void ReadWrite(ref ushort[] data)
{
ReadWriteArray(ref data);
}


public void ReadWrite(ref uint[] data)
{
ReadWriteArray(ref data);
}


public void ReadWrite(ref long[] data)
{
ReadWriteArray(ref data);
}


public void ReadWrite(ref short[] data)
{
ReadWriteArray(ref data);
}


public void ReadWrite(ref int[] data)
{
ReadWriteArray(ref data);
}






public void ReadWrite(ref ulong data)
{
ulong l = (ulong)data;
ReadWriteNumber(ref l, sizeof(ulong));
data = (ulong)l;
if(!Serializing)
data = (ulong)l;
}

public ulong ReadWrite(ulong data)
Expand All @@ -302,12 +301,13 @@ public ulong ReadWrite(ulong data)
return data;
}


public void ReadWrite(ref ushort data)
{
ulong l = (ulong)data;
ReadWriteNumber(ref l, sizeof(ushort));
data = (ushort)l;
if(!Serializing)
data = (ushort)l;
}

public ushort ReadWrite(ushort data)
Expand All @@ -316,12 +316,13 @@ public ushort ReadWrite(ushort data)
return data;
}


public void ReadWrite(ref uint data)
{
ulong l = (ulong)data;
ReadWriteNumber(ref l, sizeof(uint));
data = (uint)l;
if(!Serializing)
data = (uint)l;
}

public uint ReadWrite(uint data)
Expand All @@ -330,14 +331,15 @@ public uint ReadWrite(uint data)
return data;
}






public void ReadWrite(ref long data)
{
long l = (long)data;
ReadWriteNumber(ref l, sizeof(long));
data = (long)l;
if(!Serializing)
data = (long)l;
}

public long ReadWrite(long data)
Expand All @@ -346,12 +348,13 @@ public long ReadWrite(long data)
return data;
}


public void ReadWrite(ref short data)
{
long l = (long)data;
ReadWriteNumber(ref l, sizeof(short));
data = (short)l;
if(!Serializing)
data = (short)l;
}

public short ReadWrite(short data)
Expand All @@ -360,12 +363,13 @@ public short ReadWrite(short data)
return data;
}


public void ReadWrite(ref int data)
{
long l = (long)data;
ReadWriteNumber(ref l, sizeof(int));
data = (int)l;
if(!Serializing)
data = (int)l;
}

public int ReadWrite(int data)
Expand All @@ -374,5 +378,5 @@ public int ReadWrite(int data)
return data;
}

}
}
}
8 changes: 5 additions & 3 deletions NBitcoin/BitcoinStream.Partial.tt
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ namespace NBitcoin
var dataArray = data.ToArray();
ReadWriteArray(ref dataArray);
if(!Serializing)
data = dataArray.ToList();
data = dataArray.ToList();
}

<# } #>
Expand Down Expand Up @@ -104,7 +104,8 @@ namespace NBitcoin
{
ulong l = (ulong)data;
ReadWriteNumber(ref l, sizeof(<#= type #>));
data = (<#= type #>)l;
if(!Serializing)
data = (<#= type #>)l;
}

public <#= type #> ReadWrite(<#= type #> data)
Expand All @@ -127,7 +128,8 @@ namespace NBitcoin
{
long l = (long)data;
ReadWriteNumber(ref l, sizeof(<#= type #>));
data = (<#= type #>)l;
if(!Serializing)
data = (<#= type #>)l;
}

public <#= type #> ReadWrite(<#= type #> data)
Expand Down
24 changes: 24 additions & 0 deletions NBitcoin/BitcoinStream.cs
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,30 @@ public BitcoinStream(byte[] bytes)
{
}

public Script ReadWrite(Script data)
{
if(Serializing)
{
var bytes = data == null ? Script.Empty.ToRawScript(true) : data.ToRawScript(true);
ReadWriteAsVarString(ref bytes);
return data;
}
else
{
var varString = new VarString();
varString.ReadWrite(this);
return new Script(varString.GetString());
}
}

public void ReadWrite(ref Script script)
{
if(Serializing)
ReadWrite(script);
else
script = ReadWrite(script);
}

public T ReadWrite<T>(T data) where T : IBitcoinSerializable
{
ReadWrite<T>(ref data);
Expand Down

0 comments on commit 280c18b

Please sign in to comment.