Skip to content

Commit 7659268

Browse files
🎨 Improve buffer API
The initial position should also be an out parameter
1 parent a27995f commit 7659268

File tree

7 files changed

+16
-17
lines changed

7 files changed

+16
-17
lines changed

Lite3DotNet.Tests/AlignmentZeroingTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public void Can_zero_unaligned_bytes()
1313
// Fill buffer with non-zero garbage
1414
buffer.Fill(0xEE);
1515

16-
var position = Lite3.InitializeObject(buffer);
16+
Lite3.InitializeObject(buffer, out var position);
1717

1818
// Object insert adds 99 bytes: LITE3_NODE_SIZE (96) + "a" (size 2 including \0) + key_tag (size 1)
1919
// 1 padding byte is inserted to reach 100 bytes, for 4 byte alignment.
@@ -25,7 +25,7 @@ public void Can_zero_unaligned_bytes()
2525
// Reset buffer to garbage for second test
2626
buffer.Fill(0xEE);
2727

28-
position = Lite3.InitializeObject(buffer);
28+
Lite3.InitializeObject(buffer, out position);
2929

3030
// Object insert adds 112 bytes (LITE3_NODE_SIZE (96) + keyval (16))
3131
// key_tag(1) + "key1\0"(5) + val_tag(1) + str_len(4) + "val1\0"(5) = 16 bytes.

Lite3DotNet.Tests/BufferApiExamples.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public void Can_build_messages()
2222
var buffer = new byte[1024];
2323

2424
// Build message
25-
var position = Lite3.InitializeObject(buffer);
25+
Lite3.InitializeObject(buffer, out var position);
2626
Lite3.SetString(buffer, ref position, 0, "event"u8, "lap_complete"u8);
2727
Lite3.SetLong(buffer, ref position, 0, "lap"u8, 55);
2828
Lite3.SetDouble(buffer, ref position, 0, "time_sec"u8, 88.427);
@@ -63,7 +63,7 @@ public void Can_read_messages()
6363
var buffer = new byte[1024];
6464

6565
// Build Message
66-
var position = Lite3.InitializeObject(buffer);
66+
Lite3.InitializeObject(buffer, out var position);
6767
Lite3.SetString(buffer, ref position, 0, "title"u8, "C Programming Language, 2nd Edition"u8);
6868
Lite3.SetString(buffer, ref position, 0, "language"u8, "en"u8);
6969
Lite3.SetDouble(buffer, ref position, 0, "price_usd"u8, 60.30);
@@ -122,7 +122,7 @@ public void Can_work_with_strings()
122122
var buffer = new byte[1024];
123123

124124
// Build message
125-
var position = Lite3.InitializeObject(buffer);
125+
Lite3.InitializeObject(buffer, out var position);
126126
Lite3.SetString(buffer, ref position, 0, "name"u8, "Maria"u8);
127127
Lite3.SetLong(buffer, ref position, 0, "age"u8, 24);
128128
Lite3.SetString(buffer, ref position, 0, "email"u8, "marie@example.com"u8);
@@ -155,7 +155,7 @@ public void Can_work_with_nesting()
155155
var buffer = new byte[1024];
156156

