コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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;
                }
            }
                        );
        }
コード例 #3
0
ファイル: TestNamespaces.cs プロジェクト: xoofx/CppAst.NET
        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);
            }
                        );
        }