新增跳转缓存
This commit is contained in:
@@ -63,8 +63,18 @@ namespace Convention.RScript
|
||||
}
|
||||
}
|
||||
|
||||
// 这里需要根据 ExpressionParser.SerializableParser 的结构来序列化
|
||||
// writer.Write(...); // CompileParser 的序列化
|
||||
// 序列化 JumpPointerCache 数组
|
||||
writer.Write(data.JumpPointerCache?.Length ?? 0);
|
||||
if (data.JumpPointerCache != null)
|
||||
{
|
||||
foreach (var jpItem in data.JumpPointerCache)
|
||||
{
|
||||
writer.Write(jpItem.Item1.Item1);
|
||||
writer.Write(jpItem.Item1.Item2);
|
||||
writer.Write(jpItem.Item2.Item1);
|
||||
writer.Write(jpItem.Item2.Item2);
|
||||
}
|
||||
}
|
||||
|
||||
return stream.ToArray();
|
||||
}
|
||||
@@ -141,8 +151,20 @@ namespace Convention.RScript
|
||||
}
|
||||
}
|
||||
|
||||
// 反序列化 CompileParser
|
||||
// result.CompileParser = ...; // 根据具体结构实现
|
||||
// 反序列化 JumpPointerCache 数组
|
||||
int jumpPointerCacheLength = reader.ReadInt32();
|
||||
if (jumpPointerCacheLength > 0)
|
||||
{
|
||||
result.JumpPointerCache = new Tuple<Tuple<int, int>, Tuple<int, int>>[jumpPointerCacheLength];
|
||||
for(int i=0;i<jumpPointerCacheLength;i++)
|
||||
{
|
||||
int x= reader.ReadInt32();
|
||||
int y= reader.ReadInt32();
|
||||
int z= reader.ReadInt32();
|
||||
int w= reader.ReadInt32();
|
||||
result.JumpPointerCache[i] = Tuple.Create(Tuple.Create(x, y), Tuple.Create(z, w));
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
Reference in New Issue
Block a user