Browse Source

Add type parameter to non-type template parameter decls. (#1749)

pull/1751/head
João Matos 3 years ago committed by GitHub
parent
commit
bb31bd616b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      src/AST/Template.cs
  2. 1
      src/CppParser/AST.cpp
  3. 12
      src/CppParser/Bindings/CLI/Decl.cpp
  4. 6
      src/CppParser/Bindings/CLI/Decl.h
  5. 16
      src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs
  6. 16
      src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs
  7. 16
      src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs
  8. 16
      src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs
  9. 16
      src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs
  10. 16
      src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs
  11. 1
      src/CppParser/Decl.h
  12. 1
      src/CppParser/Parser.cpp
  13. 1
      src/Parser/ASTConverter.cs

2
src/AST/Template.cs

@ -124,6 +124,8 @@ namespace CppSharp.AST
/// </summary> /// </summary>
public bool IsExpandedParameterPack { get; set; } public bool IsExpandedParameterPack { get; set; }
public QualifiedType Type { get; set; }
public override T Visit<T>(IDeclVisitor<T> visitor) public override T Visit<T>(IDeclVisitor<T> visitor)
{ {
return visitor.VisitNonTypeTemplateParameterDecl(this); return visitor.VisitNonTypeTemplateParameterDecl(this);

1
src/CppParser/AST.cpp

@ -164,6 +164,7 @@ NonTypeTemplateParameter::NonTypeTemplateParameter(const NonTypeTemplateParamete
, position(rhs.position) , position(rhs.position)
, isPackExpansion(rhs.isPackExpansion) , isPackExpansion(rhs.isPackExpansion)
, isExpandedParameterPack(rhs.isExpandedParameterPack) , isExpandedParameterPack(rhs.isExpandedParameterPack)
, type(rhs.type)
{ {
} }

12
src/CppParser/Bindings/CLI/Decl.cpp

@ -4224,6 +4224,18 @@ void CppSharp::Parser::AST::NonTypeTemplateParameter::IsExpandedParameterPack::s
((class ::CppSharp::CppParser::AST::NonTypeTemplateParameter*)NativePtr)->isExpandedParameterPack = value; ((class ::CppSharp::CppParser::AST::NonTypeTemplateParameter*)NativePtr)->isExpandedParameterPack = value;
} }
CppSharp::Parser::AST::QualifiedType^ CppSharp::Parser::AST::NonTypeTemplateParameter::Type::get()
{
return (&((class ::CppSharp::CppParser::AST::NonTypeTemplateParameter*)NativePtr)->type == nullptr) ? nullptr : gcnew ::CppSharp::Parser::AST::QualifiedType((struct ::CppSharp::CppParser::AST::QualifiedType*)&((class ::CppSharp::CppParser::AST::NonTypeTemplateParameter*)NativePtr)->type);
}
void CppSharp::Parser::AST::NonTypeTemplateParameter::Type::set(CppSharp::Parser::AST::QualifiedType^ value)
{
if (ReferenceEquals(value, nullptr))
throw gcnew ::System::ArgumentNullException("value", "Cannot be null because it is passed by value.");
((class ::CppSharp::CppParser::AST::NonTypeTemplateParameter*)NativePtr)->type = *(struct ::CppSharp::CppParser::AST::QualifiedType*)value->NativePtr;
}
CppSharp::Parser::AST::ClassTemplate::ClassTemplate(class ::CppSharp::CppParser::AST::ClassTemplate* native) CppSharp::Parser::AST::ClassTemplate::ClassTemplate(class ::CppSharp::CppParser::AST::ClassTemplate* native)
: CppSharp::Parser::AST::Template((::CppSharp::CppParser::AST::Template*)native) : CppSharp::Parser::AST::Template((::CppSharp::CppParser::AST::Template*)native)
{ {

6
src/CppParser/Bindings/CLI/Decl.h

@ -2098,6 +2098,12 @@ namespace CppSharp
bool get(); bool get();
void set(bool); void set(bool);
} }
property CppSharp::Parser::AST::QualifiedType^ Type
{
CppSharp::Parser::AST::QualifiedType^ get();
void set(CppSharp::Parser::AST::QualifiedType^);
}
}; };
public ref class ClassTemplate : CppSharp::Parser::AST::Template public ref class ClassTemplate : CppSharp::Parser::AST::Template

