using System;
using System.Collections.Generic;

namespace Toolbox.Docking.Api.Objects.Profiler
{
    /// <summary>
    /// This class contains the most basic description for a Toolbox profiler.
    /// </summary>
    [Serializable]
    public sealed class TbProfilerInfo : TbObjectInfo
    {
        /// <summary>
        /// Constructor for a profiler info object.
        /// </summary>
        /// <param name="objFlags">Object information flags.</param>
        /// <param name="profilerType">The type of profiler.</param>
        /// <param name="allCategories">List profiler's categories.</param>
        public TbProfilerInfo(TbObjectInfoFlags objFlags, TbCategoryType profilerType,
            IEnumerable<string> allCategories)
            : base(objFlags)
        {
            ProfilerType = profilerType;
            AllCategories = new List<string>(allCategories);
        }

        /// <summary>
        /// Profiler object's type.
        /// </summary>
        public TbCategoryType ProfilerType { get; }


        /// <summary>
        /// List with all categories which the profiler can return
        /// </summary>
        public IReadOnlyList<string> AllCategories { get; }
    }
}