Unit(FullName fqn, Attributes attributes, IParameter ty, IParameter cm, List <IParameter> parameters, List <IUnit> subUnits) { _fqn = fqn; _name = attributes.UnitName; _attrs = attributes; _type = UnitType.FromName(ty.Values[0].StringValue); _comment = cm == null ? string.Empty : cm.Values[0].StringValue; Parameters = new NonNullCollection <IParameter>(parameters.AsReadOnly()); SubUnits = new NonNullCollection <IUnit>(subUnits.AsReadOnly()); }
/// <summary> /// 条件にマッチするユニットが存在するかどうかを確認します。 /// </summary> /// <returns>存在する場合は<c>true</c></returns> /// <param name="self"></param> /// <param name="type">ユニット種別</param> public static bool Any(this NonNullCollection <IUnit> self, string type) { return(self.Any(UnitType.FromName(type))); }
/// <summary> /// このユニット群の子孫ユニットを探索して返します。 /// </summary> /// <returns>子孫ユニットのシーケンス</returns> /// <param name="self"></param> /// <param name="type">ユニット種別</param> public static IEnumerable <IUnit> TheirDescendants(this IEnumerable <IUnit> self, string type) { return(self.TheirDescendants(UnitType.FromName(type))); }
/// <summary> /// 保有する子ユニットによるフィルタリングを行います。 /// </summary> /// <returns>フィルタリングされたシーケンス</returns> /// <param name="self"></param> /// <param name="type">子ユニットのユニット種別</param> public static IEnumerable <IUnit> HasChildren(this IEnumerable <IUnit> self, string type) { var expected = UnitType.FromName(type); return(self.Where(u => u.SubUnits.Any(s => s.Type == expected))); }
/// <summary> /// このユニット群の子ユニットを探索して返します。 /// </summary> /// <returns>子ユニットのシーケンス</returns> /// <param name="self"></param> /// <param name="type">ユニット種別</param> public static IEnumerable <IUnit> TheirChildren(this IEnumerable <IUnit> self, string type) { return(self.TheirChildren(UnitType.FromName(type))); }
/// <summary> /// このユニットおよびこのユニットの子孫ユニットを探索して返します。 /// </summary> /// <returns>子孫ユニットのシーケンス</returns> /// <param name="self"></param> /// <param name="type">ユニット種別</param> public static IEnumerable <IUnit> ItSelfAndDescendants(this IUnit self, string type) { return(self.ItSelfAndDescendants(UnitType.FromName(type))); }
/// <summary> /// このユニットおよびこのユニットの子ユニットを探索して返します。 /// </summary> /// <returns>このユニットおよび子ユニットのシーケンス</returns> /// <param name="self"></param> /// <param name="type">ユニット種別</param> public static IEnumerable <IUnit> ItSelfAndChildren(this IUnit self, string type) { return(self.ItSelfAndChildren(UnitType.FromName(type))); }
/// <summary> /// 条件にマッチする要素をすべて削除しその要素数を返します。 /// </summary> /// <returns>削除した要素の数</returns> /// <param name="self"></param> /// <param name="type">ユニット種別</param> /// <exception cref="NotSupportedException">コレクションがイミュータブルな場合</exception> public static int RemoveAll(this NonNullCollection <IUnit> self, string type) { return(self.RemoveAll(UnitType.FromName(type))); }
/// <summary> /// 条件にマッチする最初のユニットを返します。 /// 条件にマッチする要素がない場合は<c>null</c>を返します。 /// </summary> /// <returns>条件にマッチした要素</returns> /// <param name="self"></param> /// <param name="type">ユニット種別</param> public static IUnit FirstOrDefault(this NonNullCollection <IUnit> self, string type) { return(self.FirstOrDefault(UnitType.FromName(type))); }