16
src/CppParser/Bindings/CSharp/i686-apple-darwin12.4.0/CppSharp.CppParser.cs

@ -13017,6 +13017,7 @@ namespace CppSharp
internal uint position; internal uint position;
internal byte isPackExpansion; internal byte isPackExpansion;
internal byte isExpandedParameterPack; internal byte isExpandedParameterPack;
internal global::CppSharp.Parser.AST.QualifiedType.__Internal type;
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST24NonTypeTemplateParameterC2Ev", CallingConvention = __CallingConvention.Cdecl)] [SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST24NonTypeTemplateParameterC2Ev", CallingConvention = __CallingConvention.Cdecl)]
internal static extern void ctor(__IntPtr __instance); internal static extern void ctor(__IntPtr __instance);
@ -13171,6 +13172,21 @@ namespace CppSharp
((__Internal*)__Instance)->isExpandedParameterPack = (byte) (value ? 1 : 0); ((__Internal*)__Instance)->isExpandedParameterPack = (byte) (value ? 1 : 0);
} }
} }
public global::CppSharp.Parser.AST.QualifiedType Type
{
get
{
return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(new __IntPtr(&((__Internal*)__Instance)->type));
}
set
{
if (ReferenceEquals(value, null))
throw new global::System.ArgumentNullException("value", "Cannot be null because it is passed by value.");
((__Internal*)__Instance)->type = *(global::CppSharp.Parser.AST.QualifiedType.__Internal*) value.__Instance;
}
}
} }
public unsafe partial class ClassTemplate : global::CppSharp.Parser.AST.Template, IDisposable public unsafe partial class ClassTemplate : global::CppSharp.Parser.AST.Template, IDisposable

16
src/CppParser/Bindings/CSharp/i686-pc-win32-msvc/CppSharp.CppParser.cs

@ -13017,6 +13017,7 @@ namespace CppSharp
internal uint position; internal uint position;
internal byte isPackExpansion; internal byte isPackExpansion;
internal byte isExpandedParameterPack; internal byte isExpandedParameterPack;
internal global::CppSharp.Parser.AST.QualifiedType.__Internal type;
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser.dll", EntryPoint = "??0NonTypeTemplateParameter@AST@CppParser@CppSharp@@QAE@XZ", CallingConvention = __CallingConvention.ThisCall)] [SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser.dll", EntryPoint = "??0NonTypeTemplateParameter@AST@CppParser@CppSharp@@QAE@XZ", CallingConvention = __CallingConvention.ThisCall)]
internal static extern __IntPtr ctor(__IntPtr __instance); internal static extern __IntPtr ctor(__IntPtr __instance);
@ -13171,6 +13172,21 @@ namespace CppSharp
((__Internal*)__Instance)->isExpandedParameterPack = (byte) (value ? 1 : 0); ((__Internal*)__Instance)->isExpandedParameterPack = (byte) (value ? 1 : 0);
} }
} }
public global::CppSharp.Parser.AST.QualifiedType Type
{
get
{
return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(new __IntPtr(&((__Internal*)__Instance)->type));
}
set
{
if (ReferenceEquals(value, null))
throw new global::System.ArgumentNullException("value", "Cannot be null because it is passed by value.");
((__Internal*)__Instance)->type = *(global::CppSharp.Parser.AST.QualifiedType.__Internal*) value.__Instance;
}
}
} }
public unsafe partial class ClassTemplate : global::CppSharp.Parser.AST.Template, IDisposable public unsafe partial class ClassTemplate : global::CppSharp.Parser.AST.Template, IDisposable

16
src/CppParser/Bindings/CSharp/x86_64-apple-darwin12.4.0/CppSharp.CppParser.cs

