public ConstructorDefinitionTranslation( ConstructorInfo ctor, ITranslationSettings settings) { _accessibility = GetAccessibility(ctor); _typeNameTranslation = new TypeNameTranslation(ctor.DeclaringType, settings); _parametersTranslation = new ParameterSetDefinitionTranslation(ctor, settings); TranslationSize = _typeNameTranslation.TranslationSize + _parametersTranslation.TranslationSize; FormattingSize = settings.GetKeywordFormattingSize() + // <- for modifiers _typeNameTranslation.FormattingSize + _parametersTranslation.FormattingSize; }
public ParameterSetDefinitionTranslation( MethodBase method, ITranslationSettings settings) { _settings = settings; _parameters = method.GetParameters(); _parameterCount = _parameters.Length; if (_parameterCount == 0) { _parameterTranslations = Enumerable <ITranslatable> .EmptyArray; TranslationSize = 2; return; } _parameterTranslations = new ITranslatable[_parameterCount]; var translationSize = 6; var formattingSize = 0; var keywordFormattingSize = settings.GetKeywordFormattingSize(); var finalParameterIndex = _parameterCount - 1; for (var i = 0; ;) { var parameter = _parameters[i]; var parameterType = parameter.ParameterType; if (parameter.IsOut) { parameterType = parameterType.GetElementType(); formattingSize += keywordFormattingSize; } else if (parameterType.IsByRef) { parameterType = parameterType.GetElementType(); formattingSize += keywordFormattingSize; } else if (i == finalParameterIndex && parameter.IsParamsArray()) { formattingSize += keywordFormattingSize; } var typeNameTranslation = new TypeNameTranslation(parameterType, settings); translationSize += typeNameTranslation.TranslationSize; formattingSize += typeNameTranslation.FormattingSize; _parameterTranslations[i] = typeNameTranslation; ++i; if (i == _parameterCount) { break; } translationSize += 3; } TranslationSize = translationSize; FormattingSize = formattingSize; }
private MethodDefinitionTranslation( MethodInfo method, ITranslationSettings settings) { _accessibility = GetAccessibility(method); _modifiers = GetModifiers(method); _returnTypeTranslation = new TypeNameTranslation(method.ReturnType, settings); if (method.DeclaringType != null) { _declaringTypeNameTranslation = new TypeNameTranslation(method.DeclaringType, settings); } _methodName = method.Name; if (method.IsGenericMethod) { TranslationSize += 2; var genericArguments = method.GetGenericArguments(); _genericArgumentCount = genericArguments.Length; _genericArgumentTranslations = new ITranslatable[_genericArgumentCount]; for (var i = 0; ;) { var argumentTranslation = new TypeNameTranslation(genericArguments[i], settings); TranslationSize += argumentTranslation.TranslationSize; FormattingSize += argumentTranslation.FormattingSize; _genericArgumentTranslations[i] = argumentTranslation; ++i; if (i == _genericArgumentCount) { break; } TranslationSize += ", ".Length; } } else { _genericArgumentTranslations = Enumerable <ITranslatable> .EmptyArray; } _parametersTranslation = new ParameterSetDefinitionTranslation(method, settings); TranslationSize = _accessibility.Length + _modifiers.Length + _returnTypeTranslation.TranslationSize + _methodName.Length; var keywordFormattingSize = settings.GetKeywordFormattingSize(); FormattingSize = keywordFormattingSize + // <- For modifiers _returnTypeTranslation.FormattingSize; if (_declaringTypeNameTranslation != null) { TranslationSize += _declaringTypeNameTranslation.TranslationSize + 1; FormattingSize += _declaringTypeNameTranslation.FormattingSize; } }