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