{{#models}}{{#model}}/*
 * {{classname}}.h
 *
 * {{description}}
 */

#ifndef _{{classname}}_H_
#define _{{classname}}_H_

{{/model}}{{/models}}
#include <string>
{{#imports}}
{{{import}}}
{{/imports}}
#include "Object.h"

/** \defgroup Models Data Structures for API
 *  Classes containing all the Data Structures needed for calling/returned by API endpoints
 *
 */

namespace Tizen {
namespace {{prefix}} {
{{#models}}{{#model}}

/*! \brief {{{description}}}
 *
 *  \ingroup Models
 *
 */

class {{classname}} : public Object {
public:
	/*! \brief Constructor.
	 */
	{{classname}}();
	{{classname}}(char* str);

	/*! \brief Destructor.
	 */
	virtual ~{{classname}}();

	/*! \brief Retrieve a string JSON representation of this class.
	 */
	char* toJson();

	/*! \brief Fills in members of this class from JSON string representing it.
	 */
	void fromJson(char* jsonStr);

	{{#vars}}
	/*! \brief Get {{{description}}}
	 */
	{{datatype}}{{#isContainer}}{{#isMapContainer}}<std::string, std::string>{{/isMapContainer}}{{^isMapContainer}}<{{#items}}{{datatype}}{{/items}}>{{/isMapContainer}}{{/isContainer}} {{getter}}();

	/*! \brief Set {{{description}}}
	 */
	void {{setter}}({{datatype}} {{#isContainer}}{{#isMapContainer}}<std::string, std::string>{{/isMapContainer}}{{^isMapContainer}}<{{#items}}{{datatype}}{{/items}}>{{/isMapContainer}}{{/isContainer}} {{name}});
	{{/vars}}

private:
	{{#vars}}
	{{datatype}} {{#isContainer}}{{#isMapContainer}}<std::string, std::string>{{/isMapContainer}}{{^isMapContainer}}<{{#items}}{{datatype}}{{/items}}>{{/isMapContainer}}{{/isContainer}}{{name}};
	{{/vars}}
	void __init();
	void __cleanup();

};
{{/model}}
{{/models}}
}
}

#endif /* _{{classname}}_H_ */
