#ifndef PARQUETCODEGEN_H_
#define PARQUETCODEGEN_H_

#include <vector>
#include <string>
#include <fstream>
#include "float.h"
#include "environment/onchipcommunication/IpCore.h"
#include "environment/onchipcommunication/PlacedIpCore.h"
#include "Constraint.h"
#include "networks/onchipcommunication/Specification.h"
#include "networks/onchipcommunication/PlatformInstance.h"
#include "networks/onchipcommunication/Implementation.h"

namespace cosi {

namespace io {

namespace onchipcommunication {

using namespace std ;
using namespace cosi::environment::onchipcommunication ;
using namespace cosi::commstruct::onchipcommunication ;

void ParquetBlocksFile( string pFname , vector< IpCore > pIp , vector< PlacedIpCore> pPlacedIp ) ;
void ParquetNetsFile( string pFname , vector< Constraint > pConstraints , vector< PlacedIpCore> pPlacedIp) ;
void ParquetWightsFile( string pFname , vector< Constraint > pConstraints , vector< PlacedIpCore> pPlacedIp ) ;
void ParquetPlFile( string pFname , vector< IpCore > pIp , vector< PlacedIpCore> pPlacedIp ) ;

void ParquetInputGen( string pBlockFname , string pNetFname , string pWeightsFname, string pPlFname,
		Specification* pSpec ) ;

void ParquetInputGen( string pBlockFname , string pNetFname , string pWeightsFname, string pPlFname,
		PlatformInstance* pP ) ;

void ParquetInputGen( string pBlockFname , string pNetFname , string pWeightsFname, string pPlFname,
		Implementation* pI ) ;


}
}
}
#endif /*PARQUETCODEGEN_H_*/
