public IEnumerable <CompletionData> GetControlCompletionData(IType baseType) { bool isSWC = baseType.FullName == "System.Web.UI.Control"; string aspPrefix = "asp:"; foreach (IType cls in WebTypeContext.ListSystemControlClasses(baseType, Project)) { yield return(new AspTagCompletionData(aspPrefix, cls)); } foreach (var rd in RegisteredTags) { if (!rd.IsValid()) { continue; } var ard = rd as AssemblyRegisterDirective; if (ard != null) { var dom = TypeCtx.ResolveAssembly(ard.Assembly); if (dom == null) { continue; } string prefix = ard.TagPrefix + ":"; foreach (IType cls in WebTypeContext.ListControlClasses(baseType, dom, ard.Namespace)) { yield return(new AspTagCompletionData(prefix, cls)); } continue; } if (!isSWC) { continue; } ControlRegisterDirective cd = rd as ControlRegisterDirective; if (cd != null) { yield return(new CompletionData(string.Concat(cd.TagPrefix, ":", cd.TagName), Gtk.Stock.GoForward)); } } //return controls from web.config foreach (var cd in TypeCtx.GetRegisteredTypeCompletionData(DirectoryPath, baseType)) { yield return(cd); } }
public string GetTypeName(string tagPrefix, string tagName, string htmlTypeAttribute) { if (tagPrefix == null || tagPrefix.Length < 1) { return(WebTypeContext.HtmlControlLookup(tagName, htmlTypeAttribute)); } if (0 == string.Compare(tagPrefix, "asp", StringComparison.OrdinalIgnoreCase)) { string systemType = TypeCtx.SystemTypeNameLookup(tagName); if (!string.IsNullOrEmpty(systemType)) { return(systemType); } } foreach (var rd in RegisteredTags) { if (string.Compare(rd.TagPrefix, tagPrefix, StringComparison.OrdinalIgnoreCase) != 0) { continue; } var ard = rd as AssemblyRegisterDirective; if (ard != null) { var dom = TypeCtx.ResolveAssembly(ard.Assembly); if (dom == null) { continue; } string fullName = WebTypeContext.AssemblyTypeNameLookup(dom, ard.Namespace, tagName); if (fullName != null) { return(fullName); } } var crd = rd as ControlRegisterDirective; if (crd != null && string.Compare(crd.TagName, tagName, StringComparison.OrdinalIgnoreCase) == 0) { string fullName = TypeCtx.GetUserControlTypeName(crd.Src, Doc.FileName); if (fullName != null) { return(fullName); } } } //returns null if type not found return(TypeCtx.GetRegisteredTypeName(DirectoryPath, tagPrefix, tagName)); }
public IType GetControlType(string tagPrefix, string tagName) { if (String.IsNullOrEmpty(tagPrefix)) { return(null); } IType type = null; if (0 == string.Compare(tagPrefix, "asp", StringComparison.OrdinalIgnoreCase)) { type = TypeCtx.SystemTypeLookup(tagName); if (type != null) { return(type); } } foreach (var rd in RegisteredTags) { if (string.Compare(rd.TagPrefix, tagPrefix, StringComparison.OrdinalIgnoreCase) != 0) { continue; } AssemblyRegisterDirective ard = rd as AssemblyRegisterDirective; if (ard != null) { string assembly = ard.Assembly; var dom = TypeCtx.ResolveAssembly(ard.Assembly); if (dom == null) { continue; } type = WebTypeContext.AssemblyTypeLookup(dom, ard.Namespace, tagName); if (type != null) { return(type); } continue; } var crd = rd as ControlRegisterDirective; if (crd != null && string.Compare(crd.TagName, tagName, StringComparison.OrdinalIgnoreCase) == 0) { return(TypeCtx.GetUserControlType(crd.Src, Doc.FileName)); } } //returns null if type not found return(TypeCtx.GetRegisteredType(DirectoryPath, tagPrefix, tagName)); }
/// <summary> /// Gets value indicating the given type is long or double or both but nothing else. /// </summary> /// <param name="tmask"></param> /// <returns></returns> protected bool IsNumberOnly(TypeRefMask tmask) { if (TypeCtx.IsLong(tmask) || TypeCtx.IsDouble(tmask)) { if (tmask.IsSingleType) { return(true); } return(!tmask.IsAnyType && TypeCtx.GetTypes(tmask).AllIsNumber()); } return(false); }
public override void VisitCFGCatchBlock(CatchBlock x) { VisitCFGBlockInit(x); // add catch control variable to the state Accept(x.Variable); x.TypeRef.Accept(this); State.SetLocalType(State.GetLocalHandle(x.Variable.Name.NameValue), TypeCtx.GetTypeMask(x.TypeRef.TypeRef)); // x.Variable.ResultType = x.TypeRef.ResolvedType; // VisitCFGBlockInternal(x); }
public override void VisitCFGCatchBlock(CatchBlock x) { VisitCFGBlockInit(x); // add catch control variable to the state Accept(x.Variable); VisitTypeRef(x.TypeRef); SetVar(x.Variable.Name.NameValue.Value, TypeCtx.GetTypeMask(x.TypeRef.TypeRef)); // x.Variable.ResultType = x.TypeRef.ResolvedType; // VisitCFGBlockInternal(x); }
public string GetTagPrefix(IType control) { if (control.Namespace == "System.Web.UI.WebControls") { return("asp"); } else if (control.Namespace == "System.Web.UI.HtmlControls") { return(string.Empty); } foreach (var rd in RegisteredTags) { var ard = rd as AssemblyRegisterDirective; if (ard != null && ard.Namespace == control.Namespace) { return(ard.TagPrefix); } } // returns null if no result found return(TypeCtx.GetControlPrefix(DirectoryPath, control)); }
public IList <ProjectDom> GetDoms() { var asms = new HashSet <string> (Project.RegistrationCache.GetAssembliesForPath(DirectoryPath)); foreach (var s in Doc.Info.Assemblies) { asms.Add(s.Name); } var doms = new List <ProjectDom> (); doms.Add(TypeCtx.ProjectDom); foreach (var asmName in asms) { var dom = TypeCtx.ResolveAssembly(asmName); if (dom != null) { doms.Add(dom); } } return(doms); }
/// <summary> /// Gets value indicating the given type represents only array types. /// </summary> protected bool IsArrayOnly(TypeRefMask tmask) { return(!tmask.IsVoid && !tmask.IsAnyType && TypeCtx.GetTypes(tmask).AllIsArray()); }
/// <summary> /// Gets value indicating the given type represents only class types. /// </summary> protected bool IsClassOnly(TypeRefMask tmask) { return(!tmask.IsVoid && !tmask.IsAnyType && TypeCtx.GetTypes(tmask).AllIsObject()); }