private IPv6address decode_IPv6address() { push("IPv6address"); bool decoded = true; int s0 = index; var e0 = new List<Rule>(); Rule rule; decoded = false; if (!decoded) { { var e1 = new List<Rule>(); int s1 = index; decoded = true; if (decoded) { bool f1 = true; int c1 = 0; for (int i1 = 0; i1 < 6 && f1; i1++) { decoded = false; if (!decoded) { { var e2 = new List<Rule>(); int s2 = index; decoded = true; if (decoded) { bool f2 = true; int c2 = 0; for (int i2 = 0; i2 < 1 && f2; i2++) { rule = decode_h16(); if ((f2 = rule != null)) { e2.Add(rule); c2++; } } decoded = c2 == 1; } if (decoded) { bool f2 = true; int c2 = 0; for (int i2 = 0; i2 < 1 && f2; i2++) { rule = decode_StringValue(":"); if ((f2 = rule != null)) { e2.Add(rule); c2++; } } decoded = c2 == 1; } if (decoded) e1.AddRange(e2); else index = s2; } } if (decoded) c1++; f1 = decoded; } decoded = c1 == 6; } if (decoded) { bool f1 = true; int c1 = 0; for (int i1 = 0; i1 < 1 && f1; i1++) { rule = decode_ls32(); if ((f1 = rule != null)) { e1.Add(rule); c1++; } } decoded = c1 == 1; } if (decoded) e0.AddRange(e1); else index = s1; } } if (!decoded) { { var e1 = new List<Rule>(); int s1 = index; decoded = true; if (decoded) { bool f1 = true; int c1 = 0; for (int i1 = 0; i1 < 1 && f1; i1++) { rule = decode_StringValue("::"); if ((f1 = rule != null)) { e1.Add(rule); c1++; } } decoded = c1 == 1; } if (decoded) { bool f1 = true; int c1 = 0; for (int i1 = 0; i1 < 5 && f1; i1++) { decoded = false; if (!decoded) { { var e2 = new List<Rule>(); int s2 = index; decoded = true; if (decoded) { bool f2 = true; int c2 = 0; for (int i2 = 0; i2 < 1 && f2; i2++) { rule = decode_h16(); if ((f2 = rule != null)) { e2.Add(rule); c2++; } } decoded = c2 == 1; } if (decoded) { bool f2 = true; int c2 = 0; for (int i2 = 0; i2 < 1 && f2; i2++) { rule = decode_StringValue(":"); if ((f2 = rule != null)) { e2.Add(rule); c2++; } } decoded = c2 == 1; } if (decoded) e1.AddRange(e2); else index = s2; } } if (decoded) c1++; f1 = decoded; } decoded = c1 == 5; } if (decoded) { bool f1 = true; int c1 = 0; for (int i1 = 0; i1 < 1 && f1; i1++) { rule = decode_ls32(); if ((f1 = rule != null)) { e1.Add(rule); c1++; } } decoded = c1 == 1; } if (decoded) e0.AddRange(e1); else index = s1; } } if (!decoded) { { var e1 = new List<Rule>(); int s1 = index; decoded = true; if (decoded) { bool f1 = true; int c1 = 0; for (int i1 = 0; i1 < 1 && f1; i1++) { decoded = false; if (!decoded) { { var e2 = new List<Rule>(); int s2 = index; decoded = true; if (decoded) { bool f2 = true; int c2 = 0; for (int i2 = 0; i2 < 1 && f2; i2++) { rule = decode_h16(); if ((f2 = rule != null)) { e2.Add(rule); c2++; } } decoded = c2 == 1; } if (decoded) e1.AddRange(e2); else index = s2; } } if (decoded) c1++; f1 = decoded; } decoded = true; } if (decoded) { bool f1 = true; int c1 = 0; for (int i1 = 0; i1 < 1 && f1; i1++) { rule = decode_StringValue("::"); if ((f1 = rule != null)) { e1.Add(rule); c1++; } } decoded = c1 == 1; } if (decoded) { bool f1 = true; int c1 = 0; for (int i1 = 0; i1 < 4 && f1; i1++) { decoded = false; if (!decoded) { { var e2 = new List<Rule>(); int s2 = index; decoded = true; if (decoded) { bool f2 = true; int c2 = 0; for (int i2 = 0; i2 < 1 && f2; i2++) { rule = decode_h16(); if ((f2 = rule != null)) { e2.Add(rule); c2++; } } decoded = c2 == 1; } if (decoded) { bool f2 = true; int c2 = 0; for (int i2 = 0; i2 < 1 && f2; i2++) { rule = decode_StringValue(":"); if ((f2 = rule != null)) { e2.Add(rule); c2++; } } decoded = c2 == 1; } if (decoded) e1.AddRange(e2); else index = s2; } } if (decoded) c1++; f1 = decoded; } decoded = c1 == 4; } if (decoded) { bool f1 = true; int c1 = 0; for (int i1 = 0; i1 < 1 && f1; i1++) { rule = decode_ls32(); if ((f1 = rule != null)) { e1.Add(rule); c1++; } } decoded = c1 == 1; } if (decoded) e0.AddRange(e1); else index = s1; } } if (!decoded) { { var e1 = new List<Rule>(); int s1 = index; decoded = true; if (decoded) { bool f1 = true; int c1 = 0; for (int i1 = 0; i1 < 1 && f1; i1++) { decoded = false; if (!decoded) { { var e2 = new List<Rule>(); int s2 = index; decoded = true; if (decoded) { bool f2 = true; int c2 = 0; for (int i2 = 0; i2 < 1 && f2; i2++) { decoded = false; if (!decoded) { { var e3 = new List<Rule>(); int s3 = index; decoded = true; if (decoded) { bool f3 = true; int c3 = 0; for (int i3 = 0; i3 < 1 && f3; i3++) { rule = decode_h16(); if ((f3 = rule != null)) { e3.Add(rule); c3++; } } decoded = c3 == 1; } if (decoded) { bool f3 = true; int c3 = 0; for (int i3 = 0; i3 < 1 && f3; i3++) { rule = decode_StringValue(":"); if ((f3 = rule != null)) { e3.Add(rule); c3++; } } decoded = c3 == 1; } if (decoded) e2.AddRange(e3); else index = s3; } } if (decoded) c2++; f2 = decoded; } decoded = true; } if (decoded) { bool f2 = true; int c2 = 0; for (int i2 = 0; i2 < 1 && f2; i2++) { rule = decode_h16(); if ((f2 = rule != null)) { e2.Add(rule); c2++; } } decoded = c2 == 1; } if (decoded) e1.AddRange(e2); else index = s2; } } if (decoded) c1++; f1 = decoded; } decoded = true; } if (decoded) { bool f1 = true; int c1 = 0; for (int i1 = 0; i1 < 1 && f1; i1++) { rule = decode_StringValue("::"); if ((f1 = rule != null)) { e1.Add(rule); c1++; } } decoded = c1 == 1; } if (decoded) { bool f1 = true; int c1 = 0; for (int i1 = 0; i1 < 3 && f1; i1++) { decoded = false; if (!decoded) { { var e2 = new List<Rule>(); int s2 = index; decoded = true; if (decoded) { bool f2 = true; int c2 = 0; for (int i2 = 0; i2 < 1 && f2; i2++) { rule = decode_h16(); if ((f2 = rule != null)) { e2.Add(rule); c2++; } } decoded = c2 == 1; } if (decoded) { bool f2 = true; int c2 = 0; for (int i2 = 0; i2 < 1 && f2; i2++) { rule = decode_StringValue(":"); if ((f2 = rule != null)) { e2.Add(rule); c2++; } } decoded = c2 == 1; } if (decoded) e1.AddRange(e2); else index = s2; } } if (decoded) c1++; f1 = decoded; } decoded = c1 == 3; } if (decoded) { bool f1 = true; int c1 = 0; for (int i1 = 0; i1 < 1 && f1; i1++) { rule = decode_ls32(); if ((f1 = rule != null)) { e1.Add(rule); c1++; } } decoded = c1 == 1; } if (decoded) e0.AddRange(e1); else index = s1; } } if (!decoded) { { var e1 = new List<Rule>(); int s1 = index; decoded = true; if (decoded) { bool f1 = true; int c1 = 0; for (int i1 = 0; i1 < 1 && f1; i1++) { decoded = false; if (!decoded) { { var e2 = new List<Rule>(); int s2 = index; decoded = true; if (decoded) { bool f2 = true; int c2 = 0; for (int i2 = 0; i2 < 2 && f2; i2++) { decoded = false; if (!decoded) { { var e3 = new List<Rule>(); int s3 = index; decoded = true; if (decoded) { bool f3 = true; int c3 = 0; for (int i3 = 0; i3 < 1 && f3; i3++) { rule = decode_h16(); if ((f3 = rule != null)) { e3.Add(rule); c3++; } } decoded = c3 == 1; } if (decoded) { bool f3 = true; int c3 = 0; for (int i3 = 0; i3 < 1 && f3; i3++) { rule = decode_StringValue(":"); if ((f3 = rule != null)) { e3.Add(rule); c3++; } } decoded = c3 == 1; } if (decoded) e2.AddRange(e3); else index = s3; } } if (decoded) c2++; f2 = decoded; } decoded = true; } if (decoded) { bool f2 = true; int c2 = 0; for (int i2 = 0; i2 < 1 && f2; i2++) { rule = decode_h16(); if ((f2 = rule != null)) { e2.Add(rule); c2++; } } decoded = c2 == 1; } if (decoded) e1.AddRange(e2); else index = s2; } } if (decoded) c1++; f1 = decoded; } decoded = true; } if (decoded) { bool f1 = true; int c1 = 0; for (int i1 = 0; i1 < 1 && f1; i1++) { rule = decode_StringValue("::"); if ((f1 = rule != null)) { e1.Add(rule); c1++; } } decoded = c1 == 1; } if (decoded) { bool f1 = true; int c1 = 0; for (int i1 = 0; i1 < 2 && f1; i1++) { decoded = false; if (!decoded) { { var e2 = new List<Rule>(); int s2 = index; decoded = true; if (decoded) { bool f2 = true; int c2 = 0; for (int i2 = 0; i2 < 1 && f2; i2++) { rule = decode_h16(); if ((f2 = rule != null)) { e2.Add(rule); c2++; } } decoded = c2 == 1; } if (decoded) { bool f2 = true; int c2 = 0; for (int i2 = 0; i2 < 1 && f2; i2++) { rule = decode_StringValue(":"); if ((f2 = rule != null)) { e2.Add(rule); c2++; } } decoded = c2 == 1; } if (decoded) e1.AddRange(e2); else index = s2; } } if (decoded) c1++; f1 = decoded; } decoded = c1 == 2; } if (decoded) { bool f1 = true; int c1 = 0; for (int i1 = 0; i1 < 1 && f1; i1++) { rule = decode_ls32(); if ((f1 = rule != null)) { e1.Add(rule); c1++; } } decoded = c1 == 1; } if (decoded) e0.AddRange(e1); else index = s1; } } if (!decoded) { { var e1 = new List<Rule>(); int s1 = index; decoded = true; if (decoded) { bool f1 = true; int c1 = 0; for (int i1 = 0; i1 < 1 && f1; i1++) { decoded = false; if (!decoded) { { var e2 = new List<Rule>(); int s2 = index; decoded = true; if (decoded) { bool f2 = true; int c2 = 0; for (int i2 = 0; i2 < 3 && f2; i2++) { decoded = false; if (!decoded) { { var e3 = new List<Rule>(); int s3 = index; decoded = true; if (decoded) { bool f3 = true; int c3 = 0; for (int i3 = 0; i3 < 1 && f3; i3++) { rule = decode_h16(); if ((f3 = rule != null)) { e3.Add(rule); c3++; } } decoded = c3 == 1; } if (decoded) { bool f3 = true; int c3 = 0; for (int i3 = 0; i3 < 1 && f3; i3++) { rule = decode_StringValue(":"); if ((f3 = rule != null)) { e3.Add(rule); c3++; } } decoded = c3 == 1; } if (decoded) e2.AddRange(e3); else index = s3; } } if (decoded) c2++; f2 = decoded; } decoded = true; } if (decoded) { bool f2 = true; int c2 = 0; for (int i2 = 0; i2 < 1 && f2; i2++) { rule = decode_h16(); if ((f2 = rule != null)) { e2.Add(rule); c2++; } } decoded = c2 == 1; } if (decoded) e1.AddRange(e2); else index = s2; } } if (decoded) c1++; f1 = decoded; } decoded = true; } if (decoded) { bool f1 = true; int c1 = 0; for (int i1 = 0; i1 < 1 && f1; i1++) { rule = decode_StringValue("::"); if ((f1 = rule != null)) { e1.Add(rule); c1++; } } decoded = c1 == 1; } if (decoded) { bool f1 = true; int c1 = 0; for (int i1 = 0; i1 < 1 && f1; i1++) { rule = decode_h16(); if ((f1 = rule != null)) { e1.Add(rule); c1++; } } decoded = c1 == 1; } if (decoded) { bool f1 = true; int c1 = 0; for (int i1 = 0; i1 < 1 && f1; i1++) { rule = decode_StringValue(":"); if ((f1 = rule != null)) { e1.Add(rule); c1++; } } decoded = c1 == 1; } if (decoded) { bool f1 = true; int c1 = 0; for (int i1 = 0; i1 < 1 && f1; i1++) { rule = decode_ls32(); if ((f1 = rule != null)) { e1.Add(rule); c1++; } } decoded = c1 == 1; } if (decoded) e0.AddRange(e1); else index = s1; } } if (!decoded) { { var e1 = new List<Rule>(); int s1 = index; decoded = true; if (decoded) { bool f1 = true; int c1 = 0; for (int i1 = 0; i1 < 1 && f1; i1++) { decoded = false; if (!decoded) { { var e2 = new List<Rule>(); int s2 = index; decoded = true; if (decoded) { bool f2 = true; int c2 = 0; for (int i2 = 0; i2 < 4 && f2; i2++) { decoded = false; if (!decoded) { { var e3 = new List<Rule>(); int s3 = index; decoded = true; if (decoded) { bool f3 = true; int c3 = 0; for (int i3 = 0; i3 < 1 && f3; i3++) { rule = decode_h16(); if ((f3 = rule != null)) { e3.Add(rule); c3++; } } decoded = c3 == 1; } if (decoded) { bool f3 = true; int c3 = 0; for (int i3 = 0; i3 < 1 && f3; i3++) { rule = decode_StringValue(":"); if ((f3 = rule != null)) { e3.Add(rule); c3++; } } decoded = c3 == 1; } if (decoded) e2.AddRange(e3); else index = s3; } } if (decoded) c2++; f2 = decoded; } decoded = true; } if (decoded) { bool f2 = true; int c2 = 0; for (int i2 = 0; i2 < 1 && f2; i2++) { rule = decode_h16(); if ((f2 = rule != null)) { e2.Add(rule); c2++; } } decoded = c2 == 1; } if (decoded) e1.AddRange(e2); else index = s2; } } if (decoded) c1++; f1 = decoded; } decoded = true; } if (decoded) { bool f1 = true; int c1 = 0; for (int i1 = 0; i1 < 1 && f1; i1++) { rule = decode_StringValue("::"); if ((f1 = rule != null)) { e1.Add(rule); c1++; } } decoded = c1 == 1; } if (decoded) { bool f1 = true; int c1 = 0; for (int i1 = 0; i1 < 1 && f1; i1++) { rule = decode_ls32(); if ((f1 = rule != null)) { e1.Add(rule); c1++; } } decoded = c1 == 1; } if (decoded) e0.AddRange(e1); else index = s1; } } if (!decoded) { { var e1 = new List<Rule>(); int s1 = index; decoded = true; if (decoded) { bool f1 = true; int c1 = 0; for (int i1 = 0; i1 < 1 && f1; i1++) { decoded = false; if (!decoded) { { var e2 = new List<Rule>(); int s2 = index; decoded = true; if (decoded) { bool f2 = true; int c2 = 0; for (int i2 = 0; i2 < 5 && f2; i2++) { decoded = false; if (!decoded) { { var e3 = new List<Rule>(); int s3 = index; decoded = true; if (decoded) { bool f3 = true; int c3 = 0; for (int i3 = 0; i3 < 1 && f3; i3++) { rule = decode_h16(); if ((f3 = rule != null)) { e3.Add(rule); c3++; } } decoded = c3 == 1; } if (decoded) { bool f3 = true; int c3 = 0; for (int i3 = 0; i3 < 1 && f3; i3++) { rule = decode_StringValue(":"); if ((f3 = rule != null)) { e3.Add(rule); c3++; } } decoded = c3 == 1; } if (decoded) e2.AddRange(e3); else index = s3; } } if (decoded) c2++; f2 = decoded; } decoded = true; } if (decoded) { bool f2 = true; int c2 = 0; for (int i2 = 0; i2 < 1 && f2; i2++) { rule = decode_h16(); if ((f2 = rule != null)) { e2.Add(rule); c2++; } } decoded = c2 == 1; } if (decoded) e1.AddRange(e2); else index = s2; } } if (decoded) c1++; f1 = decoded; } decoded = true; } if (decoded) { bool f1 = true; int c1 = 0; for (int i1 = 0; i1 < 1 && f1; i1++) { rule = decode_StringValue("::"); if ((f1 = rule != null)) { e1.Add(rule); c1++; } } decoded = c1 == 1; } if (decoded) { bool f1 = true; int c1 = 0; for (int i1 = 0; i1 < 1 && f1; i1++) { rule = decode_h16(); if ((f1 = rule != null)) { e1.Add(rule); c1++; } } decoded = c1 == 1; } if (decoded) e0.AddRange(e1); else index = s1; } } if (!decoded) { { var e1 = new List<Rule>(); int s1 = index; decoded = true; if (decoded) { bool f1 = true; int c1 = 0; for (int i1 = 0; i1 < 1 && f1; i1++) { decoded = false; if (!decoded) { { var e2 = new List<Rule>(); int s2 = index; decoded = true; if (decoded) { bool f2 = true; int c2 = 0; for (int i2 = 0; i2 < 6 && f2; i2++) { decoded = false; if (!decoded) { { var e3 = new List<Rule>(); int s3 = index; decoded = true; if (decoded) { bool f3 = true; int c3 = 0; for (int i3 = 0; i3 < 1 && f3; i3++) { rule = decode_h16(); if ((f3 = rule != null)) { e3.Add(rule); c3++; } } decoded = c3 == 1; } if (decoded) { bool f3 = true; int c3 = 0; for (int i3 = 0; i3 < 1 && f3; i3++) { rule = decode_StringValue(":"); if ((f3 = rule != null)) { e3.Add(rule); c3++; } } decoded = c3 == 1; } if (decoded) e2.AddRange(e3); else index = s3; } } if (decoded) c2++; f2 = decoded; } decoded = true; } if (decoded) { bool f2 = true; int c2 = 0; for (int i2 = 0; i2 < 1 && f2; i2++) { rule = decode_h16(); if ((f2 = rule != null)) { e2.Add(rule); c2++; } } decoded = c2 == 1; } if (decoded) e1.AddRange(e2); else index = s2; } } if (decoded) c1++; f1 = decoded; } decoded = true; } if (decoded) { bool f1 = true; int c1 = 0; for (int i1 = 0; i1 < 1 && f1; i1++) { rule = decode_StringValue("::"); if ((f1 = rule != null)) { e1.Add(rule); c1++; } } decoded = c1 == 1; } if (decoded) e0.AddRange(e1); else index = s1; } } rule = null; if (decoded) rule = new IPv6address(text.Substring(s0, index - s0), e0); else index = s0; pop("IPv6address", decoded, index - s0); return (IPv6address)rule; }
public IPv6address(IPv6address rule) : base(rule.spelling, rule.rules) { }