/// <summary> /// The descendant's implementation of the decoding function. /// </summary> /// <param name="source">Source string to decode.</param> /// <returns></returns> protected override Metar DecodeCore(string source) { Metar ret = new Metar(); string p = source; ret.Type = new MetarPrefixDecoder().Decode(ref p); ret.IsCorrected = new CORDecoder { Required = false }.Decode(ref p); ret.ICAO = new ICAODecoder().Decode(ref p); ret.Date = new DayHourMinuteDecoder().Decode(ref p); ret.IsMissing = new NILDecoder { Required = false }.Decode(ref p); ret.IsAUTO = new AUTODecoder { Required = false }.Decode(ref p); ret.Wind = new WindWithVariabilityDecoder().Decode(ref p); ret.Visibility = new VisibilityForMetarDecoder().Decode(ref p); ret.Visibility.Runways = new RunwayVisibilityListDecoder().Decode(ref p); var phenomena = new PhenomInfoDecoder { Required = false }.Decode(ref p) ?? new PhenomInfo(); ret.Phenomena = phenomena; ret.Clouds = new CloudInfoWithNCDDecoder { Required = false }.Decode(ref p); ret.Temperature = new TemperatureDecoder().Decode(ref p); ret.DewPoint = new DewPointDecoder().Decode(ref p); ret.Pressure = new PressureInfoDecoder().Decode(ref p); ret.RePhenomens = new RePhenomInfoDecoder().Decode(ref p); ret.WindShears = new WindShearInfoDecoder().Decode(ref p); ret.SeaSurfaceTemperature = new SeaSurfaceTemperatureDecoder { Required = false }.Decode(ref p); ret.SeaState = new SeaStateDecoder { Required = false }.Decode(ref p); ret.RunwayConditions = new RunwayConditionInfoDecoder().Decode(ref p); ret.Trend = new TrendInfoForMetarDecoder { Required = false }.Decode(ref p); ret.Remark = new RemarkDecoder { Required = false }.Decode(ref p); return(ret); }
/// <summary> /// The descendant's implementation of the decoding function. /// </summary> /// <param name="source">Source string to decode.</param> /// <returns></returns> protected override Metar _Decode(string source) { Metar ret = new Metar(); string p = source; ret.Type = new MetarPrefixDecoder().Decode(ref p); ret.IsCorrected = new CORDecoder() { Required = false }.Decode(ref p); ret.ICAO = new ICAOWithNumbersDecoder().Decode(ref p); ret.Date = new DayHourMinuteDecoder().Decode(ref p); ret.IsMissing = new NILDecoder() { Required = false }.Decode(ref p); ret.IsAUTO = new AUTODecoder() { Required = false }.Decode(ref p); var wind = new WindWithVariabilityDecoder() { Required = false }.Decode(ref p); if (wind == null) { wind = new WindWithVariability(); } ret.Wind = wind; var visib = new VisibilityForMetarDecoder() { Required = false }.Decode(ref p); if (visib == null) { visib = new VisibilityForMetar(); } ret.Visibility = visib; ret.Visibility.Runways = new RunwayVisibilityListDecoder() { Required = false }.Decode(ref p); var phenomens = new PhenomInfoDecoder() { Required = false }.Decode(ref p); if (phenomens == null) { phenomens = new Types.PhenomInfo(); } ret.Phenomens = phenomens; ret.Clouds = new CloudInfoWithNCDDecoder() { Required = false }.Decode(ref p); ret.Temperature = new TemperatureDecoder() { Required = false }.Decode(ref p); ret.DewPoint = new DewPointDecoder() { Required = false }.Decode(ref p); PressureInfo pi = new PressureInfoDecoder() { Required = false }.Decode(ref p); if (pi == null) { pi = new PressureInfo() { QNH = 1013 } } ; ret.Pressure = pi; ret.RePhenomens = new RePhenomInfoDecoder() { Required = false }.Decode(ref p); ret.WindShears = new WindShearInfoDecoder() { Required = false }.Decode(ref p); ret.SeaSurfaceTemperature = new SeaSurfaceTemperatureDecoder() { Required = false }.Decode(ref p); ret.SeaState = new SeaStateDecoder() { Required = false }.Decode(ref p); ret.RunwayConditions = new RunwayConditionInfoDecoder() { Required = false }.Decode(ref p); ret.Trend = new TrendInfoForMetarDecoder() { Required = false }.Decode(ref p); ret.Remark = new RemarkDecoder() { Required = false }.Decode(ref p); return(ret); } }