﻿#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 IProperty
    {
        string Name { get; }
        VariantType Type { get; }
        void Clear();

        bool GetBool();
        byte GetByte();
        int GetInt();
        long GetLong();
        float GetFloat();
        string GetString();
        PersistID GetPid();
        Float3 GetFloat3();

        bool TrySetBool(bool value, out VariantList result);
        bool TrySetByte(byte value, out VariantList result);
        bool TrySetInt(int value, out VariantList result);
        bool TrySetLong(long value, out VariantList result);
        bool TrySetFloat(float value, out VariantList result);
        bool TrySetString(string value, out VariantList result);
        bool TrySetPid(PersistID value, out VariantList result);
        bool TrySetFloat3(Float3 value, out VariantList result);
    }
}
