internal static BrowseNode Browse(long taskId, string fileSystem, long parentItemId, string filter) { Index i = new Index(taskId, false); i.Open(); var bn = new BrowseNode(); if (parentItemId == 0 && fileSystem == "") { foreach (string fs in i.GetRootDrives()) { bn.Children.Add(new BrowseItem { Name = fs, Type = "fs" }); } } else { foreach (IFSEntry entry in i.BrowseChildren(fileSystem, parentItemId, filter)) { bn.Children.Add(new BrowseItem { Name = entry.Name, Id = entry.ID, Label = "" + entry.ParentID, // temporary, to debug parenthoot Type = "" + (int)entry.Kind, Size = entry.FileSize }); } } i.Terminate(); return(bn); }
public static byte[] Encode(BrowseNode structure, IList <string> initialDictionary = null, PsonOptions options = PsonOptions.None) { var output = new MemoryStream(); using (var encoder = new PsonEncoder(output, initialDictionary, options)) { encoder.Write(structure); return(output.ToArray()); } }
public ParentNode(BrowseNode me) { first = me.Parent_Viewer.NodeRawData.NodeBelow == me.NodeRawData; if (first) { parentNode = me.Parent_Viewer; } else { parentNode = me.Pred_Viewer; } }
public int ClearMyLink() { BrowseNode me = elements[1].element; while (me.NodeRawData.Parent != null) { if (me.NodeRawData.NextTo != null) { me.NodeRawData.NextTo = null; return(me.Level_Viewer); } me = me.Parent_Viewer; } return(-1); }
public void WriteObject(BrowseNode obj) { if (obj.NodeRawData == null) { WriteNull(); return; } BrowseNode below = obj.Node_Viewer; WriteStartObject(below.Count); do { WriteString((string)below.Key_Viewer, true); Write(below); below = below.Next_Viewer; } while (below != null); }
public void WriteArray(BrowseNode list) { if (list.NodeRawData == null) { WriteNull(); return; } BrowseNode below = list.Node_Viewer; var count = below?.Count ?? 0; WriteStartArray(count); if (below != null) { do { Write(below); below = below.Next_Viewer; } while (below != null); } }
public void Write(BrowseNode obj) { if (obj.Tag_Viewer == JsonTag.JSON_NULL) { WriteNull(); } else if (obj.Tag_Viewer == JsonTag.JSON_STRING) { WriteString(obj.Value_Viewer, false); } else if (obj.Tag_Viewer == JsonTag.JSON_NUMBER_STR) { WriteDouble(Double.Parse(obj.Value_Viewer.Replace('.', ','))); } else if (obj.Tag_Viewer == JsonTag.JSON_NUMBER) { WriteDouble(obj.NodeRawData.ToNumber()); } else if (obj.Tag_Viewer >= JsonTag.JSON_TRUE) // true, false, null { WriteBool(obj.Tag_Viewer == JsonTag.JSON_TRUE); } else if (obj.Tag_Viewer == JsonTag.JSON_ARRAY) { WriteArray(obj); } else if (obj.Tag_Viewer == JsonTag.JSON_OBJECT) { WriteObject(obj); } else { throw new ArgumentException("unsupported type: " + obj.Tag_Viewer, "obj"); } }
public static void Main() { Tests.TestAll(); Byte[] raw; #if DoubleLinked int endPos = -1; JsonNode jsn; BrowseNode v1, v2; DepthFirst bf1, bf2; #endif Parser jsonParser = new Parser(true); // FloatAsDecimal Printer prn = new Printer(); #if DoubleLinked raw = Encoding.UTF8.GetBytes(Strings.JSONnetPart1); jsonParser.Parse(raw, ref endPos, out JsonNode jsn1 #if KEY_SPLIT , new ByteString[] { }, 0, 0, 0 #endif ); bf1 = new DepthFirst(jsn1, raw); v1 = new BrowseNode(ref jsn1, raw); raw = Encoding.UTF8.GetBytes(Strings.JSONnetPart2); jsonParser.Parse(raw, ref endPos, out JsonNode jsn2 #if KEY_SPLIT , new ByteString[] { }, 0, 0, 0 #endif ); jsonParser.SortPaths(jsn2, raw, "id"); v2 = new BrowseNode(ref jsn2, raw); bf2 = new DepthFirst(jsn2, raw); jsonParser.RemoveTwins(ref bf1, ref bf2); Console.WriteLine("RemoveTwins result 1/2:"); Console.WriteLine(prn.Print(ref v1, 0).ToString()); Console.WriteLine("RemoveTwins result 2/2:"); Console.WriteLine(prn.Print(ref v2, 0).ToString()); raw = Encoding.UTF8.GetBytes(Strings.JSONnetComplete); ByteString[] keys = new ByteString[] { new ByteString("batters"), null }; jsonParser.Parse(raw, ref endPos, out jsn #if KEY_SPLIT , keys, 2, 0, 2 #endif ); // batters / null path, read only 1st 2 #if !KEY_SPLIT jsonParser.SortPaths(jsn, raw, null); v1 = new BrowseNode(ref jsn, raw); String check = prn.Print(ref v1, 0).ToString(); if (Strings.Sort1 != check) { Console.WriteLine($"SortPaths 2.1 error:\n{Strings.Sort1}!=\n{check}<-"); } else { Console.WriteLine("SortPaths 2.1 OK"); } jsonParser.SortPaths(jsn, raw, "id"); check = prn.Print(ref v1, 0).ToString(); if (Strings.Sort2 != check) { Console.WriteLine($"SortPaths 2.2 error:\n{Strings.Sort2}"); } else { Console.WriteLine("SortPaths 2.2 OK"); } endPos = -1; #else Console.WriteLine("1st 2 rows of batters only:"); jsonParser.Parse(raw, ref endPos, out jsn , keys, 2, endPos, 2 ); // and now following 2 ValueWriter wr = new ValueWriter(); using (StreamWriter sw = new StreamWriter(Console.OpenStandardOutput())) { sw.AutoFlush = true; wr.DumpValueIterative(sw, jsn, raw); } #endif // Twiter complex json -> TC raw = Encoding.UTF8.GetBytes(Tests.ReadFile("pass6.json")); jsonParser.Parse(raw, ref endPos, out JsonNode jsn01 #if KEY_SPLIT , new ByteString[] { }, 0, 0, 0 #endif ); jsonParser.Parse(raw, ref endPos, out JsonNode jsn02 #if KEY_SPLIT , new ByteString[] { }, 0, 0, 0 #endif ); v1 = new BrowseNode(ref jsn01, raw); v2 = new BrowseNode(ref jsn02, raw); bf1 = new DepthFirst(jsn01, raw); bf2 = new DepthFirst(jsn02, raw); Tests.ModifyTwitter(ref bf1, ref bf2, raw); jsonParser.RemoveTwins(ref bf1, ref bf2); if (v1.NodeRawData == null) { Console.WriteLine("Bug - 1st modified Twitter JSON empty"); } else if (Strings.Twitter1 == prn.Print(ref v1, 0).ToString()) { Console.WriteLine($"Twitter check 1/2 OK - 1st variant has expected content:"); } else { Console.WriteLine($"Twiter RemoveTwins result 1/2 differs:\n{prn.Print(ref v1, 0).ToString()}"); } if (v2.NodeRawData == null) { Console.WriteLine("Bug - 2nd modified Twitter JSON empty"); } else if (Strings.Twitter2 == prn.Print(ref v2, 0).ToString()) { Console.WriteLine($"Twitter check 2/2 OK - 2nd variant has expected content:"); } else { Console.WriteLine($"Twiter RemoveTwins result 2/2 differs:\n{prn.Print(ref v2, 0).ToString()}"); } #endif raw = File.ReadAllBytes(@"citylots.json"); Benchmark b = new Benchmark(raw); b.Run(); // < 30s return; }
public NodeComparer(BrowseNode el, Byte[] s) { element = el; src = s; }
public BrowseTable(BrowseNode node, Program program) : base(node, program) { _tables = new BrowseTableList(this); }