Vuo 2.4.4
Loading...
Searching...
No Matches
VuoNodeSet.cc
Go to the documentation of this file.
1
10#include "VuoModule.hh"
11#include "VuoNodeSet.hh"
12
16VuoNodeSet::VuoNodeSet(string archivePath) :
17 archivePath(archivePath)
18{
19}
20
27{
28 if (moduleFile->isInArchive())
29 return new VuoNodeSet(moduleFile->getArchivePath());
30 else
31 return NULL;
32}
33
38{
39 return archivePath;
40}
41
46{
47 string dir, file, ext;
48 VuoFileUtilities::splitPath(archivePath, dir, file, ext);
49 return file;
50}
51
58string VuoNodeSet::getDescriptionFromFile(string fileName)
59{
60 string description;
61 map<string, string>::iterator cachedIter = cachedDescriptions.find(fileName);
62 if (cachedIter == cachedDescriptions.end())
63 {
64 description = VuoFileUtilities::getArchiveFileContentsAsString(archivePath, "descriptions/" + fileName);
65 cachedDescriptions[fileName] = description;
66 }
67 else
68 {
69 description = cachedIter->second;
70 }
71 return description;
72}
73
80{
81 return getDescriptionFromFile(getName() + ".md");
82}
83
90{
91 return getDescriptionFromFile(module->getModuleKey() + ".md");
92}
93
98{
99 set<string> extensions;
100 extensions.insert("vuonode");
101 extensions.insert("vuonode+");
102 set<VuoFileUtilities::File *> files = VuoFileUtilities::findFilesInArchive(archivePath, "", extensions);
103
104 vector<string> classNames;
105 for (set<VuoFileUtilities::File *>::iterator i = files.begin(); i != files.end(); ++i)
106 {
108 string dir, file, ext;
109 VuoFileUtilities::splitPath(f->getRelativePath(), dir, file, ext);
110 classNames.push_back(file);
111 delete f;
112 }
113
114 std::sort(classNames.begin(), classNames.end());
115
116 return classNames;
117}
118
122vector<string> VuoNodeSet::getHeaderPaths(void)
123{
124 set<string> extensions;
125 extensions.insert("h");
126 set<VuoFileUtilities::File *> files = VuoFileUtilities::findFilesInArchive(archivePath, "", extensions);
127
128 vector<string> headerPaths;
129 for (set<VuoFileUtilities::File *>::iterator i = files.begin(); i != files.end(); ++i)
130 {
132 headerPaths.push_back(f->getRelativePath());
133 delete f;
134 }
135
136 return headerPaths;
137}
138
143{
144 set<string> extensions;
145 extensions.insert("vuo");
146 set<VuoFileUtilities::File *> files = VuoFileUtilities::findFilesInArchive(archivePath, "examples", extensions);
147
148 vector<string> fileNames;
149 for (set<VuoFileUtilities::File *>::iterator i = files.begin(); i != files.end(); ++i)
150 {
152 string dir, file, ext;
153 VuoFileUtilities::splitPath(f->getRelativePath(), dir, file, ext);
154 fileNames.push_back(file + "." + ext);
155 delete f;
156 }
157
158 std::sort(fileNames.begin(), fileNames.end());
159
160 return fileNames;
161}
162
168string VuoNodeSet::getModuleSourcePath(const string &moduleKey)
169{
170 set<string> extensions;
171 extensions.insert("vuo");
172 set<string> cExtensions = VuoFileUtilities::getCFamilySourceExtensions();
173 extensions.insert(cExtensions.begin(), cExtensions.end());
174 set<string> isfExtensions = VuoFileUtilities::getIsfSourceExtensions();
175 extensions.insert(isfExtensions.begin(), isfExtensions.end());
176 set<VuoFileUtilities::File *> files = VuoFileUtilities::findFilesInArchive(archivePath, "", extensions);
177
178 string relativePath;
179 for (set<VuoFileUtilities::File *>::iterator i = files.begin(); i != files.end(); ++i)
180 {
182 string dir, file, ext;
183 VuoFileUtilities::splitPath(f->getRelativePath(), dir, file, ext);
184 if (file == moduleKey)
185 {
186 relativePath = f->getRelativePath();
187 break;
188 }
189 }
190
191 for (set<VuoFileUtilities::File *>::iterator i = files.begin(); i != files.end(); ++i)
192 delete *i;
193
194 return relativePath;
195}
196
202string VuoNodeSet::getFileContents(const string &relativePath)
203{
204 return VuoFileUtilities::getArchiveFileContentsAsString(archivePath, relativePath);
205}
206
212string VuoNodeSet::getExampleCompositionContents(string exampleCompositionFileName)
213{
214 return VuoFileUtilities::getArchiveFileContentsAsString(archivePath, "examples/" + exampleCompositionFileName);
215}
216
221{
222 extractResourcesFromSubdirectory("examples", destinationDir);
223}
224
229{
230 extractResourcesFromSubdirectory("descriptions", destinationDir);
231}
232
240void VuoNodeSet::extractResourcesFromSubdirectory(string archiveSubdir, string destinationDir)
241{
242 set<string> extensions;
243 extensions.insert("png");
244 extensions.insert("jpg");
245 extensions.insert("gif");
246 extensions.insert("mov");
247 extensions.insert("mp3");
248 extensions.insert("data");
249 extensions.insert("3ds");
250 extensions.insert("dae");
251 extensions.insert("csv");
252 set<VuoFileUtilities::File *> files = VuoFileUtilities::findFilesInArchive(archivePath, archiveSubdir, extensions);
253
254 for (set<VuoFileUtilities::File *>::iterator i = files.begin(); i != files.end(); ++i)
255 {
257
258 string dir, file, ext;
259 VuoFileUtilities::splitPath(f->getRelativePath(), dir, file, ext);
260 string destinationFile = destinationDir + "/" + file + "." + ext;
261
262 if (! VuoFileUtilities::fileExists(destinationFile))
263 {
264 size_t numBytes = 0;
265 char *data = f->getContentsAsRawData(numBytes);
266 VuoFileUtilities::writeRawDataToFile(data, numBytes, destinationFile);
267 free(data);
268 }
269
270 delete f;
271 }
272}