// <auto-generated>
// This file is generated by Ghost.NativeWrapperGen. Do not edit manually.
// </auto-generated>

namespace Ghost.Ufbx;

public unsafe partial struct ufbx_dom_node
{
    /// <summary>
    /// From: <see cref="Api.ufbx_dom_find_len(ufbx_dom_node*, sbyte*, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public ufbx_dom_node* DomFindLen(ReadOnlySpan<byte> name)
    {
        fixed (byte* pname = name)
        {
            return Api.ufbx_dom_find_len(
                (ufbx_dom_node*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
                (sbyte*)pname,
                (nuint)name.Length);
        }
    }

    /// <summary>
    /// From: <see cref="Api.ufbx_dom_find(ufbx_dom_node*, sbyte*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public ufbx_dom_node* DomFind(sbyte* name)
    {
        return Api.ufbx_dom_find(
            (ufbx_dom_node*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            name);
    }

    /// <summary>
    /// From: <see cref="Api.ufbx_dom_is_array(ufbx_dom_node*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public bool DomIsArray()
    {
        return Api.ufbx_dom_is_array((ufbx_dom_node*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this));
    }

    /// <summary>
    /// From: <see cref="Api.ufbx_dom_array_size(ufbx_dom_node*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public nuint DomArraySize()
    {
        return Api.ufbx_dom_array_size((ufbx_dom_node*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this));
    }

    /// <summary>
    /// From: <see cref="Api.ufbx_dom_as_int32_list(ufbx_dom_node*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public ufbx_int32_list DomAsInt32List()
    {
        return Api.ufbx_dom_as_int32_list((ufbx_dom_node*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this));
    }

    /// <summary>
    /// From: <see cref="Api.ufbx_dom_as_int64_list(ufbx_dom_node*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public ufbx_int64_list DomAsInt64List()
    {
        return Api.ufbx_dom_as_int64_list((ufbx_dom_node*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this));
    }

    /// <summary>
    /// From: <see cref="Api.ufbx_dom_as_float_list(ufbx_dom_node*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public ufbx_float_list DomAsFloatList()
    {
        return Api.ufbx_dom_as_float_list((ufbx_dom_node*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this));
    }

    /// <summary>
    /// From: <see cref="Api.ufbx_dom_as_double_list(ufbx_dom_node*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public ufbx_double_list DomAsDoubleList()
    {
        return Api.ufbx_dom_as_double_list((ufbx_dom_node*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this));
    }

    /// <summary>
    /// From: <see cref="Api.ufbx_dom_as_real_list(ufbx_dom_node*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public ufbx_real_list DomAsRealList()
    {
        return Api.ufbx_dom_as_real_list((ufbx_dom_node*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this));
    }

    /// <summary>
    /// From: <see cref="Api.ufbx_dom_as_blob_list(ufbx_dom_node*)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public ufbx_blob_list DomAsBlobList()
    {
        return Api.ufbx_dom_as_blob_list((ufbx_dom_node*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this));
    }
}
