//#####################################################################
// Copyright 2004-2009, Eran Guendelman, Frank Losasso, Andrew Selle.
// This file is part of PhysBAM whose distribution is governed by the license contained in the accompanying file PHYSBAM_COPYRIGHT.txt.
//#####################################################################
#ifndef __PARTICLE_ATTRIBUTE_PROGRAM__
#define __PARTICLE_ATTRIBUTE_PROGRAM__
#include <Core/Arrays/ARRAY.h>
#include <string>

namespace PhysBAM{
template<class TV> class PARTICLES;
template<class TV> class PARTICLE_ATTRIBUTE_PROGRAM_HELPER;
template<class TV>
class PARTICLE_ATTRIBUTE_PROGRAM
{
    PARTICLE_ATTRIBUTE_PROGRAM_HELPER<TV>* h=nullptr;
public:

    PARTICLE_ATTRIBUTE_PROGRAM(PARTICLES<TV>& particles,const std::string& code,
        const ARRAY<std::string>& out_attrs);
    ~PARTICLE_ATTRIBUTE_PROGRAM();

    bool Compute_Attributes();
};
}
#endif
