Skip to content

Commit

Permalink
+ back step on collection size write
Browse files Browse the repository at this point in the history
  • Loading branch information
AndreevNikita committed Jul 23, 2021
1 parent 1c4bc61 commit 7c6ece0
Show file tree
Hide file tree
Showing 17 changed files with 82 additions and 13 deletions.
4 changes: 3 additions & 1 deletion NetBinSerializer/NetBinSerializer/NetBinSerializer.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@
<PackageProjectUrl>https://github.com/AndreevNikita/NetBinSerializer</PackageProjectUrl>
<RepositoryUrl>https://github.com/AndreevNikita/NetBinSerializer</RepositoryUrl>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
<Version>1.0.1</Version>
<Version>1.0.2</Version>
<Description>C# types serialization library</Description>
<AssemblyVersion>1.0.2.0</AssemblyVersion>
<FileVersion>1.0.2.0</FileVersion>
</PropertyGroup>

<ItemGroup>
Expand Down
17 changes: 15 additions & 2 deletions NetBinSerializer/NetBinSerializer/SerializeStream.cs
Original file line number Diff line number Diff line change
Expand Up @@ -331,18 +331,31 @@ public void WriteSerializable(ISerializable serializable) {


public void WriteKeyValuePairsCollection<KEY_TYPE, VALUE_TYPE>(ICollection<KeyValuePair<KEY_TYPE, VALUE_TYPE>> collection) {
Write(collection.Count());
long countPosition = RememberAndSeek(sizeof(Int32));
Int32 elementsCounter = 0;
foreach(KeyValuePair<KEY_TYPE, VALUE_TYPE> pair in collection) {
Write(pair.Key, typeof(KEY_TYPE));
Write(pair.Value, typeof(VALUE_TYPE));
elementsCounter++;
}

long posBuffer = Position;
Position = countPosition;
WriteInt32(elementsCounter);
Position = posBuffer;
}

public void WriteCollection<ELEMENT_TYPE>(ICollection<ELEMENT_TYPE> collection) {
Write(collection.Count());
long countPosition = RememberAndSeek(sizeof(Int32));
Int32 elementsCounter = 0;
foreach(ELEMENT_TYPE element in collection) {
Write(element, typeof(ELEMENT_TYPE));
elementsCounter++;
}
long posBuffer = Position;
Position = countPosition;
WriteInt32(elementsCounter);
Position = posBuffer;
}

public void WriteCollectionObject(object collection) {
Expand Down
12 changes: 10 additions & 2 deletions NetBinSerializer/NetBinSerializer/Serializer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -334,9 +334,17 @@ public override void Serialize(SerializeStream stream, object obj, Serialization
if(context.Optimize(stream, obj))
return;
COLLECTION_TYPE collectionObj = (COLLECTION_TYPE)obj;
stream.Write(collectionObj.Count);
foreach(ELEMENT_TYPE element in collectionObj)

long countPosition = stream.RememberAndSeek(sizeof(Int32));
Int32 elementsCounter = 0;
foreach(ELEMENT_TYPE element in collectionObj) {
ContainTypeSerializationMethods.Serialize(stream, element, context);
elementsCounter++;
}
long posBuffer = stream.Position;
stream.Position = countPosition;
stream.WriteInt32(elementsCounter);
stream.Position = posBuffer;
}

public override object Deserialize(SerializeStream stream, DeserializationContext context) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"targets": {
".NETStandard,Version=v2.0": {},
".NETStandard,Version=v2.0/": {
"NetBinSerializer/1.0.1": {
"NetBinSerializer/1.0.2": {
"dependencies": {
"NETStandard.Library": "2.0.3"
},
Expand All @@ -24,7 +24,7 @@
}
},
"libraries": {
"NetBinSerializer/1.0.1": {
"NetBinSerializer/1.0.2": {
"type": "project",
"serviceable": false,
"sha512": ""
Expand Down
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
},
"projects": {
"C:\\Users\\Nick\\Documents\\repos\\NetBinSerializer\\NetBinSerializer\\NetBinSerializer\\NetBinSerializer.csproj": {
"version": "1.0.1",
"version": "1.0.2",
"restore": {
"projectUniqueName": "C:\\Users\\Nick\\Documents\\repos\\NetBinSerializer\\NetBinSerializer\\NetBinSerializer\\NetBinSerializer.csproj",
"projectName": "NetBinSerializer",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
<metadata>
<id>NetBinSerializer</id>
<version>1.0.2</version>
<authors>Nikita Andreev</authors>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<license type="file">LICENSE</license>
<licenseUrl>https://aka.ms/deprecateLicenseUrl</licenseUrl>
<projectUrl>https://github.com/AndreevNikita/NetBinSerializer</projectUrl>
<description>C# types serialization library</description>
<copyright>Nikita Andreev</copyright>
<repository url="https://github.com/AndreevNikita/NetBinSerializer" />
<dependencies>
<group targetFramework=".NETStandard2.0" />
</dependencies>
</metadata>
<files>
<file src="C:\Users\Nick\Documents\repos\NetBinSerializer\NetBinSerializer\NetBinSerializer\bin\Release\netstandard2.0\NetBinSerializer.dll" target="lib\netstandard2.0\NetBinSerializer.dll" />
<file src="C:\Users\Nick\Documents\repos\InSharp\LICENSE" target="LICENSE" />
</files>
</package>
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
[assembly: System.Reflection.AssemblyCopyrightAttribute("Nikita Andreev")]
[assembly: System.Reflection.AssemblyDescriptionAttribute("C# types serialization library")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.1.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.1")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.2.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.2")]
[assembly: System.Reflection.AssemblyProductAttribute("NetBinSerializer")]
[assembly: System.Reflection.AssemblyTitleAttribute("NetBinSerializer")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.1.0")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.2.0")]
[assembly: System.Reflection.AssemblyMetadataAttribute("RepositoryUrl", "https://github.com/AndreevNikita/NetBinSerializer")]

// Создано классом WriteCodeFragment MSBuild.
Expand Down
Binary file not shown.
2 changes: 1 addition & 1 deletion NetBinSerializer/NetBinSerializer/obj/project.assets.json
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@
"C:\\Users\\Nick\\.nuget\\packages\\": {}
},
"project": {
"version": "1.0.1",
"version": "1.0.2",
"restore": {
"projectUniqueName": "C:\\Users\\Nick\\Documents\\repos\\NetBinSerializer\\NetBinSerializer\\NetBinSerializer\\NetBinSerializer.csproj",
"projectName": "NetBinSerializer",
Expand Down
10 changes: 9 additions & 1 deletion NetBinSerializer/Test/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,8 @@ static void TestLowLevelSerialization() {
};
sstream.WriteCollectionObject(writeDict);

sstream.WriteUInt32(0xA116000D);

//--------------------------------Deserialize--------------------------------

SerializeStream dstream = new SerializeStream(sstream.GetBytes());
Expand Down Expand Up @@ -160,7 +162,9 @@ static void TestLowLevelSerialization() {
foreach(var element in (Dictionary<string, int>)dstream.ReadCollectionObject(typeof(Dictionary<string, int>)))
Console.WriteLine($"{element.Key}: {element.Value} ");
Console.WriteLine();


Console.WriteLine($"Control code: {dstream.ReadUInt32():X}");
Console.WriteLine();

}

Expand Down Expand Up @@ -214,6 +218,8 @@ static void TestHighLevelSerialization() {
sstream.Serialize<int[]>(null, null, scontext);
sstream.Serialize<int[]>(arr, null, scontext);

sstream.WriteUInt32(0xA116000D);

//--------------------------------Deserialize--------------------------------

SerializeStream dstream = new SerializeStream(sstream.GetBytes());
Expand Down Expand Up @@ -298,6 +304,8 @@ static void TestHighLevelSerialization() {
Console.WriteLine($"arr1 == arr2: {arr1 == arr2}");
Console.WriteLine($"arr2 == arr4: {arr2 == arr4}");
Console.WriteLine();

Console.WriteLine($"Control code: {dstream.Deserialize<UInt32>():X}");
}
}
}
Binary file not shown.
Binary file added NetBinSerializer/Test/bin/Release/Test.exe
Binary file not shown.
6 changes: 6 additions & 0 deletions NetBinSerializer/Test/bin/Release/Test.exe.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>
10 changes: 10 additions & 0 deletions NetBinSerializer/Test/obj/Release/Test.csproj.FileListAbsolute.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
C:\Users\Nick\Documents\repos\NetBinSerializer\NetBinSerializer\Test\bin\Release\Test.exe.config
C:\Users\Nick\Documents\repos\NetBinSerializer\NetBinSerializer\Test\bin\Release\Test.exe
C:\Users\Nick\Documents\repos\NetBinSerializer\NetBinSerializer\Test\bin\Release\Test.pdb
C:\Users\Nick\Documents\repos\NetBinSerializer\NetBinSerializer\Test\bin\Release\NetBinSerializer.dll
C:\Users\Nick\Documents\repos\NetBinSerializer\NetBinSerializer\Test\bin\Release\NetBinSerializer.pdb
C:\Users\Nick\Documents\repos\NetBinSerializer\NetBinSerializer\Test\obj\Release\Test.csprojAssemblyReference.cache
C:\Users\Nick\Documents\repos\NetBinSerializer\NetBinSerializer\Test\obj\Release\Test.csproj.CoreCompileInputs.cache
C:\Users\Nick\Documents\repos\NetBinSerializer\NetBinSerializer\Test\obj\Release\Test.csproj.CopyComplete
C:\Users\Nick\Documents\repos\NetBinSerializer\NetBinSerializer\Test\obj\Release\Test.exe
C:\Users\Nick\Documents\repos\NetBinSerializer\NetBinSerializer\Test\obj\Release\Test.pdb
Binary file added NetBinSerializer/Test/obj/Release/Test.exe
Binary file not shown.

0 comments on commit 7c6ece0

Please sign in to comment.