public DataType AdaptForSimulacron() { if (Value == DataType.Text.Value) { return(DataType.Ascii); } if (_dataTypeEnum == null) { return(this); } switch (_dataTypeEnum) { case DataTypeEnum.Frozen: return(DataType.Frozen(InnerTypes.Single().AdaptForSimulacron())); case DataTypeEnum.List: return(DataType.List(InnerTypes.Single().AdaptForSimulacron())); case DataTypeEnum.Map: return(DataType.Map(InnerTypes.First().AdaptForSimulacron(), InnerTypes.ElementAt(1).AdaptForSimulacron())); case DataTypeEnum.Set: return(DataType.Set(InnerTypes.Single().AdaptForSimulacron())); case DataTypeEnum.Tuple: return(DataType.Tuple(InnerTypes.Select(t => t.AdaptForSimulacron()).ToArray())); default: throw new InvalidOperationException("Unrecognized data type enum"); } }
public string GetFqTypeName() { if (InnerTypes == null) { return(DataType.SingleFqTypeNames[this]); } if (Value.StartsWith("set<")) { return($"{DataType.SetTypeName}({InnerTypes.Single().GetFqTypeName()})"); } else if (Value.StartsWith("map<")) { return($"{DataType.MapTypeName}({InnerTypes.First().GetFqTypeName()},{InnerTypes.Skip(1).First().GetFqTypeName()})"); } else if (Value.StartsWith("list<")) { return($"{DataType.ListTypeName}({InnerTypes.Single().GetFqTypeName()})"); } else if (Value.StartsWith("frozen<")) { return($"{DataType.FrozenTypeName}({InnerTypes.Single().GetFqTypeName()})"); } else if (Value.StartsWith("tuple<")) { return($"{DataType.TupleTypeName}({string.Join(",", InnerTypes.Select(i => i.GetFqTypeName()))})"); } throw new InvalidOperationException("Unrecognized data type."); }
public override bool Equals(object obj) { return(obj is DataType type && (InnerTypes == null ? type.InnerTypes == null : (type.InnerTypes != null && InnerTypes.SequenceEqual(type.InnerTypes))) && Value == type.Value); }