public void AddDefinedTypeTest3() { NativeSymbolBag bag = new NativeSymbolBag(); NativeStruct definedNt1 = new NativeStruct("s1"); NativeStruct definedNt2 = new NativeStruct("s1"); bag.AddDefinedType(definedNt1); Assert.Throws <ArgumentException>(() => bag.AddDefinedType(definedNt2)); }
public CodeTypeDeclarationCollection ConvertToCodeDom(NativeDefinedType definedNt, ErrorProvider ep) { NativeSymbolBag bag = new NativeSymbolBag(_storage); bag.AddDefinedType(definedNt); return(ConvertBagToCodeDom(bag, ep)); }
public void Iterate3() { NativeStruct nt1 = new NativeStruct(); nt1.Name = "s1"; NativeStruct nt2 = new NativeStruct(); nt2.Name = "s2"; NativeSymbolBag bag = new NativeSymbolBag(); bag.AddDefinedType(nt1); bag.AddDefinedType(nt2); VerifyReachable(bag, "s1", "s2"); }
public void AddDefinedTypeTest2() { NativeSymbolBag bag = new NativeSymbolBag(); NativeStruct definedNt1 = new NativeStruct("s1"); NativeStruct definedNt2 = new NativeStruct("s2"); bag.AddDefinedType(definedNt1); bag.AddDefinedType(definedNt2); NativeType ret1 = null; NativeType ret2 = null; Assert.True(bag.TryGetType(definedNt1.DisplayName, out ret1)); Assert.True(bag.TryGetType(definedNt2.DisplayName, out ret2)); Assert.Same(ret1, definedNt1); Assert.Same(ret2, definedNt2); }
public void Invalid2() { NativeSymbolBag bag = new NativeSymbolBag(StorageFactory.CreateStandard()); NativeEnum e1 = new NativeEnum("e1"); e1.AddValue("v1", "(S1)5"); bag.AddDefinedType(e1); VerifyEnumValue(bag, e1, "v1", "\"(S1)5\""); }
public void Value2() { NativeSymbolBag bag = new NativeSymbolBag(); NativeEnum ntEnum = new NativeEnum("Enum1"); ntEnum.AddValue("v1", "1"); ntEnum.AddValue("v2", "v1+1"); bag.AddDefinedType(ntEnum); Assert.Equal(1, bag.FindUnresolvedNativeValues().Count); Assert.True(bag.TryResolveSymbolsAndValues()); }
public void Gen4() { NativeSymbolBag bag = new NativeSymbolBag(); bag.AddConstant(new NativeConstant("C1", "42")); NativeEnum e1 = new NativeEnum("e1"); e1.AddValue("v1", "C1+2"); bag.AddDefinedType(e1); VerifyEnumValue(bag, e1, "v1", string.Format("({0}.C1 + 2)", TransformConstants.NativeConstantsName)); }
public void AnonymousType1() { NativeStruct nt = new NativeStruct(); nt.IsAnonymous = true; Assert.False(string.IsNullOrEmpty(nt.Name)); NativeSymbolBag bag = new NativeSymbolBag(); bag.AddDefinedType(nt); Assert.True(NativeSymbolBag.IsAnonymousName(nt.Name)); }
public void FindOrLoad5() { NativeSymbolBag bag = new NativeSymbolBag(); bag.AddTypeDef(new NativeTypeDef("foo", new NativeNamedType("struct", "foo"))); bag.AddDefinedType(new NativeStruct("foo")); NativeType nt = null; Assert.True(bag.TryResolveNamedType(new NativeNamedType("struct", "foo"), out nt)); Assert.Equal(NativeSymbolKind.StructType, nt.Kind); }
public void Value3() { NativeSymbolBag bag = new NativeSymbolBag(); NativeStruct ntStruct1 = new NativeStruct("s1"); bag.AddDefinedType(ntStruct1); NativeConstant ntConst1 = new NativeConstant("c1", "(s1)1"); bag.AddConstant(ntConst1); Assert.Equal(1, bag.FindUnresolvedNativeValues().Count); Assert.True(bag.TryResolveSymbolsAndValues()); }
public void Resolve1() { NativeSymbolBag bag = new NativeSymbolBag(); NativeStruct s1 = new NativeStruct("s1"); bag.AddDefinedType(s1); NativeTypeDef td1 = new NativeTypeDef("td1"); NativeNamedType n1 = new NativeNamedType("s1"); td1.RealType = n1; bag.AddTypeDef(td1); Assert.True(bag.TryResolveSymbolsAndValues()); Assert.Same(s1, n1.RealType); }
/// <summary> /// Make sure that any NativeDefinedType referenced is in the bag. That way if we /// have structures which point to other NativeDefinedType instances, they are automagically /// put into the bag /// </summary> /// <param name="bag"></param> /// <remarks></remarks> private void ChaseReferencedDefinedTypes(NativeSymbolBag bag) { bag.TryResolveSymbolsAndValues(); foreach (NativeSymbol sym in bag.FindAllReachableNativeSymbols()) { if (NativeSymbolCategory.Defined == sym.Category) { NativeDefinedType defined = null; if (!bag.TryGetGlobalSymbol(sym.Name, out defined)) { bag.AddDefinedType((NativeDefinedType)sym); } } } }
public void ValueFromStorage2() { var ns = new BasicSymbolStorage(); var bag = new NativeSymbolBag(ns); NativeEnum ntEnum = new NativeEnum("e1"); ntEnum.AddValue("v1", "5"); bag.AddDefinedType(ntEnum); NativeConstant ntConst1 = new NativeConstant("c1", "5+v1"); bag.AddConstant(ntConst1); Assert.Equal(1, bag.FindUnresolvedNativeValues().Count); Assert.True(bag.TryResolveSymbolsAndValues()); }
public void AddMixed2() { NativeSymbolBag bag = new NativeSymbolBag(); NativeStruct definedNt1 = new NativeStruct("s1"); bag.AddDefinedType(definedNt1); NativeTypeDef td1 = new NativeTypeDef("s1"); bag.AddTypeDef(td1); NativeType ret = null; Assert.True(bag.TryGetType(definedNt1.DisplayName, out ret)); Assert.Same(definedNt1, ret); Assert.True(bag.TryGetType(td1.DisplayName, out ret)); Assert.Same(definedNt1, ret); }
public void ResolveLoad2() { var ns = new BasicSymbolStorage(); ns.AddTypeDef(new NativeTypeDef("TEST_INT", BuiltinType.NativeInt32)); NativeStruct s1 = new NativeStruct("s1"); s1.Members.Add(new NativeMember("m1", new NativeNamedType("TEST_INT"))); NativeSymbolBag bag = new NativeSymbolBag(ns); bag.AddDefinedType(s1); Assert.True(bag.TryResolveSymbolsAndValues()); NativeTypeDef td = null; Assert.True(bag.TryGetGlobalSymbol("TEST_INT", out td)); }
private void VerifyReachable(NativeType nt, params string[] names) { NativeSymbolBag bag = new NativeSymbolBag(); NativeDefinedType definedNt = nt as NativeDefinedType; NativeTypeDef typedefNt = nt as NativeTypeDef; if (definedNt != null) { bag.AddDefinedType((NativeDefinedType)nt); } else if (typedefNt != null) { bag.AddTypeDef((NativeTypeDef)nt); } else { throw new Exception("Not a searchable type"); } VerifyReachable(bag, names); }