|
- /*
- ==============================================================================
-
- This file is part of the JUCE library.
- Copyright (c) 2013 - Raw Material Software Ltd.
-
- Permission is granted to use this software under the terms of either:
- a) the GPL v2 (or any later version)
- b) the Affero GPL v3
-
- Details of these licenses can be found at: www.gnu.org/licenses
-
- JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
- A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
- ------------------------------------------------------------------------------
-
- To release a closed-source product which uses JUCE, commercial licenses are
- available: visit www.juce.com for more information.
-
- ==============================================================================
- */
-
- PluginDescription::PluginDescription()
- : uid (0),
- isInstrument (false),
- numInputChannels (0),
- numOutputChannels (0),
- hasSharedContainer (false)
- {
- }
-
- PluginDescription::~PluginDescription()
- {
- }
-
- PluginDescription::PluginDescription (const PluginDescription& other)
- : name (other.name),
- descriptiveName (other.descriptiveName),
- pluginFormatName (other.pluginFormatName),
- category (other.category),
- manufacturerName (other.manufacturerName),
- version (other.version),
- fileOrIdentifier (other.fileOrIdentifier),
- lastFileModTime (other.lastFileModTime),
- uid (other.uid),
- isInstrument (other.isInstrument),
- numInputChannels (other.numInputChannels),
- numOutputChannels (other.numOutputChannels),
- hasSharedContainer (other.hasSharedContainer)
- {
- }
-
- PluginDescription& PluginDescription::operator= (const PluginDescription& other)
- {
- name = other.name;
- descriptiveName = other.descriptiveName;
- pluginFormatName = other.pluginFormatName;
- category = other.category;
- manufacturerName = other.manufacturerName;
- version = other.version;
- fileOrIdentifier = other.fileOrIdentifier;
- uid = other.uid;
- isInstrument = other.isInstrument;
- lastFileModTime = other.lastFileModTime;
- numInputChannels = other.numInputChannels;
- numOutputChannels = other.numOutputChannels;
- hasSharedContainer = other.hasSharedContainer;
-
- return *this;
- }
-
- bool PluginDescription::isDuplicateOf (const PluginDescription& other) const noexcept
- {
- return fileOrIdentifier == other.fileOrIdentifier
- && uid == other.uid;
- }
-
- static String getPluginDescSuffix (const PluginDescription& d)
- {
- return "-" + String::toHexString (d.fileOrIdentifier.hashCode())
- + "-" + String::toHexString (d.uid);
- }
-
- bool PluginDescription::matchesIdentifierString (const String& identifierString) const
- {
- return identifierString.endsWithIgnoreCase (getPluginDescSuffix (*this));
- }
-
- String PluginDescription::createIdentifierString() const
- {
- return pluginFormatName + "-" + name + getPluginDescSuffix (*this);
- }
-
- XmlElement* PluginDescription::createXml() const
- {
- XmlElement* const e = new XmlElement ("PLUGIN");
- e->setAttribute ("name", name);
- if (descriptiveName != name)
- e->setAttribute ("descriptiveName", descriptiveName);
-
- e->setAttribute ("format", pluginFormatName);
- e->setAttribute ("category", category);
- e->setAttribute ("manufacturer", manufacturerName);
- e->setAttribute ("version", version);
- e->setAttribute ("file", fileOrIdentifier);
- e->setAttribute ("uid", String::toHexString (uid));
- e->setAttribute ("isInstrument", isInstrument);
- e->setAttribute ("fileTime", String::toHexString (lastFileModTime.toMilliseconds()));
- e->setAttribute ("numInputs", numInputChannels);
- e->setAttribute ("numOutputs", numOutputChannels);
- e->setAttribute ("isShell", hasSharedContainer);
-
- return e;
- }
-
- bool PluginDescription::loadFromXml (const XmlElement& xml)
- {
- if (xml.hasTagName ("PLUGIN"))
- {
- name = xml.getStringAttribute ("name");
- descriptiveName = xml.getStringAttribute ("descriptiveName", name);
- pluginFormatName = xml.getStringAttribute ("format");
- category = xml.getStringAttribute ("category");
- manufacturerName = xml.getStringAttribute ("manufacturer");
- version = xml.getStringAttribute ("version");
- fileOrIdentifier = xml.getStringAttribute ("file");
- uid = xml.getStringAttribute ("uid").getHexValue32();
- isInstrument = xml.getBoolAttribute ("isInstrument", false);
- lastFileModTime = Time (xml.getStringAttribute ("fileTime").getHexValue64());
- numInputChannels = xml.getIntAttribute ("numInputs");
- numOutputChannels = xml.getIntAttribute ("numOutputs");
- hasSharedContainer = xml.getBoolAttribute ("isShell", false);
-
- return true;
- }
-
- return false;
- }
|