#ifdef __GNUC__
#pragma interface
#endif
namespace sc {
#define SSBArray2_declare(Type) \
class SSBArray2 ## Type: public Array2 ## Type { \
  public: \
    SSBArray2 ## Type() {} \
    SSBArray2 ## Type(const Array2 ## Type &a): Array2 ## Type(a) {} \
    SSBArray2 ## Type(Type* data,int size0,int size1): Array2 ## Type(data,size0,size1){} \
    SSBArray2 ## Type(int size0,int size1): Array2 ## Type(size0,size1) {} \
    SSBArray2 ## Type(StateIn&s) { \
        s.get(this->_length0); \
        s.get(this->_length1); \
        if (this->_length0&&this->_length1) s.get(this->_array); \
        this->_managed=1; \
      } \
    void save_object_state(StateOut&s) { \
        s.put(this->_length0); \
        s.put(this->_length1); \
        if (this->_length0&&this->_length1) { \
            s.put(this->_array,this->_length0*this->_length1); \
          } \
      } \
};
}
