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