#ifndef _CVECTOR_H_
#define _CVECTOR_H_

#include "include.h"
#include "TauUtil.h"

// Globals
extern hpcxx_id_t CVectorSize_ID; 
extern hpcxx_id_t CVectorElementAt_ID;

// Class CVector
class CVector {
  
 public:
  // Constructor/Destuctor
  CVector(vector<FunctionInfo*> *func_db);
  virtual ~CVector();
  
  // HPC++ Methods
  void RegisterClass();
  int RegisterMethods(int start_reg_index);
  static int registrationID(){ return 345; } // Dont ask me?  Wont compile without it.
  friend void hpcxx_pack(HPCxx_Buffer b, CVector *data, int size);
  friend void hpcxx_unpack(HPCxx_Buffer b, CVector *data, int size);


  // Methods
  int Size();
  FunctionInfo *ElementAt(int index);

 private:
  vector <FunctionInfo*> *m_FuncDB;
};

#endif

