cppast/src/CppAst/CppUnexposedType.cs
2024-06-15 10:12:27 +08:00

45 lines
1.3 KiB
C#

// Copyright (c) Alexandre Mutel. All rights reserved.
// Licensed under the BSD-Clause 2 license.
// See license.txt file in the project root for full license information.
using System;
using System.Collections.Generic;
namespace CppAst
{
/// <summary>
/// A type not fully/correctly exposed by the C++ parser.
/// </summary>
/// <remarks>
/// Template parameter type instance are actually exposed with this type.
/// </remarks>
public sealed class CppUnexposedType : CppType, ICppTemplateOwner
{
/// <summary>
/// Creates an instance of this type.
/// </summary>
/// <param name="name">Fullname of the unexposed type</param>
public CppUnexposedType(string name) : base(CppTypeKind.Unexposed)
{
Name = name ?? throw new ArgumentNullException(nameof(name));
TemplateParameters = new List<CppType>();
}
/// <summary>
/// Full name of the unexposed type
/// </summary>
public string Name { get; }
/// <inheritdoc />
public override int SizeOf { get; set; }
/// <inheritdoc />
public List<CppType> TemplateParameters { get; }
/// <inheritdoc />
public override CppType GetCanonicalType() => this;
/// <inheritdoc />
public override string ToString() => Name;
}
}