// File: inputhardwareinfo.h
// Created by: <Jörn Reimerdes>
// Created on: 22.03.2005

/**
 * inputhardwareinfo.h - is part of the iwear-framework
 * @file
 * $Id$
 * $Revision$
 * $Author$
 * $Date$
 *
 * This file is part of The iWear Framework.
 * In particular this file is part of the Framework Input Library
 *
 * The iWear Framework is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by the
 * Free Software Foundation as in version 2 of the License.

 * 
 * The iWear Framework is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 * more details.
 * 
 * You should have received a copy of the GNU General Public License along with
 * The iWear Framework; if not, write to the Free Software Foundation, Inc., 59
 * Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

#ifndef __INPUT_HARDWARE_INFO_H_
#define __INPUT_HARDWARE_INFO_H_

#include <string>

using namespace std;

namespace iwear {
namespace input {

    /** InputHardwareInfo stores informaiton about an input device.
     */
class InputHardwareInfo
{
public:
    
    /** Creates a new InputHardwareInfo.
     * @param name The name of the device.
     * @param description The description of the device.
     */
    InputHardwareInfo(const string name, const string description);

    /** Destroys the InputHardwareInfo.
     * @note The string objects for name, description, vendor and
     * interface will be deleted by this desctructor. 
     */
    ~InputHardwareInfo(void);

    // {{{ getter/setter

    /** Gets the name of the device.
     * @return The name of the device.
     */
    inline const string* get_name(void){
	return &(this->name);
    }

    /** Gets the description of the device.
     * @return The description of the device.
     */
    inline const string* get_description(void){
	return &(this->description);
    }

    /** Gets the vendor name.
     * @retrun The name of the device's vendor.
     */
    inline const string* get_vendor(void){
	return &(this->vendor);
    }

    /** Gets the interface name.
     * @return The name of the interface which is used
     * by the device. (e.g. usb )
     */
    inline const string* get_interface(void){
	return &(this->interface);
    }
    
    /** Sets the vendor name. 
     * @param vendor The vendor name.
     */
    inline void set_vendor(const string vendor){
	this->vendor = vendor;
    }

    /** Sets the interface name. 
     * @param interface The interface name.
     */
    inline void set_interface(const string interface){
	this->interface = interface;
    }

    // }}}

protected:

private: 

    /** The name of the device */
    string name;

    /** A detailed description of the device. */
    string description;

    /** The vendor name. */
    string vendor;

    /** The harware interface name which is used by the device. */
    string interface;

};

} // input
} // iwear

#endif	//__INPUT_HARDWARE_INFO_H_

