#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(_length0); \
        s.get(_length1); \
        if (_length0&&_length1) s.get(_array); \
        _managed=1; \
      } \
    void save_object_state(StateOut&s) { \
        s.put(_length0); \
        s.put(_length1); \
        if (_length0&&_length1) s.put(_array,_length0*_length1); \
      } \
};
}
