From 61a5ceb5c386df8557ffbad142e0a8d622493172 Mon Sep 17 00:00:00 2001 From: Elias Holzer Date: Tue, 6 May 2014 14:33:37 +0200 Subject: [PATCH] Added copy constructors to Class, Parameter and DeclarationContext. --- src/AST/Class.cs | 22 ++++++++++++++++++++++ src/AST/Function.cs | 11 +++++++++++ src/AST/Namespace.cs | 16 ++++++++++++++++ 3 files changed, 49 insertions(+) diff --git a/src/AST/Class.cs b/src/AST/Class.cs index 15061f45..ca08569f 100644 --- a/src/AST/Class.cs +++ b/src/AST/Class.cs @@ -133,6 +133,28 @@ namespace CppSharp.AST Layout = new ClassLayout(); } + public Class(Class @class) + : base(@class) + { + Bases = new List(@class.Bases); + Fields = new List(@class.Fields); + Properties = new List(@class.Properties); + Methods = new List(@class.Methods); + Specifiers = new List(@class.Specifiers); + IsPOD = @class.IsPOD; + Type = @class.Type; + Layout = new ClassLayout(@class.Layout); + IsAbstract = @class.IsAbstract; + IsUnion = @class.IsUnion; + IsOpaque = @class.IsOpaque; + IsDynamic = @class.IsDynamic; + IsPolymorphic = @class.IsPolymorphic; + HasNonTrivialDefaultConstructor = @class.HasNonTrivialDefaultConstructor; + HasNonTrivialCopyConstructor = @class.HasNonTrivialCopyConstructor; + HasNonTrivialDestructor = @class.HasNonTrivialDestructor; + IsStatic = @class.IsStatic; + } + public bool HasBase { get { return Bases.Count > 0; } diff --git a/src/AST/Function.cs b/src/AST/Function.cs index 6209e0a7..7215e1c7 100644 --- a/src/AST/Function.cs +++ b/src/AST/Function.cs @@ -37,6 +37,17 @@ namespace CppSharp.AST HasDefaultValue = false; } + public Parameter(Parameter p) + : base(p) + { + HasDefaultValue = p.HasDefaultValue; + Index = p.Index; + IsIndirect = p.IsIndirect; + Kind = p.Kind; + QualifiedType = p.QualifiedType; + Usage = p.Usage; + } + public Type Type { get { return QualifiedType.Type; } } public QualifiedType QualifiedType { get; set; } public bool IsIndirect { get; set; } diff --git a/src/AST/Namespace.cs b/src/AST/Namespace.cs index 2598c953..733be99f 100644 --- a/src/AST/Namespace.cs +++ b/src/AST/Namespace.cs @@ -51,6 +51,22 @@ namespace CppSharp.AST Anonymous = new Dictionary(); } + protected DeclarationContext(DeclarationContext dc) + : base(dc) + { + Namespaces = new List(dc.Namespaces); + Enums = new List(dc.Enums); + Functions = new List(dc.Functions); + Classes = new List(dc.Classes); + Templates = new List