#include <map>
#include "BasicTemplate.h"
#include <TopTools_ListOfShape.hxx>
#include <TopoDS_Face.hxx>
#include <TopoDS_Solid.hxx>

class InductorTemplate : public BasicTemplate
{
public:
	InductorTemplate(std::string path);

	void parseInputJSON(json* j);
	void generateGeometry();
	void assignMeshSizes(MeshGenerator_, GeometryData_, double, double);
	bool validate(std::string&);

private:
	double coil_diameter;
	int coil_winding_count;
	double coil_height;
	double coil_profile_diameter;
	double coil_profile_thickness;
	double coil_center_offset;

	double coil_profile_height, coil_profile_width;
	double concentrator_width1, concentrator_width2;


	enum inductorType {
		CIRCULAR,
		RECTANGULAR,
		RECTANGULAR_WITH_CONC
	};

	inductorType ind_type;

	void makeCircularCoil();
	void makeRectangularCoil();
	void makeConcentrator();

	std::string additional_index;

};