public static IEnumerable <CppElement> Children(ICppGlobalDeclarationContainer container) { foreach (var item in container.Enums) { yield return(item); } foreach (var item in container.Fields) { yield return(item); } foreach (var item in container.Classes) { yield return(item); } foreach (var item in container.Typedefs) { yield return(item); } foreach (var item in container.Functions) { yield return(item); } foreach (var item in container.Namespaces) { yield return(item); } }
public void TestSimple() { ParseAssert(@" namespace A { namespace B { int b; } }; namespace A { int a; }; namespace A::B::C { int c; }; ", compilation => { Assert.False(compilation.HasErrors); var namespaces = new List <string>() { "A", "B", "C" }; ICppGlobalDeclarationContainer container = compilation; foreach (var nsName in namespaces) { Assert.AreEqual(1, container.Namespaces.Count); var ns = container.Namespaces[0]; Assert.AreEqual(nsName, ns.Name); Assert.AreEqual(1, ns.Fields.Count); Assert.AreEqual(nsName.ToLowerInvariant(), ns.Fields[0].Name); // Continue on the sub-namespaces container = ns; } } ); }
public void TestNamespacedTypedef() { ParseAssert(@" namespace A { typedef int (*a)(int b); } A::a c; ", compilation => { Assert.False(compilation.HasErrors); Assert.AreEqual(1, compilation.Namespaces.Count); ICppGlobalDeclarationContainer container = compilation.Namespaces[0]; Assert.AreEqual(1, container.Typedefs.Count); Assert.AreEqual(1, compilation.Fields.Count); CppTypedef typedef = container.Typedefs[0]; CppField field = compilation.Fields[0]; Assert.AreEqual(typedef, field.Type); } ); }