/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#pragma once

#include "CC_Common.h"

extern "C"
{
#include "ccapi_types.h"
}

namespace CSF
{
    class ECC_API CC_FeatureInfo
    {
    protected:
        CC_FeatureInfo() { }

    public:
        //Base class needs dtor to be declared as virtual
        virtual ~CC_FeatureInfo() {};

        /**
           Get the physical button number on which this feature is configured

           @return cc_int32_t - button assgn to the feature
         */
        virtual cc_int32_t getButton() = 0;

        /**
           Get the featureID

           @return cc_int32_t - button assgn to the feature
         */
        virtual cc_int32_t getFeatureID() = 0;

        /**
           Get the feature Name

           @return string - handle of the feature created
         */
        virtual std::string getDisplayName() = 0;

        /**
           Get the speeddial Number

           @return string - handle of the feature created
         */
        virtual std::string getSpeedDialNumber() = 0;

        /**
           Get the contact

           @return string - handle of the feature created
         */
        virtual std::string getContact() = 0;

        /**
           Get the retrieval prefix

           @return string - handle of the feature created
         */
        virtual std::string getRetrievalPrefix() = 0;

        /**
           Get the feature option mask

           @return cc_int32_t - button assgn to the feature
         */
        virtual cc_int32_t getFeatureOptionMask() = 0;
    };
};
