#ifndef _QUALE_H
#define _QUALE_H

#include <cstdint>
#include <mentalEntity.h>
#include <mentenon.h>
#include <attentionTrigger.h>
#include <implex/implix.h>

namespace smo {

class Quale
: public MentalPhenomenon
{
public:
	Quale(const MentalEntity::Id id, const int32_t intensity)
	: MentalPhenomenon(id),
		intensity(intensity)
	{}

public:
	int32_t intensity;
};

class NeutralQuale
: public Quale
{
};

/* Bounding qualia refer to qualia such as tactile pressure which are
 * mostly neutral but disclose information about the limits of the body.
 * These qualia are supplied by interoceptive sensors.
 **/
class BoundingQuale
: public NeutralQuale
{
};

class NonNeutralQuale
: public Quale, public AttentionTrigger
{
public:
	virtual void eventInd(void);

public:
};

} // namespace smo

#endif
