#ifdef __GNUC__
#pragma interface
#endif
namespace sc {
#define SSBArray_declare(Type) \
class SSBArray ## Type: public Array ## Type { \
  public: \
    SSBArray ## Type() {} \
    SSBArray ## Type(const Array ## Type&a): Array ## Type(a) {} \
    SSBArray ## Type(Type* data,int size): Array ## Type(data,size) {} \
    SSBArray ## Type(int size): Array ## Type(size) {} \
    SSBArray ## Type(StateIn&s): Array ## Type() { \
      s.get(this->_length); \
      if (this->_length) s.get(this->_array); \
      this->_managed=1; \
    } \
    void save_object_state(StateOut&s) { \
        s.put(this->_length); \
        if (this->_length) s.put(this->_array,this->_length); \
      } \
};
}
