public DependencyResolutionResult TryResolveDependencies(IPackageDescriptor packageDescriptor, IEnumerable<IPackageRepository> repositoriesToQuery) { var packageSelection = new PackageSelectionContext(); Debug.WriteLine("Resolving descriptor " + packageDescriptor.Dependencies.Select(x => x.ToString()).Join(", ")); for (int i = 0; i < MAX_RETRIES; i++) { var exclusionList = packageSelection.IncompatiblePackageVersions.Select(x => x.Key); var visitor = new DependencyVisitor(repositoriesToQuery, packageSelection, packageDescriptor.Dependencies, packageDescriptor.Overrides); var resolutionSucceeded = visitor.VisitDependencies(packageDescriptor.Dependencies); if (resolutionSucceeded == false) { var newExclusionList = packageSelection.IncompatiblePackageVersions.Select(x => x.Key); if (newExclusionList.Except(exclusionList).Any()) { packageSelection = new PackageSelectionContext(packageSelection.IncompatiblePackageVersions); continue; } } return Result(packageDescriptor, packageSelection, repositoriesToQuery, visitor.NotFound); } throw new InvalidOperationException(string.Format("OpenWrap tried {0} times to resolve the tree of dependencies and gave up.", MAX_RETRIES)); }
public void Max2() { Expression <Func <Entity, int?> > c = e => e.Range.Max(); var v = new DependencyVisitor(); v.Visit(c); }
public void Sum() { Expression <Func <Entity, int> > c = e => e.Collection .Where(o => o.Name != "mmm" && o.Number2 < 5) .Where(x => x.Number3 < 5) .Sum(en => en.Number) + 5; var v = new DependencyVisitor(); v.Visit(c); }
public void Min() { Expression <Func <Entity, int?> > c = e => e.Collection .Where(o => o.Name != "mmm" && o.Number2 < 5) .Where((o, i) => i < 4) .Min(m => m.NullableNumber); var v = new DependencyVisitor(); v.Visit(c); }
public void SelectMax() { Expression <Func <Entity, int> > c = e => e.Collection .Where(o => o.Number2 < 5) .Select(x => x.Child.Child) .Select(x => x.Child) .Select(x => x.Name).Select(s => s.Length).Max(); var v = new DependencyVisitor(); v.Visit(c); }
private static AccessorInfo ParseExpression(Expression expression) { var checkVisitor = new SkipCheckVisitor(); var checkExpression = checkVisitor.Visit(expression); var skipCheckFunction = Expression.Lambda <Func <Func <Type, LambdaExpression, bool>, bool> >(checkExpression, checkVisitor.Parameter).Compile(); var dependencyVisitor = new DependencyVisitor(); dependencyVisitor.Visit(expression); return(new AccessorInfo(skipCheckFunction, checkVisitor.DependencyPredicates, dependencyVisitor.Dependencies)); }
public virtual DbCacheKey GenerateQueryKey(Expression expression, DbCachingPolicy policy) { var hash = GetExpressionHash(expression); var key = _keysCache.GetOrAdd(hash.CombinedHash, key => { var visitor = new DependencyVisitor(); visitor.ExtractDependencies(expression); return(new DbCacheKey { Key = hash.CombinedHashString, EntitySets = visitor.Types.Select(x => GenerateDependencyKey(x)).ToArray() }); }); return(key); }
public IDescribeInterfaceList MakeInterfaces(Configuration config) { var files = new List <string>(); foreach (var file in config.NativeFiles) { if (string.IsNullOrWhiteSpace(file.Path)) { continue; } var fullpath = Path.GetFullPath(file.Path); if (!File.Exists(fullpath)) { Console.WriteLine("File does not exist: " + file.Path); continue; } files.Add(fullpath); } string[] arr = { "-x", "c++" }; arr = arr.Concat(config.Includes?.Select(x => "-I" + Path.GetFullPath(x))).ToArray(); var createIndex = clang.createIndex(0, 0); List <CXTranslationUnit> translationUnits = new List <CXTranslationUnit>(); foreach (var file in files) { Console.WriteLine($"Parsing: {Path.GetFileName(file)}"); var translationUnitError = clang.parseTranslationUnit2(createIndex, file, arr, 3, out CXUnsavedFile unsavedFile, 0, 0, out CXTranslationUnit translationUnit); if (translationUnitError != CXErrorCode.CXError_Success) { Console.WriteLine("Error: " + translationUnitError); var numDiagnostics = clang.getNumDiagnostics(translationUnit); for (uint i = 0; i < numDiagnostics; ++i) { var diagnostic = clang.getDiagnostic(translationUnit, i); Console.WriteLine(clang.getDiagnosticSpelling(diagnostic).ToString()); clang.disposeDiagnostic(diagnostic); } } else { translationUnits.Add(translationUnit); } } var classListInfo = new VirtualClassListInfo(); var baseVisitor = new DependencyVisitor(classListInfo, config); foreach (var tu in translationUnits) { clang.visitChildren(clang.getTranslationUnitCursor(tu), baseVisitor.Visit, new CXClientData(IntPtr.Zero)); } var visitors = new List <Visitor> { new DependencyVisitor(classListInfo, config), new AbstractClassVisitor(classListInfo, config), new StructVisitor(classListInfo, config), new EnumVisitor(classListInfo, config), new DelegateVisitor(classListInfo, config), }; foreach (var visitor in visitors) { foreach (var tu in translationUnits) { clang.visitChildren(clang.getTranslationUnitCursor(tu), visitor.Visit, new CXClientData(IntPtr.Zero)); } } return(classListInfo); }