protected CodeDomTypeMetadata(CodeType codeType, bool isNullable, bool isTask, CodeDomFileMetadata file) { this.codeType = codeType; this.isNullable = isNullable; this.isTask = isTask; this.file = file; }
internal static IEnumerable<IEnumValueMetadata> FromCodeElements(CodeElements codeElements, CodeDomFileMetadata file) { var value = -1; foreach (var codeVariable in codeElements.OfType<CodeVariable2>()) { if (codeVariable.InitExpression == null) value++; else { string initExpression = codeVariable.InitExpression.ToString(); if (int.TryParse(initExpression, out value) == false) { // Handle init expressions from char constants e.g. 'A' = 65 if (initExpression.Length == 3 && initExpression.StartsWith("'") && initExpression.EndsWith("'")) { value = initExpression[1]; } else if (initExpression.StartsWith("0x", StringComparison.OrdinalIgnoreCase)) { var convertedValue = _converter.ConvertFromString(initExpression); value = (int?)convertedValue ?? -1; } else { value = -1; } } } yield return new CodeDomEnumValueMetadata(codeVariable, file, value); } }
public static IEnumerable<ITypeMetadata> LoadGenericTypeArguments(bool isGeneric, string typeFullName, CodeDomFileMetadata file) { if (isGeneric == false) return new ITypeMetadata[0]; return LazyCodeDomTypeMetadata.ExtractGenericTypeNames(typeFullName).Select(fullName => { if (fullName.EndsWith("[]")) fullName = $"System.Collections.Generic.ICollection<{fullName.TrimEnd('[', ']')}>"; var isNullable = fullName.EndsWith("?") || fullName.StartsWith("System.Nullable<"); if (isNullable) { fullName = fullName.EndsWith("?") ? fullName.TrimEnd('?') : fullName.Substring(16, fullName.Length - 17); return new LazyCodeDomTypeMetadata(fullName, true, false, file); } var isTask = fullName.StartsWith("System.Threading.Tasks.Task"); if (isTask) { fullName = fullName.Contains("<") ? fullName.Substring(28, fullName.Length - 29) : "System.Void"; isNullable = fullName.EndsWith("?") || fullName.StartsWith("System.Nullable<"); if (isNullable) { fullName = fullName.EndsWith("?") ? fullName.TrimEnd('?') : fullName.Substring(16, fullName.Length - 17); return new LazyCodeDomTypeMetadata(fullName, true, true, file); } return new LazyCodeDomTypeMetadata(fullName, false, true, file); } return new LazyCodeDomTypeMetadata(fullName, false, false, file); }); }
internal static IEnumerable<IEnumValueMetadata> FromCodeElements(CodeElements codeElements, CodeDomFileMetadata file) { var value = -1; foreach (var codeVariable in codeElements.OfType<CodeVariable2>()) { if (codeVariable.InitExpression == null) value++; else value = Convert.ToInt32(codeVariable.InitExpression); yield return new CodeDomEnumValueMetadata(codeVariable, file, value); } }
private CodeDomConstantMetadata(CodeVariable2 codeVariable, CodeDomFileMetadata file) : base(codeVariable, file) { var initValue = codeVariable.InitExpression.ToString(); var value = initValue == "null" ? string.Empty : initValue; if (value.Length >= 2 && value.StartsWith("\"") && value.EndsWith("\"")) { Value = value.Substring(1, value.Length - 2).Replace("\\\"", "\""); } else { Value = value; } }
private static ITypeMetadata GetType(dynamic element, CodeDomFileMetadata file) { var isGenericTypeArgument = element.Type.TypeKind == (int)vsCMTypeRef.vsCMTypeRefOther && element.Type.AsFullName.Split('.').Length == 1; if (isGenericTypeArgument) { return(new GenericTypeMetadata(element.Type.AsFullName)); } var isArray = element.Type.TypeKind == (int)vsCMTypeRef.vsCMTypeRefArray; if (isArray) { var name = element.Type.ElementType.AsFullName; return(new LazyCodeDomTypeMetadata($"System.Collections.Generic.ICollection<{name}>", false, false, file)); } CodeType codeType = element.Type.CodeType; var isNullable = codeType.FullName.EndsWith("?") || codeType.FullName.StartsWith("System.Nullable<"); if (isNullable) { var name = codeType.FullName; name = name.EndsWith("?") ? name.TrimEnd('?') : name.Substring(16, name.Length - 17); return(new LazyCodeDomTypeMetadata(name, true, false, file)); } var isTask = codeType.FullName.StartsWith("System.Threading.Tasks.Task"); if (isTask) { var name = codeType.FullName; name = name.Contains("<") ? name.Substring(28, name.Length - 29) : "System.Void"; isNullable = name.EndsWith("?") || name.StartsWith("System.Nullable<"); if (isNullable) { name = name.EndsWith("?") ? name.TrimEnd('?') : name.Substring(16, name.Length - 17); return(new LazyCodeDomTypeMetadata(name, true, true, file)); } return(new LazyCodeDomTypeMetadata(name, false, true, file)); } return(new CodeDomTypeMetadata(codeType, false, false, file)); }
private static ITypeMetadata GetType(dynamic element, CodeDomFileMetadata file) { //try //{ var isGenericTypeArgument = element.Type.TypeKind == (int)vsCMTypeRef.vsCMTypeRefOther && element.Type.AsFullName.Split('.').Length == 1; if (isGenericTypeArgument) { return(new GenericTypeMetadata(element.Type.AsFullName)); } var isArray = element.Type.TypeKind == (int)vsCMTypeRef.vsCMTypeRefArray; if (isArray) { var name = element.Type.ElementType.AsFullName; return(new LazyCodeDomTypeMetadata($"System.Collections.Generic.ICollection<{name}>", false, file)); } CodeType codeType = element.Type.CodeType; var isNullable = codeType.FullName.EndsWith("?") || codeType.FullName.StartsWith("System.Nullable<"); if (isNullable) { var name = codeType.FullName; name = name.EndsWith("?") ? name.TrimEnd('?') : name.Substring(16, name.Length - 17); return(new LazyCodeDomTypeMetadata(name, true, file)); } return(new CodeDomTypeMetadata(codeType, false, file)); //} //catch (NotImplementedException) //{ // return new LazyCodeDomType<T>(fullName, parent); //} }
private CodeDomInterfaceMetadata(CodeInterface2 codeInterface, CodeDomFileMetadata file) { this.codeInterface = codeInterface; this.file = file; }
private CodeDomMethodMetadata(CodeFunction2 codeFunction, CodeDomFileMetadata file) { this.codeFunction = codeFunction; this.file = file; }
protected CodeDomFieldMetadata(CodeVariable2 codeVariable, CodeDomFileMetadata file) { this.codeVariable = codeVariable; this.file = file; }
internal new static IEnumerable <IConstantMetadata> FromCodeElements(CodeElements codeElements, CodeDomFileMetadata file) { return(codeElements.OfType <CodeVariable2>().Where(v => v.IsConstant && v.Access == vsCMAccess.vsCMAccessPublic) .Select(v => new CodeDomConstantMetadata(v, file))); }
private CodeDomInterfaceMetadata(CodeInterface2 codeInterface, CodeDomFileMetadata file) { _codeInterface = codeInterface; _file = file; }
private CodeDomClassMetadata(CodeClass2 codeClass, CodeDomFileMetadata file) { this.codeClass = codeClass; this.file = file; }
private CodeDomEventMetadata(CodeEvent codeEvent, CodeDomFileMetadata file) { this.codeEvent = codeEvent; this.file = file; }
internal static IEnumerable <IEventMetadata> FromCodeElements(CodeElements codeElements, CodeDomFileMetadata file) { return(codeElements.OfType <CodeEvent>().Where(f => f.Access == vsCMAccess.vsCMAccessPublic && f.IsShared == false).Select(f => new CodeDomEventMetadata(f, file))); }
private CodeDomEnumValueMetadata(CodeVariable2 codeVariable, CodeDomFileMetadata file, int value) { this.codeVariable = codeVariable; this.file = file; this.value = value; }
public static IEnumerable <ITypeMetadata> LoadGenericTypeArguments(bool isGeneric, string typeFullName, CodeDomFileMetadata file) { if (isGeneric == false) { return(new ITypeMetadata[0]); } return(LazyCodeDomTypeMetadata.ExtractGenericTypeNames(typeFullName).Select(fullName => { if (fullName.EndsWith("[]")) { fullName = $"System.Collections.Generic.ICollection<{fullName.TrimEnd('[', ']')}>"; } var isNullable = fullName.EndsWith("?") || fullName.StartsWith("System.Nullable<"); if (isNullable) { fullName = fullName.EndsWith("?") ? fullName.TrimEnd('?') : fullName.Substring(16, fullName.Length - 17); return new LazyCodeDomTypeMetadata(fullName, true, false, file); } var isTask = fullName.StartsWith("System.Threading.Tasks.Task"); if (isTask) { fullName = fullName.Contains("<") ? fullName.Substring(28, fullName.Length - 29) : "System.Void"; isNullable = fullName.EndsWith("?") || fullName.StartsWith("System.Nullable<"); if (isNullable) { fullName = fullName.EndsWith("?") ? fullName.TrimEnd('?') : fullName.Substring(16, fullName.Length - 17); return new LazyCodeDomTypeMetadata(fullName, true, true, file); } return new LazyCodeDomTypeMetadata(fullName, false, true, file); } return new LazyCodeDomTypeMetadata(fullName, false, false, file); })); }
private CodeDomDelegateMetadata(CodeDelegate2 codeDelegate, CodeDomFileMetadata file) { this.codeDelegate = codeDelegate; this.file = file; }
private CodeDomEnumMetadata(CodeEnum codeEnum, CodeDomFileMetadata file) { this.codeEnum = codeEnum; this.file = file; }
internal static IEnumerable <IDelegateMetadata> FromCodeElements(CodeElements codeElements, CodeDomFileMetadata file) { return(codeElements.OfType <CodeDelegate2>().Where(d => d.Access == vsCMAccess.vsCMAccessPublic).Select(d => FromCodeDelegate(d, file))); }
internal static IEnumerable <IEnumMetadata> FromCodeElements(CodeElements codeElements, CodeDomFileMetadata file) { return(codeElements.OfType <CodeEnum>().Where(e => e.Access == vsCMAccess.vsCMAccessPublic).Select(e => new CodeDomEnumMetadata(e, file))); }
internal static IClassMetadata FromCodeClass(CodeClass2 codeClass, CodeDomFileMetadata file) { return(codeClass == null || codeClass.Access != vsCMAccess.vsCMAccessPublic || codeClass.FullName == "System.Object" ? null : new CodeDomClassMetadata(codeClass, file)); }
private static ITypeMetadata GetType(dynamic element, CodeDomFileMetadata file) { var isGenericTypeArgument = element.Type.TypeKind == (int)vsCMTypeRef.vsCMTypeRefOther && element.Type.AsFullName.Split('.').Length == 1; if (isGenericTypeArgument) { return new GenericTypeMetadata(element.Type.AsFullName); } var isArray = element.Type.TypeKind == (int)vsCMTypeRef.vsCMTypeRefArray; if (isArray) { var name = element.Type.ElementType.AsFullName; return new LazyCodeDomTypeMetadata($"System.Collections.Generic.ICollection<{name}>", false, false, file); } CodeType codeType = element.Type.CodeType; var isNullable = codeType.FullName.EndsWith("?") || codeType.FullName.StartsWith("System.Nullable<"); if (isNullable) { var name = codeType.FullName; name = name.EndsWith("?") ? name.TrimEnd('?') : name.Substring(16, name.Length - 17); return new LazyCodeDomTypeMetadata(name, true, false, file); } var isTask = codeType.FullName.StartsWith("System.Threading.Tasks.Task"); if (isTask) { var name = codeType.FullName; name = name.Contains("<") ? name.Substring(28, name.Length - 29) : "System.Void"; isNullable = name.EndsWith("?") || name.StartsWith("System.Nullable<"); if (isNullable) { name = name.EndsWith("?") ? name.TrimEnd('?') : name.Substring(16, name.Length - 17); return new LazyCodeDomTypeMetadata(name, true, true, file); } return new LazyCodeDomTypeMetadata(name, false, true, file); } return new CodeDomTypeMetadata(codeType, false, false, file); }
internal static IDelegateMetadata FromCodeDelegate(CodeDelegate2 codeElement, CodeDomFileMetadata file) { return new CodeDomDelegateMetadata(codeElement, file); }
internal static IEnumerable<IAttributeMetadata> FromCodeElements(CodeElements codeElements, CodeDomFileMetadata file) { return codeElements.OfType<CodeAttribute2>().Select(a => new CodeDomAttributeMetadata(a, file)); }
internal static IClassMetadata FromCodeClass(CodeClass2 codeClass, CodeDomFileMetadata file) { return codeClass == null || codeClass.Access != vsCMAccess.vsCMAccessPublic || codeClass.FullName == "System.Object" ? null : new CodeDomClassMetadata(codeClass, file); }
public static ITypeMetadata FromCodeElement(CodeParameter2 codeVariable, CodeDomFileMetadata file) { return GetType(codeVariable, file); }
internal static IEnumerable<IMethodMetadata> FromCodeElements(CodeElements codeElements, CodeDomFileMetadata file) { return codeElements.OfType<CodeFunction2>().Where(f => f.Access == vsCMAccess.vsCMAccessPublic && f.FunctionKind != vsCMFunction.vsCMFunctionConstructor && f.IsShared == false).Select(f => new CodeDomMethodMetadata(f, file)); }
private CodeDomAttributeMetadata(CodeAttribute2 codeAttribute, CodeDomFileMetadata file) { this.codeAttribute = codeAttribute; this.file = file; }
internal static IEnumerable<IFieldMetadata> FromCodeElements(CodeElements codeElements, CodeDomFileMetadata file) { return codeElements.OfType<CodeVariable2>().Where(v => v.Access == vsCMAccess.vsCMAccessPublic && v.IsConstant == false && v.IsShared == false).Select(v => new CodeDomFieldMetadata(v, file)); }
internal static IEnumerable<IInterfaceMetadata> FromCodeElements(CodeElements codeElements, CodeDomFileMetadata file) { return codeElements.OfType<CodeInterface2>().Where(i => i.Access == vsCMAccess.vsCMAccessPublic).Select(i => new CodeDomInterfaceMetadata(i, file)); }
internal static IEnumerable <IEnumValueMetadata> FromCodeElements(CodeElements codeElements, CodeDomFileMetadata file) { var value = -1; foreach (var codeVariable in codeElements.OfType <CodeVariable2>()) { if (codeVariable.InitExpression == null) { value++; } else { string initExpression = codeVariable.InitExpression.ToString(); if (int.TryParse(initExpression, out value) == false) { // Handle init expressions from char constants e.g. 'A' = 65 if (initExpression.Length == 3 && initExpression.StartsWith("'") && initExpression.EndsWith("'")) { value = initExpression[1]; } else { value = -1; } } } yield return(new CodeDomEnumValueMetadata(codeVariable, file, value)); } }
internal static IEnumerable <IMethodMetadata> FromCodeElements(CodeElements codeElements, CodeDomFileMetadata file) { return(codeElements.OfType <CodeFunction2>().Where(f => f.Access == vsCMAccess.vsCMAccessPublic && f.FunctionKind != vsCMFunction.vsCMFunctionConstructor && f.IsShared == false).Select(f => new CodeDomMethodMetadata(f, file))); }
internal static IDelegateMetadata FromCodeDelegate(CodeDelegate2 codeElement, CodeDomFileMetadata file) { return(new CodeDomDelegateMetadata(codeElement, file)); }
internal static IEnumerable<IEnumMetadata> FromCodeElements(CodeElements codeElements, CodeDomFileMetadata file) { return codeElements.OfType<CodeEnum>().Where(e => e.Access == vsCMAccess.vsCMAccessPublic).Select(e => new CodeDomEnumMetadata(e, file)); }
public LazyCodeDomTypeMetadata(string fullName, bool isNullable, CodeDomFileMetadata file) : base(null, isNullable, file) { this.fullName = fullName; this.file = file; }
private CodeDomPropertyMetadata(CodeProperty2 codeProperty, CodeDomFileMetadata file) { this.codeProperty = codeProperty; this.file = file; }
internal static IEnumerable <IClassMetadata> FromCodeElements(CodeElements codeElements, CodeDomFileMetadata file) { return(codeElements.OfType <CodeClass2>().Where(c => c.Access == vsCMAccess.vsCMAccessPublic && c.FullName != "System.Object").Select(c => new CodeDomClassMetadata(c, file))); }
private CodeDomEnumValueMetadata(CodeVariable2 codeVariable, CodeDomFileMetadata file, long value) { this.codeVariable = codeVariable; this.file = file; this.value = value; }
private CodeDomParameterMetadata(CodeParameter2 codeParameter, CodeDomFileMetadata file) { this.codeParameter = codeParameter; this.file = file; }
internal static IEnumerable<IParameterMetadata> FromCodeElements(CodeElements codeElements, CodeDomFileMetadata file) { return codeElements.OfType<CodeParameter2>().Select(p => new CodeDomParameterMetadata(p, file)); }
internal static IEnumerable<IDelegateMetadata> FromCodeElements(CodeElements codeElements, CodeDomFileMetadata file) { return codeElements.OfType<CodeDelegate2>().Where(d => d.Access == vsCMAccess.vsCMAccessPublic).Select(d => FromCodeDelegate(d, file)); }
public LazyCodeDomTypeMetadata(string fullName, bool isNullable, bool isType, CodeDomFileMetadata file) : base(null, isNullable, isType, file) { this.fullName = fullName; this.file = file; }
internal static IEnumerable <IInterfaceMetadata> FromCodeElements(CodeElements codeElements, CodeDomFileMetadata file) { return(codeElements.OfType <CodeInterface2>().Where(i => i.Access == vsCMAccess.vsCMAccessPublic).Select(i => new CodeDomInterfaceMetadata(i, file))); }
internal static IEnumerable<IClassMetadata> FromCodeElements(CodeElements codeElements, CodeDomFileMetadata file) { return codeElements.OfType<CodeClass2>().Where(c => c.Access == vsCMAccess.vsCMAccessPublic && c.FullName != "System.Object").Select(c => new CodeDomClassMetadata(c, file)); }
internal static IEnumerable <IPropertyMetadata> FromCodeElements(CodeElements codeElements, CodeDomFileMetadata file) { return(codeElements.OfType <CodeProperty2>().Where(p => p.Access == vsCMAccess.vsCMAccessPublic && p.IsShared == false).Select(p => new CodeDomPropertyMetadata(p, file))); }
private CodeDomConstantMetadata(CodeVariable2 codeVariable, CodeDomFileMetadata file) : base(codeVariable, file) { }
internal static IEnumerable <IEnumValueMetadata> FromCodeElements(CodeElements codeElements, CodeDomFileMetadata file) { long value = -1; foreach (var codeVariable in codeElements.OfType <CodeVariable2>()) { if (codeVariable.InitExpression == null) { value++; } else { string initExpression = codeVariable.InitExpression.ToString(); if (long.TryParse(initExpression, out value) == false) { // Handle init expressions from char constants e.g. 'A' = 65 if (initExpression.Length == 3 && initExpression.StartsWith("'") && initExpression.EndsWith("'")) { value = initExpression[1]; } else if (initExpression.StartsWith("0x", StringComparison.OrdinalIgnoreCase)) { var convertedValue = _converter.ConvertFromString(initExpression); value = (long?)convertedValue ?? -1; } else { value = -1; } } } yield return(new CodeDomEnumValueMetadata(codeVariable, file, value)); } }
internal static IEnumerable<IEventMetadata> FromCodeElements(CodeElements codeElements, CodeDomFileMetadata file) { return codeElements.OfType<CodeEvent>().Where(f => f.Access == vsCMAccess.vsCMAccessPublic && f.IsShared == false).Select(f => new CodeDomEventMetadata(f, file)); }
internal static IEnumerable <IParameterMetadata> FromCodeElements(CodeElements codeElements, CodeDomFileMetadata file) { return(codeElements.OfType <CodeParameter2>().Select(p => new CodeDomParameterMetadata(p, file))); }