Vuo 2.4.4
Loading...
Searching...
No Matches
VuoCompilerDelegate.cc
Go to the documentation of this file.
1
11#include "VuoCompiler.hh"
12#include "VuoCompilerIssue.hh"
13
15{
16 pendingDataQueue = dispatch_queue_create("org.vuo.compiler.delegate.pending", 0);
17}
18
20{
21 LoadedModulesData *data = dequeueData();
22 data->release();
23}
24
28void VuoCompilerDelegate::enqueueData(LoadedModulesData *data)
29{
30 dispatch_sync(pendingDataQueue, ^{
31 pendingData.push_back(data);
32 });
33}
34
38VuoCompilerDelegate::LoadedModulesData * VuoCompilerDelegate::dequeueData(void)
39{
40 __block LoadedModulesData *ret;
41 dispatch_sync(pendingDataQueue, ^{
42 ret = pendingData.front();
43 pendingData.pop_front();
44 });
45 return ret;
46}
47
52VuoCompilerDelegate::LoadedModulesData::LoadedModulesData(const set< pair<VuoCompilerModule *, VuoCompilerModule *> > &modulesModified,
53 const set<VuoCompilerModule *> &modulesRemoved, VuoCompilerIssues *issues)
54{
55 referenceCountQueue = dispatch_queue_create("org.vuo.compiler.delegate.reference", 0);
56 referenceCount = 0;
57
58 this->modulesModified = modulesModified;
59 this->modulesRemoved = modulesRemoved;
60 this->issues = issues;
61}
62
66VuoCompilerDelegate::LoadedModulesData::~LoadedModulesData(void)
67{
68 delete issues;
69
70 for (set< pair<VuoCompilerModule *, VuoCompilerModule *> >::iterator i = modulesModified.begin(); i != modulesModified.end(); ++i)
72
73 for (set<VuoCompilerModule *>::iterator i = modulesRemoved.begin(); i != modulesRemoved.end(); ++i)
75}
76
80void VuoCompilerDelegate::LoadedModulesData::retain(void)
81{
82 dispatch_sync(referenceCountQueue, ^{
83 ++referenceCount;
84 });
85}
86
90void VuoCompilerDelegate::LoadedModulesData::release(void)
91{
92 dispatch_sync(referenceCountQueue, ^{
93 --referenceCount;
94 if (referenceCount == 0) {
95 delete this;
96 }
97 });
98}