@ -13016,6 +13016,7 @@ namespace CppSharp
internal uint position; internal uint position;
internal byte isPackExpansion; internal byte isPackExpansion;
internal byte isExpandedParameterPack; internal byte isExpandedParameterPack;
internal global::CppSharp.Parser.AST.QualifiedType.__Internal type;
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST24NonTypeTemplateParameterC2Ev", CallingConvention = __CallingConvention.Cdecl)] [SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST24NonTypeTemplateParameterC2Ev", CallingConvention = __CallingConvention.Cdecl)]
internal static extern void ctor(__IntPtr __instance); internal static extern void ctor(__IntPtr __instance);
@ -13170,6 +13171,21 @@ namespace CppSharp
((__Internal*)__Instance)->isExpandedParameterPack = (byte) (value ? 1 : 0); ((__Internal*)__Instance)->isExpandedParameterPack = (byte) (value ? 1 : 0);
} }
} }
public global::CppSharp.Parser.AST.QualifiedType Type
{
get
{
return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(new __IntPtr(&((__Internal*)__Instance)->type));
}
set
{
if (ReferenceEquals(value, null))
throw new global::System.ArgumentNullException("value", "Cannot be null because it is passed by value.");
((__Internal*)__Instance)->type = *(global::CppSharp.Parser.AST.QualifiedType.__Internal*) value.__Instance;
}
}
} }
public unsafe partial class ClassTemplate : global::CppSharp.Parser.AST.Template, IDisposable public unsafe partial class ClassTemplate : global::CppSharp.Parser.AST.Template, IDisposable

16
src/CppParser/Bindings/CSharp/x86_64-linux-gnu-cxx11abi/CppSharp.CppParser.cs

@ -13016,6 +13016,7 @@ namespace CppSharp
internal uint position; internal uint position;
internal byte isPackExpansion; internal byte isPackExpansion;
internal byte isExpandedParameterPack; internal byte isExpandedParameterPack;
internal global::CppSharp.Parser.AST.QualifiedType.__Internal type;
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST24NonTypeTemplateParameterC2Ev", CallingConvention = __CallingConvention.Cdecl)] [SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST24NonTypeTemplateParameterC2Ev", CallingConvention = __CallingConvention.Cdecl)]
internal static extern void ctor(__IntPtr __instance); internal static extern void ctor(__IntPtr __instance);
@ -13170,6 +13171,21 @@ namespace CppSharp
((__Internal*)__Instance)->isExpandedParameterPack = (byte) (value ? 1 : 0); ((__Internal*)__Instance)->isExpandedParameterPack = (byte) (value ? 1 : 0);
} }
} }
public global::CppSharp.Parser.AST.QualifiedType Type
{
get
{
return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(new __IntPtr(&((__Internal*)__Instance)->type));
}
set
{
if (ReferenceEquals(value, null))
throw new global::System.ArgumentNullException("value", "Cannot be null because it is passed by value.");
((__Internal*)__Instance)->type = *(global::CppSharp.Parser.AST.QualifiedType.__Internal*) value.__Instance;
}
}
} }
public unsafe partial class ClassTemplate : global::CppSharp.Parser.AST.Template, IDisposable public unsafe partial class ClassTemplate : global::CppSharp.Parser.AST.Template, IDisposable

16
src/CppParser/Bindings/CSharp/x86_64-linux-gnu/CppSharp.CppParser.cs

@ -13016,6 +13016,7 @@ namespace CppSharp
internal uint position; internal uint position;
internal byte isPackExpansion; internal byte isPackExpansion;
internal byte isExpandedParameterPack; internal byte isExpandedParameterPack;
internal global::CppSharp.Parser.AST.QualifiedType.__Internal type;
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST24NonTypeTemplateParameterC2Ev", CallingConvention = __CallingConvention.Cdecl)] [SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser", EntryPoint = "_ZN8CppSharp9CppParser3AST24NonTypeTemplateParameterC2Ev", CallingConvention = __CallingConvention.Cdecl)]
internal static extern void ctor(__IntPtr __instance); internal static extern void ctor(__IntPtr __instance);
@ -13170,6 +13171,21 @@ namespace CppSharp
((__Internal*)__Instance)->isExpandedParameterPack = (byte) (value ? 1 : 0); ((__Internal*)__Instance)->isExpandedParameterPack = (byte) (value ? 1 : 0);
} }
} }
public global::CppSharp.Parser.AST.QualifiedType Type
{
get
{
return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(new __IntPtr(&((__Internal*)__Instance)->type));
}
set
{
if (ReferenceEquals(value, null))
throw new global::System.ArgumentNullException("value", "Cannot be null because it is passed by value.");
((__Internal*)__Instance)->type = *(global::CppSharp.Parser.AST.QualifiedType.__Internal*) value.__Instance;
}
}
} }
public unsafe partial class ClassTemplate : global::CppSharp.Parser.AST.Template, IDisposable public unsafe partial class ClassTemplate : global::CppSharp.Parser.AST.Template, IDisposable

