Embed/microCLib

peek
JiuHuan authored at 2025-08-21 10:49:32
6eebb72
Tree
1 Parent(s) d4317aa
Summary: 2 changed files with 25 additions and 0 deletions.
Modified +20 -0
Modified +5 -0
Modified +20 -0
diff --git a/Core/Stream.c b/Core/Stream.c
index 5d326f4..48dc639 100644
--- a/Core/Stream.c
+++ b/Core/Stream.c
@@ -197,6 +197,26 @@ int StreamReadBytes(Stream_t* st, byte* p, int len)
 	return len;
 }
 
+bool StreamPeek(Stream_t* st, byte* p)
+{
+	if (st == NULL)return false;
+	// 空间不够一个不写。 避免出现写了半截造成错误。
+	if ((st->Size - st->Position) < 1)return false;
+
+	*p = st->MemStart[st->Position];
+	return true;
+}
+
+bool StreamPeeks(Stream_t* st, byte* p, int len)
+{
+	if (st == NULL)return false;
+	// 空间不够一个不写。 避免出现写了半截造成错误。
+	if ((st->Size - st->Position) < len)return false;
+
+	memcpy(p, &st->MemStart[st->Position], len);	
+	return true;
+}
+
 // 获取空闲空间
 int StreamRemian(Stream_t* st)
 {
Modified +5 -0
diff --git a/Core/Stream.h b/Core/Stream.h
index f6dee80..fcf5080 100644
--- a/Core/Stream.h
+++ b/Core/Stream.h
@@ -44,6 +44,11 @@ int StreamReadUint(Stream_t* st, uint* data);
 int StreamReadCompressionUint(Stream_t* st, uint* data);
 int StreamReadBytes(Stream_t* st, byte* p, int len);
 
+// 尝试读数据 peek 1字节。
+bool StreamPeek(Stream_t* st, byte* p);
+// 尝试读数据s,peek 多字节。要么不成功,要么全成功
+bool StreamPeeks(Stream_t* st, byte* p, int len);
+
 // 获取空闲空间
 int StreamRemian(Stream_t* st);
 // 返回当前游标