StringPairArray mergePreprocessorDefs (StringPairArray inheritedDefs, const StringPairArray& overridingDefs) { for (int i = 0; i < overridingDefs.size(); ++i) inheritedDefs.set (overridingDefs.getAllKeys()[i], overridingDefs.getAllValues()[i]); return inheritedDefs; }
String replacePreprocessorDefs (const StringPairArray& definitions, String sourceString) { for (int i = 0; i < definitions.size(); ++i) { const String key (definitions.getAllKeys()[i]); const String value (definitions.getAllValues()[i]); sourceString = sourceString.replace ("${" + key + "}", value); } return sourceString; }
StringPairArray ProjectExporter::BuildConfiguration::getUniquePreprocessorDefs() const { StringPairArray perConfigurationDefs (parsePreprocessorDefs (getBuildConfigPreprocessorDefsString())); const StringPairArray globalDefs (project.getPreprocessorDefs()); for (int i = 0; i < globalDefs.size(); ++i) { String globalKey = globalDefs.getAllKeys()[i]; int idx = perConfigurationDefs.getAllKeys().indexOf (globalKey); if (idx >= 0) { String globalValue = globalDefs.getAllValues()[i]; if (globalValue == perConfigurationDefs.getAllValues()[idx]) perConfigurationDefs.remove (idx); } } return perConfigurationDefs; }
const var EnviJSONRPC::toArray (const StringPairArray &stringPairArray) { var ret = empty(false); DynamicObject *dso = ret.getDynamicObject(); for (int i=0; i<stringPairArray.size(); i++) { dso->setProperty (stringPairArray.getAllKeys() [i], stringPairArray.getAllValues() [i]); } return (ret); }
String createGCCPreprocessorFlags (const StringPairArray& defs) { String s; for (int i = 0; i < defs.size(); ++i) { String def (defs.getAllKeys()[i]); const String value (defs.getAllValues()[i]); if (value.isNotEmpty()) def << "=" << value; s += " -D" + def; } return s; }
//============================================================================== void ProjectSaver::writePluginCharacteristicsFile() { StringPairArray flags; flags.set ("JucePlugin_Build_VST", boolToString (project.shouldBuildVST())); flags.set ("JucePlugin_Build_VST3", boolToString (project.shouldBuildVST3())); flags.set ("JucePlugin_Build_AU", boolToString (project.shouldBuildAU())); flags.set ("JucePlugin_Build_AUv3", boolToString (project.shouldBuildAUv3())); flags.set ("JucePlugin_Build_RTAS", boolToString (project.shouldBuildRTAS())); flags.set ("JucePlugin_Build_AAX", boolToString (project.shouldBuildAAX())); flags.set ("JucePlugin_Build_Standalone", boolToString (project.shouldBuildStandalonePlugin())); flags.set ("JucePlugin_Build_Unity", boolToString (project.shouldBuildUnityPlugin())); flags.set ("JucePlugin_Enable_IAA", boolToString (project.shouldEnableIAA())); flags.set ("JucePlugin_Name", toStringLiteral (project.getPluginNameString())); flags.set ("JucePlugin_Desc", toStringLiteral (project.getPluginDescriptionString())); flags.set ("JucePlugin_Manufacturer", toStringLiteral (project.getPluginManufacturerString())); flags.set ("JucePlugin_ManufacturerWebsite", toStringLiteral (project.getCompanyWebsiteString())); flags.set ("JucePlugin_ManufacturerEmail", toStringLiteral (project.getCompanyEmailString())); flags.set ("JucePlugin_ManufacturerCode", toCharLiteral (project.getPluginManufacturerCodeString())); flags.set ("JucePlugin_PluginCode", toCharLiteral (project.getPluginCodeString())); flags.set ("JucePlugin_IsSynth", boolToString (project.isPluginSynth())); flags.set ("JucePlugin_WantsMidiInput", boolToString (project.pluginWantsMidiInput())); flags.set ("JucePlugin_ProducesMidiOutput", boolToString (project.pluginProducesMidiOutput())); flags.set ("JucePlugin_IsMidiEffect", boolToString (project.isPluginMidiEffect())); flags.set ("JucePlugin_EditorRequiresKeyboardFocus", boolToString (project.pluginEditorNeedsKeyFocus())); flags.set ("JucePlugin_Version", project.getVersionString()); flags.set ("JucePlugin_VersionCode", project.getVersionAsHex()); flags.set ("JucePlugin_VersionString", toStringLiteral (project.getVersionString())); flags.set ("JucePlugin_VSTUniqueID", "JucePlugin_PluginCode"); flags.set ("JucePlugin_VSTCategory", project.getVSTCategoryString()); flags.set ("JucePlugin_Vst3Category", toStringLiteral (project.getVST3CategoryString())); flags.set ("JucePlugin_AUMainType", project.getAUMainTypeString()); flags.set ("JucePlugin_AUSubType", "JucePlugin_PluginCode"); flags.set ("JucePlugin_AUExportPrefix", project.getPluginAUExportPrefixString()); flags.set ("JucePlugin_AUExportPrefixQuoted", toStringLiteral (project.getPluginAUExportPrefixString())); flags.set ("JucePlugin_AUManufacturerCode", "JucePlugin_ManufacturerCode"); flags.set ("JucePlugin_CFBundleIdentifier", project.getBundleIdentifierString()); flags.set ("JucePlugin_RTASCategory", String (project.getRTASCategory())); flags.set ("JucePlugin_RTASManufacturerCode", "JucePlugin_ManufacturerCode"); flags.set ("JucePlugin_RTASProductId", "JucePlugin_PluginCode"); flags.set ("JucePlugin_RTASDisableBypass", boolToString (project.isPluginRTASBypassDisabled())); flags.set ("JucePlugin_RTASDisableMultiMono", boolToString (project.isPluginRTASMultiMonoDisabled())); flags.set ("JucePlugin_AAXIdentifier", project.getAAXIdentifierString()); flags.set ("JucePlugin_AAXManufacturerCode", "JucePlugin_ManufacturerCode"); flags.set ("JucePlugin_AAXProductId", "JucePlugin_PluginCode"); flags.set ("JucePlugin_AAXCategory", String (project.getAAXCategory())); flags.set ("JucePlugin_AAXDisableBypass", boolToString (project.isPluginAAXBypassDisabled())); flags.set ("JucePlugin_AAXDisableMultiMono", boolToString (project.isPluginAAXMultiMonoDisabled())); flags.set ("JucePlugin_IAAType", toCharLiteral (project.getIAATypeCode())); flags.set ("JucePlugin_IAASubType", "JucePlugin_PluginCode"); flags.set ("JucePlugin_IAAName", project.getIAAPluginName().quoted()); flags.set ("JucePlugin_VSTNumMidiInputs", project.getVSTNumMIDIInputsString()); flags.set ("JucePlugin_VSTNumMidiOutputs", project.getVSTNumMIDIOutputsString()); { String plugInChannelConfig = project.getPluginChannelConfigsString(); if (plugInChannelConfig.isNotEmpty()) { flags.set ("JucePlugin_MaxNumInputChannels", String (countMaxPluginChannels (plugInChannelConfig, true))); flags.set ("JucePlugin_MaxNumOutputChannels", String (countMaxPluginChannels (plugInChannelConfig, false))); flags.set ("JucePlugin_PreferredChannelConfigurations", plugInChannelConfig); } } MemoryOutputStream mem; mem.setNewLineString (projectLineFeed); mem << "//==============================================================================" << newLine << "// Audio plugin settings.." << newLine << newLine; for (int i = 0; i < flags.size(); ++i) { mem << "#ifndef " << flags.getAllKeys()[i] << newLine << " #define " << flags.getAllKeys()[i].paddedRight (' ', 32) << " " << flags.getAllValues()[i] << newLine << "#endif" << newLine; } setExtraAppConfigFileContent (mem.toString()); }