public void TtranUnion() { UnionType ut = factory.CreateUnionType("foo", null); ut.AddAlternative(PrimitiveType.Word32); ut.AddAlternative(PrimitiveType.Word32); ut.AddAlternative(PrimitiveType.Word32); ut.AddAlternative(PrimitiveType.Word32); TypeTransformer trans = new TypeTransformer(factory, null, null); PrimitiveType dt = (PrimitiveType)ut.Accept(trans); Assert.AreEqual("word32", dt.ToString()); ut.AddAlternative(PrimitiveType.Real32); ut.AddAlternative(PrimitiveType.Int32); DataType d = ut.Accept(trans); Assert.AreEqual("(union \"foo\" (int32 u0) (real32 u1))", d.ToString()); }
public void TtranSimplify2() { UnionType u = new UnionType(null, null); u.Alternatives.Add(PrimitiveType.Word32); u.Alternatives.Add(new Pointer(PrimitiveType.Real32, 32)); TypeTransformer trans = new TypeTransformer(factory, store, null); DataType dt = u.Accept(trans); Assert.AreEqual("(ptr32 real32)", dt.ToString()); }
public override DataType VisitUnion(UnionType ut) { if (insideComplexType) { changed = true; NestedComplexTypeExtractor nctr = new NestedComplexTypeExtractor(factory, store); ut.Accept(nctr); return(CreateEquivalenceClass(ut)); } else { insideComplexType = true; return(base.VisitUnion(ut)); } }
public override DataType VisitUnion(UnionType ut) { // Do not transform user-defined types if (ut.UserDefined) { return(ut); } if (insideComplexType) { changed = true; NestedComplexTypeExtractor nctr = new NestedComplexTypeExtractor(factory, store); ut.Accept(nctr); return(CreateEquivalenceClass(ut)); } else { insideComplexType = true; return(base.VisitUnion(ut)); } }
public override DataType VisitUnion(UnionType ut) { // Do not transform user-defined types if (ut.UserDefined) return ut; if (insideComplexType) { changed = true; NestedComplexTypeExtractor nctr = new NestedComplexTypeExtractor(factory, store); ut.Accept(nctr); return CreateEquivalenceClass(ut); } else { insideComplexType = true; return base.VisitUnion(ut); } }
public void TtranSimplify2() { UnionType u = new UnionType(null, null); u.Alternatives.Add(PrimitiveType.Word32); u.Alternatives.Add(new Pointer(PrimitiveType.Real32, 4)); TypeTransformer trans = new TypeTransformer(factory, store, null); DataType dt = u.Accept(trans); Assert.AreEqual("(ptr real32)", dt.ToString()); }
public override DataType VisitUnion(UnionType ut) { if (insideComplexType) { changed = true; NestedComplexTypeExtractor nctr = new NestedComplexTypeExtractor(factory, store); ut.Accept(nctr); return CreateEquivalenceClass(ut); } else { insideComplexType = true; return base.VisitUnion(ut); } }