16
src/CppParser/Bindings/CSharp/x86_64-pc-win32-msvc/CppSharp.CppParser.cs

@ -13018,6 +13018,7 @@ namespace CppSharp
internal uint position; internal uint position;
internal byte isPackExpansion; internal byte isPackExpansion;
internal byte isExpandedParameterPack; internal byte isExpandedParameterPack;
internal global::CppSharp.Parser.AST.QualifiedType.__Internal type;
[SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser.dll", EntryPoint = "??0NonTypeTemplateParameter@AST@CppParser@CppSharp@@QEAA@XZ", CallingConvention = __CallingConvention.Cdecl)] [SuppressUnmanagedCodeSecurity, DllImport("CppSharp.CppParser.dll", EntryPoint = "??0NonTypeTemplateParameter@AST@CppParser@CppSharp@@QEAA@XZ", CallingConvention = __CallingConvention.Cdecl)]
internal static extern __IntPtr ctor(__IntPtr __instance); internal static extern __IntPtr ctor(__IntPtr __instance);
@ -13172,6 +13173,21 @@ namespace CppSharp
((__Internal*)__Instance)->isExpandedParameterPack = (byte) (value ? 1 : 0); ((__Internal*)__Instance)->isExpandedParameterPack = (byte) (value ? 1 : 0);
} }
} }
public global::CppSharp.Parser.AST.QualifiedType Type
{
get
{
return global::CppSharp.Parser.AST.QualifiedType.__CreateInstance(new __IntPtr(&((__Internal*)__Instance)->type));
}
set
{
if (ReferenceEquals(value, null))
throw new global::System.ArgumentNullException("value", "Cannot be null because it is passed by value.");
((__Internal*)__Instance)->type = *(global::CppSharp.Parser.AST.QualifiedType.__Internal*) value.__Instance;
}
}
} }
public unsafe partial class ClassTemplate : global::CppSharp.Parser.AST.Template, IDisposable public unsafe partial class ClassTemplate : global::CppSharp.Parser.AST.Template, IDisposable

1
src/CppParser/Decl.h

@ -674,6 +674,7 @@ namespace CppSharp
unsigned int position; unsigned int position;
bool isPackExpansion; bool isPackExpansion;
bool isExpandedParameterPack; bool isExpandedParameterPack;
QualifiedType type;
}; };
class ClassTemplateSpecialization; class ClassTemplateSpecialization;

1
src/CppParser/Parser.cpp

@ -1430,6 +1430,7 @@ NonTypeTemplateParameter* Parser::WalkNonTypeTemplateParameter(const clang::NonT
HandleDeclaration(NTTPD, NTP); HandleDeclaration(NTTPD, NTP);
if (NTTPD->hasDefaultArgument()) if (NTTPD->hasDefaultArgument())
NTP->defaultArgument = WalkExpressionObsolete(NTTPD->getDefaultArgument()); NTP->defaultArgument = WalkExpressionObsolete(NTTPD->getDefaultArgument());
NTP->type = GetQualifiedType(NTTPD->getType());
NTP->depth = NTTPD->getDepth(); NTP->depth = NTTPD->getDepth();
NTP->index = NTTPD->getIndex(); NTP->index = NTTPD->getIndex();
NTP->isParameterPack = NTTPD->isParameterPack(); NTP->isParameterPack = NTTPD->isParameterPack();

1
src/Parser/ASTConverter.cs

@ -2083,6 +2083,7 @@ namespace CppSharp
nonTypeTemplateParameter.IsParameterPack = decl.IsParameterPack; nonTypeTemplateParameter.IsParameterPack = decl.IsParameterPack;
nonTypeTemplateParameter.IsPackExpansion = decl.IsPackExpansion; nonTypeTemplateParameter.IsPackExpansion = decl.IsPackExpansion;
nonTypeTemplateParameter.IsExpandedParameterPack = decl.IsExpandedParameterPack; nonTypeTemplateParameter.IsExpandedParameterPack = decl.IsExpandedParameterPack;
nonTypeTemplateParameter.Type = typeConverter.VisitQualified(decl.Type);
return nonTypeTemplateParameter; return nonTypeTemplateParameter;
} }

Loading…
Cancel
Save