157157
// Build message
158-
var position = Lite3.InitializeObject(buffer);
158+
Lite3.InitializeObject(buffer, out var position);
159159
Lite3.SetString(buffer, ref position, 0, "event"u8, "http_request"u8);
160160
Lite3.SetString(buffer, ref position, 0, "method"u8, "POST"u8);
161161
Lite3.SetLong(buffer, ref position, 0, "duration_ms"u8, 47);
@@ -183,7 +183,7 @@ public void Can_work_with_arrays()
183183
{
184184
var buffer = new byte[1024];
185185

186-
var position = Lite3.InitializeArray(buffer);
186+
Lite3.InitializeArray(buffer, out var position);
187187
Lite3.ArrayAppendString(buffer, ref position, 0, "zebra"u8);
188188
Lite3.ArrayAppendString(buffer, ref position, 0, "giraffe"u8);
189189
Lite3.ArrayAppendString(buffer, ref position, 0, "buffalo"u8);
@@ -233,7 +233,7 @@ public void Can_use_iterators()
233233
var buffer = new byte[1024];
234234

235235
// Build array
236-
var position = Lite3.InitializeArray(buffer);
236+
Lite3.InitializeArray(buffer, out var position);
237237

238238
for (var i = 0; i < names.Count; i++)
239239
{

Lite3DotNet.Tests/CollisionsTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public void Can_handle_key_hash_collisions()
1414
var buffer = new byte[1024 * 64];
1515
var random = new Random(52073821);
1616

17-
var position = Lite3.InitializeObject(buffer);
17+
Lite3.InitializeObject(buffer, out var position);
1818

1919
const int keyLength = 2;
2020

Lite3DotNet.Tests/JohnDoeTests.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@ public void Can_read_and_write_basic_data()
1010
{
1111
Span<byte> buffer = new byte[2048];
1212

13-
var position = Lite3.InitializeObject(buffer);
14-
13+
Lite3.InitializeObject(buffer, out var position);
1514
Lite3.SetLong(buffer, ref position, 0, "user_id"u8, 12345);
1615
Lite3.SetString(buffer, ref position, 0, "username"u8, "jdoe"u8);
1716
Lite3.SetString(buffer, ref position, 0, "email_address"u8, "jdoe@example.com"u8);

Lite3DotNet.Tests/TypeQueryTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public void Can_get_array_type_with_buffer_API()
1414
var buffer = new byte[2048];
1515

1616
// Initialize as array
17-
var position = Lite3.InitializeArray(buffer);
17+
Lite3.InitializeArray(buffer, out var position);
1818

1919
// Append various types
2020
Lite3.ArrayAppendString(buffer, ref position, 0, "hello"u8);
@@ -128,11 +128,11 @@ public void Can_get_root_type_with_buffer_API()
128128
var buffer = new byte[2048];
129129

130130
// Test object root
131-
Lite3.InitializeObject(buffer);
131+
Lite3.InitializeObject(buffer, out _);
132132
Lite3.GetRootType(buffer).ShouldBe(Lite3Core.ValueKind.Object);
133133

134134
// Test array root
135-
Lite3.InitializeArray(buffer);
135+
Lite3.InitializeArray(buffer, out _);
136136
Lite3.GetRootType(buffer).ShouldBe(Lite3Core.ValueKind.Array);
137137
}
138138

Lite3DotNet/Lite3Core.C.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -560,7 +560,7 @@ private static void InitializeImpl(Span<byte> buffer, int offset, ValueKind kind
560560
/// <em>Ported from C <c>lite3_init_obj</c>.</em>
561561
/// </para>
562562
/// </remarks>
563-
[Lite3Api(ReturnArg = nameof(position))]
563+
[Lite3Api]
564564
public static Status InitializeObject(Span<byte> buffer, out int position)
565565
{
566566
position = 0;
@@ -591,7 +591,7 @@ public static Status InitializeObject(Span<byte> buffer, out int position)
591591
/// <em>Ported from C <c>lite3_init_arr</c>.</em>
592592
/// </para>
593593
/// </remarks>
594-
[Lite3Api(ReturnArg = nameof(position))]
594+
[Lite3Api]
595595
public static Status InitializeArray(Span<byte> buffer, out int position)
596596
{
597597
position = 0;

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ The following example using the Buffer API outputs `Max Retries: 3`.
3535
```csharp
3636
var buffer = new byte[1024];
3737

38-
var position = Lite3.InitializeObject(buffer);
38+
Lite3.InitializeObject(buffer, out var position);
3939
Lite3.SetString(buffer, ref position, 0, "app_name"u8, "demo_app"u8);
4040
Lite3.SetLong(buffer, ref position, 0, "max_retries"u8, 3);
4141
Lite3.SetBool(buffer, ref position, 0, "debug_mode"u8, false);

0 commit comments

Comments
 (0)