コード例 #1
0
ファイル: Guignol.cs プロジェクト: karno/Alicium-3.x
		private static void SolveR(Package e,ref List<Package> l)
		{
			var v = from p in Settings.Installed
				from q in p.Depend
				where q == e.Name
				select p;
			foreach(Package s in v)
			{
					if(!l.Contains(s))
					{
						l.Add(s);
					}
					SolveR(s,ref l);
			}
		}
コード例 #2
0
ファイル: Guignol.cs プロジェクト: karno/Alicium-3.x
		/// <summary>
		/// Solve the dependence of package.
		/// </summary>
		/// <returns>
		/// Packages that is needed to install.
		/// </returns>
		/// <param name='r'>
		/// A package that you want to solve its dependence. 
		/// </param>
		/// <exception cref='GuignolException'>
		/// Is thrown when some exception happens in solving dependence.
		/// </exception>
		public static Package[] SolveDepend(Package r,SolveType t)
		{
			try
			{
				var ret = new List<Package>();
				ret.Add(r);
				if(t == SolveType.Obverse)Solve(r,ref ret);
				else SolveR(r,ref ret);
				return ret.ToArray();
			}
			catch (Exception)
			{
				throw new GuignolException(
					"Some of Dependences isn't found from database." +
					"Please update repository datas and retry later.");
			}
		}
コード例 #3
0
ファイル: Guignol.cs プロジェクト: karno/Alicium-3.x
		private static void Solve(Package e,ref List<Package> l)
		{
			foreach(string s in e.Depend)
			{
					var ad=new List<Package>(Settings.PackList).Find(y=>y.Name==s);
					if(!l.Contains(ad))
					{
						l.Add(ad);
					}
					Solve(ad,ref l);
			}
		}
コード例 #4
0
ファイル: Manage.cs プロジェクト: karno/Alicium-3.x
		public static void Add(Package p)
		{
			var l = new List<string>(Settings.AutoExec);
					l.Add(p.Name);
					Settings.AutoExec = l.ToArray();
		}