0.0.3 release: docs, foxed dump formatting
This commit is contained in:
		
							parent
							
								
									ee20bfdee7
								
							
						
					
					
						commit
						b7784fec18
					
				
							
								
								
									
										27
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								README.md
									
									
									
									
									
								
							@ -1,9 +1,6 @@
 | 
				
			|||||||
# Binary tools and BiPack serializer
 | 
					# Binary tools and BiPack serializer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
> beta version
 | 
					Multiplatform binary tools collection, including portable serialization of the compact and fast [Bipack] format, and many useful tools to work with binary data, like CRC family checksums, dumps, etc. It works well also in the browser and in native targets.
 | 
				
			||||||
 | 
					 | 
				
			||||||
Multiplatform binary tools collection, including portable serialization of the compact and fast [Bipack] format, that
 | 
					 | 
				
			||||||
works well also in the browser and in native targets.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Usage
 | 
					# Usage
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -18,14 +15,12 @@ repositories {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
And add dependecy to the proper place in yuor project like this:
 | 
					And add dependecy to the proper place in yuor project like this:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```
 | 
					```kotlin
 | 
				
			||||||
dependencies {
 | 
					dependencies {
 | 
				
			||||||
    // ...
 | 
					    // ...
 | 
				
			||||||
    implementation("net.sergeych:mp_bintools:0.0.2-SNAPSHOT")
 | 
					    implementation("net.sergeych:mp_bintools:0.0.3")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
Use your desired version.
 | 
					 | 
				
			||||||
TODO: specify maven: how?
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Bipack
 | 
					# Bipack
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -35,9 +30,9 @@ Bipack is a compact and efficient binary serialization library (and format) was
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
### Allow easy unpacking existing binary structures 
 | 
					### Allow easy unpacking existing binary structures 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Yuo describe your structure as `@Serializable` classes, and - voila, bipack decodes and encodes it for you!
 | 
					Yuo describe your structure as `@Serializable` classes, and - voila, bipack decodes and encodes it for you! We aim to make it really easy to convert data from other binary formats by adding more format annotations
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### - be as compact as possible
 | 
					### Be as compact as possible
 | 
				
			||||||
 | 
					
 | 
				
			||||||
For this reason it is a binary notation, it uses binary form for decimal numbers and can use variery of encoding for
 | 
					For this reason it is a binary notation, it uses binary form for decimal numbers and can use variery of encoding for
 | 
				
			||||||
integers:
 | 
					integers:
 | 
				
			||||||
@ -52,7 +47,7 @@ See `object Varint`.
 | 
				
			|||||||
Variable-length compact encoding for signed and unsigned integers use as few bytes as possible to encode integers. It is
 | 
					Variable-length compact encoding for signed and unsigned integers use as few bytes as possible to encode integers. It is
 | 
				
			||||||
used automatically when serializing integers. It is slightly more sophisticated than straight `Varint`.
 | 
					used automatically when serializing integers. It is slightly more sophisticated than straight `Varint`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### - do not reveal information about stored data
 | 
					### Do not reveal information about stored data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Many extendable formats, like JSON, BSON, BOSS and may others are keeping data in key-value pairs. While it is good in
 | 
					Many extendable formats, like JSON, BSON, BOSS and may others are keeping data in key-value pairs. While it is good in
 | 
				
			||||||
many aspets, it has a clear disadvantages: it uses more space, and it reveals inner data structure to the world. It is
 | 
					many aspets, it has a clear disadvantages: it uses more space, and it reveals inner data structure to the world. It is
 | 
				
			||||||
@ -68,20 +63,18 @@ backward compatibility with already serialzied data or using volumous boilerplat
 | 
				
			|||||||
versioning.
 | 
					versioning.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Not to waste space and reveal more information that needed Bipack allows extending classes marked as [@Extendable] to be
 | 
					Not to waste space and reveal more information that needed Bipack allows extending classes marked as [@Extendable] to be
 | 
				
			||||||
extended with more data _appended to the end of list of fields with required defaul values_. For such classes Bipack
 | 
					extended with more data _appended to the end of list of fields with required defaul values_. For such classes, Bipack stores the number of actually serialized fields and atuomatically uses default values for non-serialized ones when unpacking
 | 
				
			||||||
stores number of actually serialized fields and atuomatically uses default values for non-serialized ones when unpacking
 | 
					 | 
				
			||||||
old data.
 | 
					old data.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### - protect data with framing and CRC
 | 
					### Protect data with framing and CRC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
When needed, serialization lobrary allow to store/check CRC32 tag of the structure name with `@Framed` (can be overriden
 | 
					When needed, serialization lobrary allow to store/check CRC32 tag of the structure name with `@Framed` (can be overriden
 | 
				
			||||||
as usual with `@SerialName`), or be followed with CRC32 of the serialized binary data, that will be checked on
 | 
					as usual with `@SerialName`), or be followed with CRC32 of the serialized binary data, that will be checked on
 | 
				
			||||||
deserialization, using `@CrcProtected`. This allows to check the data consistency out of the box and only where needed.
 | 
					deserialization, using `@CrcProtected`. This allows checking the data consistency out of the box and only where needed.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Usage
 | 
					# Usage
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Use kotlinx serializatino as usual. There are following Bipack-specific annotation at your service. All class
 | 
					Use kotlinx serializatino as usual. There are the following Bipack-specific annotations at your disposal (can be combined):
 | 
				
			||||||
annotations could be combined.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
## @Extendable
 | 
					## @Extendable
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -8,7 +8,7 @@ plugins {
 | 
				
			|||||||
val serialization_version = "1.3.4"
 | 
					val serialization_version = "1.3.4"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
group = "net.sergeych"
 | 
					group = "net.sergeych"
 | 
				
			||||||
version = "0.0.3-SNAPSHOT"
 | 
					version = "0.0.3"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
repositories {
 | 
					repositories {
 | 
				
			||||||
    mavenCentral()
 | 
					    mavenCentral()
 | 
				
			||||||
@ -74,6 +74,7 @@ kotlin {
 | 
				
			|||||||
        val commonTest by getting {
 | 
					        val commonTest by getting {
 | 
				
			||||||
            dependencies {
 | 
					            dependencies {
 | 
				
			||||||
                implementation(kotlin("test"))
 | 
					                implementation(kotlin("test"))
 | 
				
			||||||
 | 
					                implementation("net.sergeych:mp_stools:1.4.1")
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        val jvmMain by getting
 | 
					        val jvmMain by getting
 | 
				
			||||||
 | 
				
			|||||||
@ -118,7 +118,7 @@ fun ByteArray.toDumpLines(wide: Boolean = false): List<String> {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    fun dumpChars(_from: Int): String {
 | 
					    fun dumpChars(_from: Int): String {
 | 
				
			||||||
        var from = _from
 | 
					        var from = _from
 | 
				
			||||||
        val b = StringBuilder(22)
 | 
					        val b = StringBuilder()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        b.append('|')
 | 
					        b.append('|')
 | 
				
			||||||
        val max: Int = kotlin.math.min(size, from + lineSize)
 | 
					        val max: Int = kotlin.math.min(size, from + lineSize)
 | 
				
			||||||
@ -162,7 +162,7 @@ fun ByteArray.toDumpLines(wide: Boolean = false): List<String> {
 | 
				
			|||||||
        if (line != null) {
 | 
					        if (line != null) {
 | 
				
			||||||
            val l = size
 | 
					            val l = size
 | 
				
			||||||
            var fill = lineSize - l % lineSize
 | 
					            var fill = lineSize - l % lineSize
 | 
				
			||||||
            if( fill > lineSize/2 ) line.append("  ")
 | 
					            if( fill > lineSize/2 && fill < lineSize ) line.append("  ")
 | 
				
			||||||
            if (fill < lineSize) while (fill-- > 0) line.append("   ")
 | 
					            if (fill < lineSize) while (fill-- > 0) line.append("   ")
 | 
				
			||||||
            val index = l - l % lineSize
 | 
					            val index = l - l % lineSize
 | 
				
			||||||
            line.append(dumpChars(if (index < l) index else l - lineSize))
 | 
					            line.append(dumpChars(if (index < l) index else l - lineSize))
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										19
									
								
								src/commonTest/kotlin/bintools/TestTools.kt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								src/commonTest/kotlin/bintools/TestTools.kt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					package bintools
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import net.sergeych.bintools.toDump
 | 
				
			||||||
 | 
					import kotlin.test.Test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class TestTools {
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    fun testDump() {
 | 
				
			||||||
 | 
					//        val src =
 | 
				
			||||||
 | 
					//            "MfsmHUExZpb3xd0X8FVj2MSOxc1dRd-93i3zkmJVhgWH0r8p0Agtg6lc9_TB6srlXJF4MOWT3a_Cfy87W3FTKRzdCdsAEDOBkSL-JANDey4"
 | 
				
			||||||
 | 
					//                .decodeBase64Url()
 | 
				
			||||||
 | 
					//        println(src.toDump())
 | 
				
			||||||
 | 
					        var res = byteArrayOf(0)
 | 
				
			||||||
 | 
					        for( i in 1..100) {
 | 
				
			||||||
 | 
					            res += byteArrayOf(i.toByte())
 | 
				
			||||||
 | 
					            println(res.toDump())
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user