﻿#region License
/*****************************************************************************
 *
 *Copyright 2016 cathy33
 *
 *Licensed under the Apache License, Version 2.0 (the "License");
 *you may not use this file except in compliance with the License.
 *You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 *Unless required by applicable law or agreed to in writing, software
 *distributed under the License is distributed on an "AS IS" BASIS,
 *WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *See the License for the specific language governing permissions and
 *limitations under the License.
 *
 *****************************************************************************/
#endregion

using Infinity.Core.Data;
using Infinity.Core.Variant;

namespace Infinity.Core.Interface
{
    public interface IContainer
    {
        string Name { get; }
        int Capacity { get; }
        int FreeSlot { get; }
        void Clear();

        PersistID[] GetChildren();
        PersistID GetChild(int slot);
        int GetSlot(PersistID child);

        bool TryAddChild(int slot, PersistID pid, out VariantList result);
        bool TryAddChild(PersistID pid, out VariantList result);
        bool TryDelChild(PersistID pid, out VariantList result);
        bool TryDelChild(int slot, out VariantList result);
    }
}
