goog.provide('ol.Feature');

goog.require('ol.geom.Geometry');



/**
 * @export
 * @constructor
 */
ol.Feature = function() {

    /**
     * @private
     * @type {ol.geom.Geometry}
     */
    this.geometry_ = null;

    /**
     * @private
     * @type {Object}
     */
     this.attributes_ = {};

};

/**
 * @return {ol.geom.Geometry} The geometry associated with the feature.
 */
ol.Feature.prototype.getGeometry = function() {
    return this.geometry_;
};

/**
 * @param {ol.geom.Geometry} geom the geometry for the feature.
 */
ol.Feature.prototype.setGeometry = function(geom) {
    this.geometry_ = geom;
};


/**
 * @param {!string} name the attribute value to retrieve.
  @return {string|number|boolean} the attribute value.
 */
ol.Feature.prototype.getAttribute = function(name) {
    return this.attributes_[name];
};


/**
 * @param {!string} name of the attribute to set.
 * @param {string|number|boolean} value the attribute value to set.
 */
ol.Feature.prototype.setAttribute = function(name, value) {
    this.attributes_[name] = value;
};


/**
 * @param {Object} attrs An json structure containing key/value pairs.
 */
ol.Feature.prototype.setAttributes = function(attrs) {
    for (var key in attrs) {
        this.setAttribute(key, attrs[key]);
    }
};


/**
*/
ol.Feature.prototype.destroy = function() {
    //remove attributes and geometry, etc.
    for (var key in this) {
        delete this[key];
    }
};
