From a89af0093050ae7ad0ee65a943bd7276578bfb45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=93=E3=81=AE=E4=B8=AD=E4=BA=8C=E7=97=85=E3=81=AB?= =?UTF-8?q?=E7=88=86=E7=84=94=E3=82=92=EF=BC=81?= Date: Fri, 15 Sep 2023 19:42:23 +0800 Subject: [PATCH] write a tree --- src/LINQ/RQL/IndexWriter.vb | 37 +++++++++++++++++++++++++++++++++++-- src/LINQ/RQL/NodeMap.vb | 5 +++++ 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/src/LINQ/RQL/IndexWriter.vb b/src/LINQ/RQL/IndexWriter.vb index 9fd36a1..c69c552 100644 --- a/src/LINQ/RQL/IndexWriter.vb +++ b/src/LINQ/RQL/IndexWriter.vb @@ -1,3 +1,36 @@ -Module IndexWriter +Imports System.IO +Imports Microsoft.VisualBasic.Data.GraphTheory +Imports Microsoft.VisualBasic.Data.IO -End Module +Public Class IndexWriter + + Dim file As BinaryDataWriter + + Sub New(file As Stream) + Me.file = New BinaryDataWriter(file) + End Sub + + Public Sub Write(tree As Trie(Of NodeMap)) + Call Write(tree.Root) + End Sub + + Public Sub Write(node As CharacterNode(Of NodeMap)) + Call file.Write(node.Character) + Call file.Write(node.Ends) + Call file.Write(node.data.size) + + For Each si As String In node.data.resources + Call file.Write(si, BinaryStringFormat.ZeroTerminated) + Next + + Call file.Write(node.ID) + Call file.Write(node.label, BinaryStringFormat.ZeroTerminated) + + Call file.Write(node.Childs.Count) + + For Each val As CharacterNode(Of NodeMap) In node.Childs.Values + Call Write(val) + Next + End Sub + +End Class diff --git a/src/LINQ/RQL/NodeMap.vb b/src/LINQ/RQL/NodeMap.vb index 4ca62e4..18286ca 100644 --- a/src/LINQ/RQL/NodeMap.vb +++ b/src/LINQ/RQL/NodeMap.vb @@ -6,5 +6,10 @@ Public Class NodeMap Public Property resources As List(Of String) + Public ReadOnly Property size As Integer + Get + Return resources.Count + End Get + End Property End Class