protected LNode GenerateSetDecl(PGIntSet set, Symbol setName) { var ranges = set.InternalRangeList(); IEnumerable <object> args; Symbol method; if (ranges.Count * 2 < set.SizeIgnoringInversion) // use ranges { method = _NewSetOfRanges; args = ranges.SelectMany(r => { if (r.Lo >= 32 && r.Hi < 0xFFFC) { return new object[] { (char)r.Lo, (char)r.Hi } } ; else { return new object[] { r.Lo, r.Hi } }; }); } else { method = _NewSet; args = set.IntegerSequence(false).Select(n => set.IsCharSet && n >= 32 && n < 0xFFFC ? (object)(char)n : (object)(int)n); } return (F.Attr(F.Id(S.Static), F.Id(S.Readonly), F.Var(SetType, setName, ApiCall(method, new RVList <LNode>(args.Select(a => F.Literal(a))), true)))); }
protected LNode GenerateSetDecl(PGIntSet set, Symbol setName) { var ranges = set.InternalRangeList(); IEnumerable<object> args; Symbol method; if (ranges.Count * 2 < set.SizeIgnoringInversion) { // use ranges method = _NewSetOfRanges; args = ranges.SelectMany(r => { if (r.Lo >= 32 && r.Hi < 0xFFFC) return new object[] { (char)r.Lo, (char)r.Hi }; else return new object[] { r.Lo, r.Hi }; }); } else { method = _NewSet; args = set.IntegerSequence(false).Select(n => set.IsCharSet && n >= 32 && n < 0xFFFC ? (object)(char)n : (object)(int)n); } return F.Attr(F.Id(S.Static), F.Id(S.Readonly), F.Var(SetType, setName, ApiCall(method, new RVList<LNode>(args.Select(a => F.Literal(a))), true))); }