private void ParseTypeDocumentation(MoaiType type, Annotation[] annotations, MoaiType[] baseTypes, TypePosition typePosition) { // Check that there is a single @name annotation int nameAnnotationCount = annotations.OfType<NameAnnotation>().Count(); if (nameAnnotationCount == 0) { log.WarnFormat("Missing @name annotation. [{0}].", typePosition); } else if (nameAnnotationCount > 1) { log.WarnFormat("Multiple @name annotations. [{0}]", typePosition); } // Check that there is a single @text annotation int textAnnotationCount = annotations.OfType<TextAnnotation>().Count(); if (textAnnotationCount == 0) { log.WarnFormat("Missing @text annotation. [{0}]", typePosition); } else if (textAnnotationCount > 1) { log.WarnFormat("Multiple @text annotations. [{0}]", typePosition); } // Store base types type.BaseTypes.AddRange(baseTypes); // Parse annotations foreach (var annotation in annotations) { if (annotation is NameAnnotation) { // Nothing to do. Name is already set. Just make sure the annotation is correct. var nameAnnotation = (NameAnnotation) annotation; if (nameAnnotation.Value != type.Name) { log.WarnFormat("@name annotation has inconsistent value '{0}'. [{1}]", nameAnnotation.Value, typePosition); } } else if (annotation is TextAnnotation) { // Set type description type.Description = ((TextAnnotation) annotation).Value; } else if (annotation is FieldAnnotation) { // Add field (constant, flag, or attribute) var fieldAnnotation = (FieldAnnotation) annotation; MoaiField field = (annotation is ConstantAnnotation) ? new MoaiConstant() : (annotation is FlagAnnotation) ? (MoaiField) new MoaiFlag() : new MoaiAttribute(); field.OwningType = type; field.Name = fieldAnnotation.Name; field.Description = fieldAnnotation.Description; type.Members.Add(field); } else { log.WarnFormat("Unexpected {0} annotation. [{1}]", annotation.Command, typePosition); } } }
public MethodPosition(TypePosition typePosition, string memberName) : this(typePosition, typePosition.TypeName, memberName) { }