* <http://www.gnu.org/licenses/>.
*/
+#include "RtcomEvent.h"
+
+#include <QDebug>
+
+#include <QHash>
+#include <QString>
+
#include <rtcom-eventlogger/event.h>
+#include <rtcom-eventlogger/eventlogger.h>
-#include "RtcomEvent.h"
+#include <stdexcept>
using namespace EventTypes;
{
rtcom_el_event_free_contents(&event);
}
+
+const unsigned int RtcomEvent::GetFlagValue(const QString &value) const
+{
+ static QHash<QString, uint> valueLookups;
+
+ if(!valueLookups.contains(value))
+ {
+ RTComEl *el(rtcom_el_new());
+ if(NULL != el)
+ {
+ gint flagValue;
+ if(-1 != (flagValue = rtcom_el_get_flag_value(el, value.toUtf8())))
+ valueLookups.insert(value, flagValue);
+
+ g_object_unref(el);
+
+ if(-1 == flagValue)
+ {
+ throw std::runtime_error(
+ QString("Unable to find flag value '%1'' in rtcom database")
+ .arg(value).toStdString());
+ }
+ }
+ else
+ qDebug() << "Failed to create event logger.";
+ }
+
+ return valueLookups.value(value);
+}
+
#include "iEvent.h"
#include <QList> // Needed for default value
+class QString;
class _RTComElAttachment;
typedef _RTComElAttachment RTComElAttachment;
virtual RTComElEvent * toRTComEvent(const NumberToNameLookup &numberToNameLookup) const = 0;
static void freeRTComContents(RTComElEvent &event);
+
+ const unsigned int GetFlagValue(const QString &value) const;
};
}