コード例 #1
0
        public void RoundTripEnum()
        {
            ModuleDeclaration module   = ReflectToModules("public enum Foo {\ncase a, b, c\n } ", "SomeModule").Find(m => m.Name == "SomeModule");
            EnumDeclaration   fooClass = module.AllEnums.Where(cl => cl.Name == "Foo").FirstOrDefault();

            Assert.IsNotNull(fooClass);
            EnumDeclaration unrootedFoo = fooClass.MakeUnrooted() as EnumDeclaration;

            Entity entity = new Entity {
                SharpNamespace = "SomeModule",
                SharpTypeName  = "Foo",
                Type           = unrootedFoo
            };

            TypeDatabase db = new TypeDatabase();

            db.Add(entity);

            MemoryStream ostm = new MemoryStream();

            db.Write(ostm, "SomeModule");
            ostm.Seek(0, SeekOrigin.Begin);

            TypeDatabase dbread = new TypeDatabase();
            var          errors = dbread.Read(ostm);

            Utils.CheckErrors(errors);
            Entity entityRead = dbread.EntityForSwiftName("SomeModule.Foo");

            Assert.IsNotNull(entityRead);
            Assert.AreEqual(entity.SharpNamespace, entityRead.SharpNamespace);
            Assert.AreEqual(entity.SharpTypeName, entityRead.SharpTypeName);
            Assert.IsTrue(entity.Type is EnumDeclaration);
        }
コード例 #2
0
        EnumDeclaration ToEnumDeclaration(TypeDefinition definition)
        {
            var name       = definition.Name;
            var moduleName = definition.Namespace;

            TypeAggregator.RemapModuleAndName(platform, ref moduleName, ref name, TypeType.Enum);

            var module = ToModuleDeclaration(moduleName);

            var enumDeclaration = new EnumDeclaration {
                Name            = name,
                Access          = ToAccessibility(definition),
                Module          = module,
                ParentExtension = null,
                Kind            = TypeKind.Enum,
                Members         = new List <Member> (),
                IsObjC          = true,
                IsDeprecated    = false,
                IsUnavailable   = false,
            };

            foreach (var field in definition.Fields)
            {
                if (field.Name == "value__")
                {
                    continue;
                }
                enumDeclaration.Elements.Add(ToEnumElement(field));
            }
            return(enumDeclaration.MakeUnrooted() as EnumDeclaration);
        }