Skip to content

Commit 163b368

Browse files
committedJan 26, 2025
seek peek
1 parent 977751d commit 163b368

File tree

3 files changed

+32
-0
lines changed

3 files changed

+32
-0
lines changed
 

‎src/buffer.c

+7
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,13 @@ t_ion_result_code ion_buffer_seek_write(t_ion_buffer *self, size_t curr) {
4646
return vector_seek_write(self->body, curr);
4747
}
4848

49+
t_ion_result_code ion_buffer_seek_peek(t_ion_buffer *self, size_t curr) {
50+
if (self == NULL)
51+
return RESULT_ERROR;
52+
53+
return vector_seek_peek(self->body, curr);
54+
}
55+
4956
t_ion_result_code ion_buffer_write(t_ion_buffer *self, void *src, size_t len) {
5057
if (self == NULL)
5158
return RESULT_ERROR;

‎src/ion.h

+3
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,10 @@ t_ion_vector *vector_new(size_t unit);
6969
t_ion_vector *vector_clone(t_ion_vector *self);
7070
t_ion_result_code vector_seek_read(t_ion_vector *self, size_t index);
7171
t_ion_result_code vector_seek_write(t_ion_vector *self, size_t index);
72+
t_ion_result_code vector_seek_peek(t_ion_vector *self, size_t index);
7273
t_ion_result_code vector_seek_relative_read(t_ion_vector *self, int64_t diff);
7374
t_ion_result_code vector_seek_relative_write(t_ion_vector *self, int64_t diff);
75+
t_ion_result_code vector_seek_relative_peek(t_ion_vector *self, int64_t diff);
7476
t_ion_result_code vector_extend(t_ion_vector *self);
7577
t_ion_result_code vector_write(t_ion_vector *self, void *src, size_t len);
7678
t_ion_result_code vector_read(t_ion_vector *self, void *dst, size_t len);
@@ -87,6 +89,7 @@ void ion_buffer_free(t_ion_buffer *self);
8789
t_ion_buffer *ion_buffer_clone(t_ion_buffer *self);
8890
t_ion_result_code ion_buffer_seek_read(t_ion_buffer *self, size_t curr);
8991
t_ion_result_code ion_buffer_seek_write(t_ion_buffer *self, size_t curr);
92+
t_ion_result_code ion_buffer_seek_peek(t_ion_buffer *self, size_t curr);
9093
t_ion_result_code ion_buffer_write(t_ion_buffer *self, void *src, size_t len);
9194
t_ion_result_code ion_buffer_read(t_ion_buffer *self, void *dst, size_t len);
9295
t_ion_result_code ion_buffer_peek(t_ion_buffer *self, void *dst, size_t len);

‎src/vector.c

+22
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,21 @@ t_ion_result_code vector_seek_write(t_ion_vector *self, size_t index) {
6565
return RESULT_OK;
6666
}
6767

68+
t_ion_result_code vector_seek_peek(t_ion_vector *self, size_t index) {
69+
if (self == NULL)
70+
return RESULT_ERROR;
71+
72+
if (index < 0)
73+
return RESULT_ERROR;
74+
75+
if (index >= self->size)
76+
return RESULT_ERROR;
77+
78+
self->curr_p = index;
79+
80+
return RESULT_OK;
81+
}
82+
6883
t_ion_result_code vector_seek_relative_read(t_ion_vector *self, int64_t diff) {
6984
if (self == NULL)
7085
return RESULT_ERROR;
@@ -79,6 +94,13 @@ t_ion_result_code vector_seek_relative_write(t_ion_vector *self, int64_t diff) {
7994
return vector_seek_write(self, (size_t)((int64_t)self->curr_r + diff));
8095
}
8196

97+
t_ion_result_code vector_seek_relative_peek(t_ion_vector *self, int64_t diff) {
98+
if (self == NULL)
99+
return RESULT_ERROR;
100+
101+
return vector_seek_peek(self, (size_t)((int64_t)self->curr_r + diff));
102+
}
103+
82104
t_ion_result_code vector_extend(t_ion_vector *self) {
83105
void *body;
84106
size_t size;

0 commit comments

Comments
 (0)