// __author__ = Juan Carlos De Abreu (jcabreur@gmail.com)

#ifndef DATA_MATERIAL_H__
#define DATA_MATERIAL_H__

#include "Data.h"

BEGIN_TEG_NAMESPACE();

class Material;

class DataMaterial : public IData {
protected:
  // Attributes.
  SmartPointer<Material> value; // 

public:
  // DataMaterial constructor.
  DataMaterial(const SmartPointer<Material>& value_ = NULL);

  // DataMaterial destructor.
  ~DataMaterial();

  // Methods.
  void print();
  SmartPointer<IData> getMethod(
      SmartPointer<IData> elem,
      std::map<std::string, SmartPointer<IData>>& variables);

  SmartPointer<IData> resolve(std::map<std::string, SmartPointer<IData>>& variables) { return NULL; }
  SmartPointer<Material> getValue(void) const;

  AUTO_SIZE();
};

SmartPointer<DataMaterial> castToDataMaterial(const SmartPointer<IData>& d);

END_TEG_NAMESPACE();

#endif  // DATA_MATERIAL_H__
