diff options
Diffstat (limited to 'Src/Winamp/FeedBase.cpp')
-rw-r--r-- | Src/Winamp/FeedBase.cpp | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/Src/Winamp/FeedBase.cpp b/Src/Winamp/FeedBase.cpp new file mode 100644 index 00000000..633f6c1c --- /dev/null +++ b/Src/Winamp/FeedBase.cpp @@ -0,0 +1,62 @@ +#include "main.h" +#include "FeedBase.h" +#include <assert.h> + +void FeedBase::dependent_regViewer(api_dependentviewer *viewer, int add) +{ + if (viewer) + { + if (add) + { + //if (!viewers.contains(viewer)) + if(viewers.end() == std::find(viewers.begin(), viewers.end(), viewer)) + { + viewers.push_back(viewer); + } + } + else + { + //viewers.eraseObject(viewer); + auto it = std::find(viewers.begin(), viewers.end(), viewer); + if (it != viewers.end()) + { + viewers.erase(it); + } + } + } +} + +void *FeedBase::dependent_getInterface(const GUID *classguid) +{ + HANDLEGETINTERFACE(svc_textFeed); + return NULL; +} + +api_dependent *FeedBase::getDependencyPtr() +{ + return static_cast<api_dependent *>(this); +} + +void FeedBase::CallViewers( const wchar_t *feedid, const wchar_t *text, size_t length ) +{ + for ( api_dependentviewer *l_viewer : viewers ) + l_viewer->dependentViewer_callback( static_cast<api_dependent *>( this ), svc_textFeed::depend_getClassGuid(), DependentCB::DEPCB_EVENT, Event_TEXTCHANGE, (intptr_t)feedid, (void *)text, length ); +} + +#ifdef CBCLASS +#undef CBCLASS +#endif + +#define CBCLASS FeedBase +START_MULTIPATCH; +START_PATCH(DependentPatch) + M_VCB(DependentPatch, api_dependent, API_DEPENDENT_REGVIEWER, dependent_regViewer); + M_CB(DependentPatch, api_dependent, API_DEPENDENT_GETINTERFACE, dependent_getInterface); + NEXT_PATCH(TextFeedPatch) + M_CB(TextFeedPatch, svc_textFeed, SVCTEXTFEED_HASFEED, hasFeed); + M_CB(TextFeedPatch, svc_textFeed, SVCTEXTFEED_GETFEEDTEXT, getFeedText); + M_CB(TextFeedPatch, svc_textFeed, SVCTEXTFEED_GETFEEDDESC, getFeedDescription); + M_CB(TextFeedPatch, svc_textFeed, SVCTEXTFEED_GETDEPENDENCYPTR, getDependencyPtr); +END_PATCH +END_MULTIPATCH; +#undef CBCLASS
\ No newline at end of file |