示例#1
0
        private SwiftType TranslateEnum(TypeProxy enumType)
        {
            string name;

            if (!_swiftTypesToNames.TryGetValue(enumType, out name))
            {
                ErrorHandler.Error("Skipping undefined enum '{0}'.", enumType.FullName);

                return(null);
            }

            var swiftEnum = new SwiftEnum(name)
            {
                BriefComment = _documentation.GetTypeSummary(enumType),
            };

            var baseType = enumType.GetEnumUnderlyingType();

            if (baseType != _appDomain.ObjectType)
            {
                var baseSwiftType = TranslateType(baseType);

                if (baseType == null)
                {
                    ErrorHandler.Error("Skipping enum '{0}' because of undefined base class '{1}'.", enumType.FullName, baseType.FullName);

                    return(null);
                }

                swiftEnum.BaseType = baseSwiftType;
            }

            _swiftTypes.Add(enumType, swiftEnum);

            foreach (var value in enumType.GetEnumValues())
            {
                var member          = value.GetMember();
                var swiftValueName  = _filter.GetEnumName(value);
                var underlyingValue = _filter.GetUnderlyingEnumValue(value);

                var swiftValue = new SwiftEnumValue(swiftValueName, underlyingValue)
                {
                    BriefComment = _documentation.GetFieldSummary(member),
                };

                swiftEnum.AddValue(swiftValue);
            }

            return(swiftEnum);
        }