#ifndef _DECL_ampimain_H_
#define _DECL_ampimain_H_
#include "charm++.h"
#include "ampi.decl.h"

/* DECLS: mainchare ampimain{
readonly CkChareID handle;
readonly ampi_comm_struct ampi_comms[8];
readonly int ncomms;
ampimain();
void done(void);
};
 */
class ampimain;
class CProxy_ampimain: public virtual _CK_CID{
  public:
    static int __idx;
    static void __register(const char *s, size_t size);
    CProxy_ampimain(CkChareID __cid) { ckSetChareId(__cid); }
    CkChareID ckGetChareId(void) { return _ck_cid; }
    void ckSetChareId(CkChareID __cid) {_CHECK_CID(__cid,__idx);_ck_cid=__cid;}
/* DECLS: readonly CkChareID handle;
 */

/* DECLS: readonly ampi_comm_struct ampi_comms[8];
 */

/* DECLS: readonly int ncomms;
 */

/* DECLS: ampimain();
 */
    static void ckNew(int onPE=CK_PE_ANY);
    static void ckNew(CkChareID* pcid, int onPE=CK_PE_ANY);
    CProxy_ampimain(int onPE=CK_PE_ANY);
    static int  __idx_ampimain;
    static int  ckIdx_ampimain() { return __idx_ampimain; }
    static void _call_ampimain(CkArgMsg* msg, ampimain* obj);

/* DECLS: void done(void);
 */
    void done(void);
    static int  __idx_done_void;
    static int  ckIdx_done(void) { return __idx_done_void; }
    static void _call_done_void(void* msg, ampimain* obj);
};

extern void _registerampimain(void);
extern "C" void CkRegisterMainModule(void);
#endif
