/// <summary> /// Fills the StructuredTypeInfo instance from the itree provided. /// </summary> /// <param name="itree"></param> /// <param name="referencedTypes">referenced structured types</param> /// <param name="referencedEntitySets">referenced entitysets</param> /// <param name="freeFloatingEntityConstructorTypes">free-floating entityConstructor types</param> /// <param name="discriminatorMaps">discriminator information for entity sets mapped using TPH pattern</param> /// <param name="relPropertyHelper">helper for rel properties</param> private void Process(Command itree, HashSet<md.TypeUsage> referencedTypes, HashSet<md.EntitySet> referencedEntitySets, HashSet<md.EntityType> freeFloatingEntityConstructorTypes, Dictionary<md.EntitySetBase, DiscriminatorMapInfo> discriminatorMaps, RelPropertyHelper relPropertyHelper) { PlanCompiler.Assert(null != itree, "null itree?"); m_stringType = itree.StringType; m_intType = itree.IntegerType; m_relPropertyHelper = relPropertyHelper; ProcessEntitySets(referencedEntitySets, freeFloatingEntityConstructorTypes); ProcessDiscriminatorMaps(discriminatorMaps); ProcessTypes(referencedTypes); }
private PreProcessor(PlanCompiler planCompilerState) : base(planCompilerState) { m_relPropertyHelper = new RelPropertyHelper(m_command.MetadataWorkspace, m_command.ReferencedRelProperties); }
/// <summary> /// Process Driver /// </summary> /// <param name="itree"></param> /// <param name="referencedTypes">structured types referenced in the query</param> /// <param name="referencedEntitySets">entitysets referenced in the query</param> /// <param name="freeFloatingEntityConstructorTypes">entity types that have "free-floating" entity constructors</param> /// <param name="discriminatorMaps">information on optimized discriminator patterns for entity sets</param> /// <param name="relPropertyHelper">helper for rel properties</param> /// <param name="typesNeedingNullSentinel">which types need a null sentinel</param> /// <param name="structuredTypeInfo"></param> internal static void Process(Command itree, HashSet<md.TypeUsage> referencedTypes, HashSet<md.EntitySet> referencedEntitySets, HashSet<md.EntityType> freeFloatingEntityConstructorTypes, Dictionary<md.EntitySetBase, DiscriminatorMapInfo> discriminatorMaps, RelPropertyHelper relPropertyHelper, HashSet<string> typesNeedingNullSentinel, out StructuredTypeInfo structuredTypeInfo) { structuredTypeInfo = new StructuredTypeInfo(typesNeedingNullSentinel); structuredTypeInfo.Process(itree, referencedTypes, referencedEntitySets, freeFloatingEntityConstructorTypes, discriminatorMaps, relPropertyHelper); }