Index: compiled/FilterNotifier.h |
diff --git a/compiled/FilterNotifier.h b/compiled/FilterNotifier.h |
index bc670f2a967ec5a88fbd15891c81d0999a934c89..54d0aa6cfed1e1713576aca830a02736d8b39b3f 100644 |
--- a/compiled/FilterNotifier.h |
+++ b/compiled/FilterNotifier.h |
@@ -30,7 +30,7 @@ class Subscription; |
namespace FilterNotifier |
{ |
- enum class Topic |
+ enum class Topic : int32_t |
{ |
NONE, |
FILTER_ADDED, |
@@ -51,27 +51,44 @@ namespace FilterNotifier |
SUBSCRIPTION_ERRORS, |
}; |
- inline void GenerateCustomBindings() |
+ template<typename T> |
+ inline T lexical_cast(Topic); |
+ |
+ template<> |
+ inline int32_t lexical_cast<int32_t>(Topic value) |
{ |
- printf("var FilterNotifier = require('filterNotifier').FilterNotifier;\n"); |
- printf("var notifierTopics = new Map([\n"); |
- printf(" [%i, 'filter.added'],\n", Topic::FILTER_ADDED); |
- printf(" [%i, 'filter.removed'],\n", Topic::FILTER_REMOVED); |
- printf(" [%i, 'filter.disabled'],\n", Topic::FILTER_DISABLED); |
- printf(" [%i, 'filter.hitCount'],\n", Topic::FILTER_HITCOUNT); |
- printf(" [%i, 'filter.lastHit'],\n", Topic::FILTER_LASTHIT); |
- printf(" [%i, 'subscription.added'],\n", Topic::SUBSCRIPTION_ADDED); |
- printf(" [%i, 'subscription.removed'],\n", Topic::SUBSCRIPTION_REMOVED); |
- printf(" [%i, 'subscription.moved'],\n", Topic::SUBSCRIPTION_MOVED); |
- printf(" [%i, 'subscription.title'],\n", Topic::SUBSCRIPTION_TITLE); |
- printf(" [%i, 'subscription.disabled'],\n", Topic::SUBSCRIPTION_DISABLED); |
- printf(" [%i, 'subscription.fixedTitle'],\n", Topic::SUBSCRIPTION_FIXEDTITLE); |
- printf(" [%i, 'subscription.homepage'],\n", Topic::SUBSCRIPTION_HOMEPAGE); |
- printf(" [%i, 'subscription.lastCheck'],\n", Topic::SUBSCRIPTION_LASTCHECK); |
- printf(" [%i, 'subscription.lastDownload'],\n", Topic::SUBSCRIPTION_LASTDOWNLOAD); |
- printf(" [%i, 'subscription.downloadStatus'],\n", Topic::SUBSCRIPTION_DOWNLOADSTATUS); |
- printf(" [%i, 'subscription.errors'],\n", Topic::SUBSCRIPTION_ERRORS); |
- printf("]);"); |
+ return static_cast<int32_t>(value); |
+ } |
+ |
+ namespace GenerateCustomBindings |
+ { |
+ inline void printfTopic(const char* format, Topic topic) |
+ { |
+ ::printf(format, lexical_cast<int32_t>(topic)); |
+ } |
+ |
+ inline void Generate() |
+ { |
+ printf("var FilterNotifier = require('filterNotifier').FilterNotifier;\n"); |
+ printf("var notifierTopics = new Map([\n"); |
+ printfTopic(" [%i, 'filter.added'],\n", Topic::FILTER_ADDED); |
+ printfTopic(" [%i, 'filter.removed'],\n", Topic::FILTER_REMOVED); |
+ printfTopic(" [%i, 'filter.disabled'],\n", Topic::FILTER_DISABLED); |
+ printfTopic(" [%i, 'filter.hitCount'],\n", Topic::FILTER_HITCOUNT); |
+ printfTopic(" [%i, 'filter.lastHit'],\n", Topic::FILTER_LASTHIT); |
+ printfTopic(" [%i, 'subscription.added'],\n", Topic::SUBSCRIPTION_ADDED); |
+ printfTopic(" [%i, 'subscription.removed'],\n", Topic::SUBSCRIPTION_REMOVED); |
+ printfTopic(" [%i, 'subscription.moved'],\n", Topic::SUBSCRIPTION_MOVED); |
+ printfTopic(" [%i, 'subscription.title'],\n", Topic::SUBSCRIPTION_TITLE); |
+ printfTopic(" [%i, 'subscription.disabled'],\n", Topic::SUBSCRIPTION_DISABLED); |
+ printfTopic(" [%i, 'subscription.fixedTitle'],\n", Topic::SUBSCRIPTION_FIXEDTITLE); |
+ printfTopic(" [%i, 'subscription.homepage'],\n", Topic::SUBSCRIPTION_HOMEPAGE); |
+ printfTopic(" [%i, 'subscription.lastCheck'],\n", Topic::SUBSCRIPTION_LASTCHECK); |
+ printfTopic(" [%i, 'subscription.lastDownload'],\n", Topic::SUBSCRIPTION_LASTDOWNLOAD); |
+ printfTopic(" [%i, 'subscription.downloadStatus'],\n", Topic::SUBSCRIPTION_DOWNLOADSTATUS); |
+ printfTopic(" [%i, 'subscription.errors'],\n", Topic::SUBSCRIPTION_ERRORS); |
+ printf("]);"); |
+ } |
} |
inline void FilterChange(Topic topic, Filter& filter, |
@@ -86,4 +103,4 @@ namespace FilterNotifier |
} |
} |
-ABP_NS_END |
+ABP_NS_END |