#ifndef BINNER_H
#define BINNER_H
#include <AttributeSubject.h>

// ****************************************************************************
// Class: Binner
//
// Purpose:
//    Bin particles
//
// Notes:      Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation:   Thu Mar 30 12:05:25 PDT 2006
//
// Modifications:
//   
// ****************************************************************************

class Binner : public AttributeSubject
{
public:
    Binner();
    Binner(const Binner &obj);
    virtual ~Binner();

    virtual Binner& operator = (const Binner &obj);
    virtual bool operator == (const Binner &obj) const;
    virtual bool operator != (const Binner &obj) const;

    virtual const std::string TypeName() const;
    virtual bool CopyAttributes(const AttributeGroup *);
    virtual AttributeSubject *CreateCompatible(const std::string &) const;
    virtual AttributeSubject *NewInstance(bool) const;

    // Property selection methods
    virtual void SelectAll();

    // Property setting methods
    void SetDim1(int dim1_);
    void SetDim2(int dim2_);
    void SetDim3(int dim3_);

    // Property getting methods
    int GetDim1() const;
    int GetDim2() const;
    int GetDim3() const;

    // Persistence methods
    virtual bool CreateNode(DataNode *node, bool completeSave, bool forceAdd);
    virtual void SetFromNode(DataNode *node);


    // Keyframing methods
    virtual std::string               GetFieldName(int index) const;
    virtual AttributeGroup::FieldType GetFieldType(int index) const;
    virtual std::string               GetFieldTypeName(int index) const;
    virtual bool                      FieldsEqual(int index, const AttributeGroup *rhs) const;

private:
    int dim1;
    int dim2;
    int dim3;
};

#endif
