| @@ -27,7 +27,7 @@ | |||
| #include "Main.h" | |||
| DSPSamplesApplication::DSPSamplesApplication() | |||
| : TimeSliceThread ("Audio File Reader Thread"), demoIndex (-1) | |||
| : TimeSliceThread ("Audio File Reader Thread") | |||
| { | |||
| loopState.addListener (this); | |||
| } | |||
| @@ -50,7 +50,7 @@ void DSPSamplesApplication::shutdown() | |||
| stop(); | |||
| audioDeviceManager.removeAudioCallback (&audioSourcePlayer); | |||
| waitForThreadToExit (10000); | |||
| mainWindow = nullptr; | |||
| mainWindow.reset(); | |||
| } | |||
| //============================================================================== | |||
| @@ -68,8 +68,8 @@ bool DSPSamplesApplication::loadFile (const File& fileToPlay) | |||
| audioSourcePlayer.setSource (nullptr); | |||
| mainWindow->setTransportSource (nullptr); | |||
| transportSource = nullptr; | |||
| readerSource = nullptr; | |||
| transportSource.reset(); | |||
| readerSource.reset(); | |||
| reader = formatManager.createReaderFor (fileToPlay); | |||
| @@ -125,7 +125,7 @@ void DSPSamplesApplication::init() | |||
| } | |||
| audioSourcePlayer.setSource (nullptr); | |||
| currentDemo = nullptr; | |||
| currentDemo.reset(); | |||
| if (currentDemo == nullptr) | |||
| if (auto demo = Demo::getList()[demoIndex]) | |||
| @@ -239,8 +239,7 @@ void MainContentComponent::initParameters() | |||
| { | |||
| auto& parameters = DSPSamplesApplication::getApp().getCurrentDemoParameters(); | |||
| if (parametersComponent != nullptr) | |||
| parametersComponent = nullptr; | |||
| parametersComponent.reset(); | |||
| if (parameters.size() > 0) | |||
| addAndMakeVisible (parametersComponent = new DemoParametersComponent (parameters)); | |||
| @@ -328,8 +328,8 @@ public: | |||
| { | |||
| MainAppWindow::getSharedAudioDeviceManager().removeAudioCallback (liveAudioScroller); | |||
| startTestButton.removeListener (this); | |||
| latencyTester = nullptr; | |||
| liveAudioScroller = nullptr; | |||
| latencyTester.reset(); | |||
| liveAudioScroller.reset(); | |||
| } | |||
| void startTest() | |||
| @@ -361,11 +361,9 @@ private: | |||
| // unload the previous file source and delete it.. | |||
| transportSource.stop(); | |||
| transportSource.setSource (nullptr); | |||
| currentAudioFileSource = nullptr; | |||
| currentAudioFileSource.reset(); | |||
| AudioFormatReader* reader = formatManager.createReaderFor (audioFile); | |||
| if (reader != nullptr) | |||
| if (auto* reader = formatManager.createReaderFor (audioFile)) | |||
| { | |||
| currentAudioFileSource = new AudioFormatReaderSource (reader, true); | |||
| @@ -95,7 +95,7 @@ public: | |||
| // Now we can delete the writer object. It's done in this order because the deletion could | |||
| // take a little time while remaining data gets flushed to disk, so it's best to avoid blocking | |||
| // the audio callback while this happens. | |||
| threadedWriter = nullptr; | |||
| threadedWriter.reset(); | |||
| } | |||
| bool isRecording() const | |||
| @@ -84,7 +84,7 @@ public: | |||
| ~ChildProcessDemo() | |||
| { | |||
| masterProcess = nullptr; | |||
| masterProcess.reset(); | |||
| } | |||
| void paint (Graphics& g) override | |||
| @@ -134,7 +134,7 @@ public: | |||
| { | |||
| if (masterProcess != nullptr) | |||
| { | |||
| masterProcess = nullptr; | |||
| masterProcess.reset(); | |||
| logMessage ("Child process killed"); | |||
| } | |||
| } | |||
| @@ -183,7 +183,7 @@ private: | |||
| //============================================================================== | |||
| void setMidiOutput (int index) | |||
| { | |||
| currentMidiOutput = nullptr; | |||
| currentMidiOutput.reset(); | |||
| if (MidiOutput::getDevices() [index].isNotEmpty()) | |||
| { | |||
| @@ -642,10 +642,10 @@ struct OpenGLDemoClasses | |||
| void freeAllContextObjects() | |||
| { | |||
| shape = nullptr; | |||
| shader = nullptr; | |||
| attributes = nullptr; | |||
| uniforms = nullptr; | |||
| shape.reset(); | |||
| shader.reset(); | |||
| attributes.reset(); | |||
| uniforms.reset(); | |||
| texture.release(); | |||
| } | |||
| @@ -832,9 +832,9 @@ struct OpenGLDemoClasses | |||
| && newShader->addFragmentShader (OpenGLHelpers::translateFragmentShaderToV3 (newFragmentShader)) | |||
| && newShader->link()) | |||
| { | |||
| shape = nullptr; | |||
| attributes = nullptr; | |||
| uniforms = nullptr; | |||
| shape.reset(); | |||
| attributes.reset(); | |||
| uniforms.reset(); | |||
| shader = newShader; | |||
| shader->use(); | |||
| @@ -69,7 +69,7 @@ public: | |||
| ~OpenGL2DShaderDemo() | |||
| { | |||
| shader = nullptr; | |||
| shader.reset(); | |||
| } | |||
| void paint (Graphics& g) override | |||
| @@ -78,7 +78,7 @@ public: | |||
| if (shader == nullptr || shader->getFragmentShaderCode() != fragmentCode) | |||
| { | |||
| shader = nullptr; | |||
| shader.reset(); | |||
| if (fragmentCode.isNotEmpty()) | |||
| { | |||
| @@ -89,7 +89,7 @@ public: | |||
| if (result.failed()) | |||
| { | |||
| statusLabel.setText (result.getErrorMessage(), dontSendNotification); | |||
| shader = nullptr; | |||
| shader.reset(); | |||
| } | |||
| } | |||
| } | |||
| @@ -180,7 +180,7 @@ struct UnitTestClasses | |||
| if (currentTestThread != nullptr) | |||
| { | |||
| currentTestThread->stopThread (15000); | |||
| currentTestThread = nullptr; | |||
| currentTestThread.reset(); | |||
| } | |||
| } | |||
| @@ -296,14 +296,14 @@ private: | |||
| { | |||
| // clear the current tree | |||
| resultsTree.setRootItem (nullptr); | |||
| rootItem = nullptr; | |||
| rootItem.reset(); | |||
| // try and parse the editor's contents | |||
| switch (typeBox.getSelectedItemIndex()) | |||
| { | |||
| case xml: rootItem = rebuildXml(); break; | |||
| case json: rootItem = rebuildJson(); break; | |||
| default: rootItem = nullptr; break; | |||
| default: rootItem.reset(); break; | |||
| } | |||
| // if we have a valid TreeViewItem hide any old error messages and set our TreeView to use it | |||
| @@ -318,7 +318,7 @@ private: | |||
| /** Parses the editors contects as XML. */ | |||
| TreeViewItem* rebuildXml() | |||
| { | |||
| parsedXml = nullptr; | |||
| parsedXml.reset(); | |||
| XmlDocument doc (codeDocument.getAllContent()); | |||
| parsedXml = doc.getDocumentElement(); | |||
| @@ -51,7 +51,7 @@ public: | |||
| void shutdown() override | |||
| { | |||
| // Do your application's shutdown code here.. | |||
| mainWindow = nullptr; | |||
| mainWindow.reset(); | |||
| } | |||
| //============================================================================== | |||
| @@ -134,7 +134,7 @@ public: | |||
| void clearCurrentDemo() | |||
| { | |||
| currentDemo = nullptr; | |||
| currentDemo.reset(); | |||
| } | |||
| void resized() override | |||
| @@ -202,7 +202,7 @@ public: | |||
| { | |||
| if (auto* selectedDemoType = JuceDemoTypeBase::getDemoTypeList() [lastRowSelected]) | |||
| { | |||
| currentDemo = nullptr; | |||
| currentDemo.reset(); | |||
| addAndMakeVisible (currentDemo = selectedDemoType->createComponent()); | |||
| currentDemo->setName (selectedDemoType->name); | |||
| resized(); | |||
| @@ -618,9 +618,9 @@ MainAppWindow::~MainAppWindow() | |||
| { | |||
| contentComponent->clearCurrentDemo(); | |||
| clearContentComponent(); | |||
| contentComponent = nullptr; | |||
| applicationCommandManager = nullptr; | |||
| sharedAudioDeviceManager = nullptr; | |||
| contentComponent.reset(); | |||
| applicationCommandManager.reset(); | |||
| sharedAudioDeviceManager.reset(); | |||
| #if JUCE_OPENGL | |||
| openGLContext.detach(); | |||
| @@ -41,7 +41,7 @@ public: | |||
| bool showPurchaseButton = false; | |||
| #if ! JUCER_ENABLE_GPL_MODE | |||
| if (LicenseController* controller = ProjucerApplication::getApp().licenseController) | |||
| if (auto* controller = ProjucerApplication::getApp().licenseController.get()) | |||
| showPurchaseButton = (controller->getState().type != LicenseState::Type::indie | |||
| && controller->getState().type != LicenseState::Type::pro); | |||
| #endif | |||
| @@ -130,19 +130,17 @@ private: | |||
| Rectangle<float> huckleberryLogoBounds; | |||
| Rectangle<float> juceLogoBounds; | |||
| ScopedPointer<Drawable> juceLogo | |||
| = Drawable::createFromImageData (BinaryData::juce_icon_png, | |||
| BinaryData::juce_icon_pngSize); | |||
| ScopedPointer<Drawable> juceLogo { Drawable::createFromImageData (BinaryData::juce_icon_png, | |||
| BinaryData::juce_icon_pngSize) }; | |||
| ScopedPointer<Drawable> huckleberryLogo | |||
| = Drawable::createFromImageData (BinaryData::huckleberry_icon_svg, | |||
| BinaryData::huckleberry_icon_svgSize); | |||
| ScopedPointer<Drawable> huckleberryLogo { Drawable::createFromImageData (BinaryData::huckleberry_icon_svg, | |||
| BinaryData::huckleberry_icon_svgSize) }; | |||
| void buttonClicked (Button* b) override | |||
| { | |||
| if (b == licenseButton) | |||
| if (b == licenseButton.get()) | |||
| { | |||
| if (LicenseController* controller = ProjucerApplication::getApp().licenseController) | |||
| if (auto* controller = ProjucerApplication::getApp().licenseController.get()) | |||
| controller->chooseNewLicense(); | |||
| } | |||
| } | |||
| @@ -69,7 +69,7 @@ public: | |||
| { | |||
| addAndMakeVisible (shareApplicationUsageDataToggle = new ToggleButton()); | |||
| LicenseController* controller = ProjucerApplication::getApp().licenseController; | |||
| auto* controller = ProjucerApplication::getApp().licenseController.get(); | |||
| if (controller != nullptr && controller->getState().applicationUsageDataState == LicenseState::ApplicationUsageData::disabled) | |||
| shareApplicationUsageDataToggle->setToggleState (false, dontSendNotification); | |||
| @@ -90,7 +90,7 @@ public: | |||
| ~ApplicationUsageDataWindowComponent() | |||
| { | |||
| if (LicenseController* controller = ProjucerApplication::getApp().licenseController) | |||
| if (auto* controller = ProjucerApplication::getApp().licenseController.get()) | |||
| { | |||
| auto newApplicationUsageDataState = LicenseState::ApplicationUsageData::enabled; | |||
| @@ -160,7 +160,7 @@ private: | |||
| } | |||
| else if (b == upgradeLicenseButton) | |||
| { | |||
| if (LicenseController* controller = ProjucerApplication::getApp().licenseController) | |||
| if (auto* controller = ProjucerApplication::getApp().licenseController.get()) | |||
| controller->chooseNewLicense(); | |||
| } | |||
| } | |||
| @@ -39,7 +39,7 @@ public: | |||
| else | |||
| content = new AppearanceEditor::EditorPanel(); | |||
| changeContent (content); | |||
| changeContent (content.get()); | |||
| } | |||
| void paint (Graphics& g) override | |||
| @@ -68,7 +68,7 @@ struct FloatingToolWindow : public DialogWindow | |||
| void closeButtonPressed() override | |||
| { | |||
| owner = nullptr; | |||
| owner.reset(); | |||
| } | |||
| bool escapeKeyPressed() override | |||
| @@ -195,31 +195,31 @@ void ProjucerApplication::shutdown() | |||
| Logger::writeToLog ("Server shutdown cleanly"); | |||
| } | |||
| versionChecker = nullptr; | |||
| utf8Window = nullptr; | |||
| svgPathWindow = nullptr; | |||
| aboutWindow = nullptr; | |||
| pathsWindow = nullptr; | |||
| editorColourSchemeWindow = nullptr; | |||
| versionChecker.reset(); | |||
| utf8Window.reset(); | |||
| svgPathWindow.reset(); | |||
| aboutWindow.reset(); | |||
| pathsWindow.reset(); | |||
| editorColourSchemeWindow.reset(); | |||
| if (licenseController != nullptr) | |||
| { | |||
| licenseController->removeLicenseStatusChangedCallback (this); | |||
| licenseController = nullptr; | |||
| licenseController.reset(); | |||
| } | |||
| mainWindowList.forceCloseAllWindows(); | |||
| openDocumentManager.clear(); | |||
| childProcessCache = nullptr; | |||
| childProcessCache.reset(); | |||
| #if JUCE_MAC | |||
| MenuBarModel::setMacMainMenu (nullptr); | |||
| #endif | |||
| menuModel = nullptr; | |||
| commandManager = nullptr; | |||
| settings = nullptr; | |||
| menuModel.reset(); | |||
| commandManager.reset(); | |||
| settings.reset(); | |||
| LookAndFeel::setDefaultLookAndFeel (nullptr); | |||
| @@ -739,7 +739,7 @@ void ProjucerApplication::showApplicationUsageDataAgreementPopup() | |||
| void ProjucerApplication::dismissApplicationUsageDataAgreementPopup() | |||
| { | |||
| if (applicationUsageDataWindow != nullptr) | |||
| applicationUsageDataWindow = nullptr; | |||
| applicationUsageDataWindow.reset(); | |||
| } | |||
| void ProjucerApplication::showPathsWindow() | |||
| @@ -804,7 +804,7 @@ void ProjucerApplication::deleteLogger() | |||
| } | |||
| } | |||
| logger = nullptr; | |||
| logger.reset(); | |||
| } | |||
| PropertiesFile::Options ProjucerApplication::getPropertyFileOptionsFor (const String& filename, bool isProjectSettings) | |||
| @@ -308,16 +308,16 @@ public: | |||
| ~UpdateUserDialog() | |||
| { | |||
| titleLabel = nullptr; | |||
| contentLabel = nullptr; | |||
| okButton = nullptr; | |||
| cancelButton = nullptr; | |||
| changeLogLabel = nullptr; | |||
| changeLog = nullptr; | |||
| overwriteLabel = nullptr; | |||
| overwritePath = nullptr; | |||
| overwriteButton = nullptr; | |||
| juceIcon = nullptr; | |||
| titleLabel.reset(); | |||
| contentLabel.reset(); | |||
| okButton.reset(); | |||
| cancelButton.reset(); | |||
| changeLogLabel.reset(); | |||
| changeLog.reset(); | |||
| overwriteLabel.reset(); | |||
| overwritePath.reset(); | |||
| overwriteButton.reset(); | |||
| juceIcon.reset(); | |||
| } | |||
| void paint (Graphics& g) override | |||
| @@ -136,7 +136,7 @@ namespace | |||
| if (! project->loadFrom (projectFile, true)) | |||
| { | |||
| project = nullptr; | |||
| project.reset(); | |||
| throw CommandLineError ("Failed to load the project file: " + projectFile.getFullPathName()); | |||
| } | |||
| } | |||
| @@ -148,7 +148,7 @@ namespace | |||
| Result error (justSaveResources ? project->saveResourcesOnly (project->getFile()) | |||
| : project->saveProject (project->getFile(), true)); | |||
| project = nullptr; | |||
| project.reset(); | |||
| if (error.failed()) | |||
| throw CommandLineError ("Error when saving: " + error.getErrorMessage()); | |||
| @@ -302,7 +302,7 @@ namespace | |||
| ScopedPointer<FileOutputStream> out (temp.getFile().createOutputStream()); | |||
| bool ok = out != nullptr && zip.writeToStream (*out, nullptr); | |||
| out = nullptr; | |||
| out.reset(); | |||
| ok = ok && temp.overwriteTargetFileWithTemporary(); | |||
| if (! ok) | |||
| @@ -90,7 +90,7 @@ MainWindow::~MainWindow() | |||
| getGlobalProperties().setValue ("lastMainWindowPos", getWindowStateAsString()); | |||
| clearContentComponent(); | |||
| currentProject = nullptr; | |||
| currentProject.reset(); | |||
| } | |||
| void MainWindow::createProjectContentCompIfNeeded() | |||
| @@ -155,7 +155,7 @@ bool MainWindow::closeProject (Project* project) | |||
| bool MainWindow::closeCurrentProject() | |||
| { | |||
| return currentProject == nullptr || closeProject (currentProject); | |||
| return currentProject == nullptr || closeProject (currentProject.get()); | |||
| } | |||
| void MainWindow::setProject (Project* newProject) | |||
| @@ -200,17 +200,17 @@ bool MainWindow::openFile (const File& file) | |||
| { | |||
| ScopedPointer<Project> newDoc (new Project (file)); | |||
| Result result (newDoc->loadFrom (file, true)); | |||
| auto result = newDoc->loadFrom (file, true); | |||
| if (result.wasOk() && closeCurrentProject()) | |||
| { | |||
| setProject (newDoc); | |||
| setProject (newDoc.get()); | |||
| newDoc.release()->setChangedFlag (false); | |||
| jassert (getProjectContentComponent() != nullptr); | |||
| getProjectContentComponent()->reloadLastOpenDocuments(); | |||
| if (Project* p = getProject()) | |||
| if (auto* p = getProject()) | |||
| p->updateDeprecatedProjectSettingsInteractively(); | |||
| return true; | |||
| @@ -50,7 +50,7 @@ public: | |||
| bool canOpenFile (const File& file) const; | |||
| bool openFile (const File& file); | |||
| void setProject (Project* newProject); | |||
| Project* getProject() const { return currentProject; } | |||
| Project* getProject() const { return currentProject.get(); } | |||
| void makeVisible(); | |||
| void restoreWindowPosition(); | |||
| @@ -81,7 +81,7 @@ private: | |||
| { | |||
| facts.clear(); | |||
| facts.add (file.getFullPathName()); | |||
| drawable = nullptr; | |||
| drawable.reset(); | |||
| { | |||
| ScopedPointer<InputStream> input (file.createInputStream()); | |||
| @@ -94,7 +94,7 @@ private: | |||
| if (ImageFileFormat* format = ImageFileFormat::findImageFormatForStream (*input)) | |||
| formatName = " " + format->getFormatName(); | |||
| input = nullptr; | |||
| input.reset(); | |||
| Image image (ImageCache::getFromFile (file)); | |||
| @@ -345,7 +345,7 @@ private: | |||
| || underMouse->findParentComponentOfClass<ControlsComponent>() != nullptr)) | |||
| return; | |||
| overlay = nullptr; | |||
| overlay.reset(); | |||
| if (hasKeyboardFocus (true) && underMouse != nullptr | |||
| && (underMouse == this || underMouse->isParentOf (this))) | |||
| @@ -372,7 +372,7 @@ private: | |||
| void hideOverlay() | |||
| { | |||
| stopTimer(); | |||
| overlay = nullptr; | |||
| overlay.reset(); | |||
| } | |||
| void focusLost (FocusChangeType) override | |||
| @@ -474,7 +474,7 @@ void GenericCodeEditorComponent::showFindPanel() | |||
| void GenericCodeEditorComponent::hideFindPanel() | |||
| { | |||
| findPanel = nullptr; | |||
| findPanel.reset(); | |||
| } | |||
| void GenericCodeEditorComponent::findSelection() | |||
| @@ -46,11 +46,11 @@ public: | |||
| bool hasFileBeenModifiedExternally() override { return modDetector.hasBeenModified(); } | |||
| void fileHasBeenRenamed (const File& newFile) override { modDetector.fileHasBeenRenamed (newFile); } | |||
| String getState() const override { return lastState != nullptr ? lastState->toString() : String(); } | |||
| void restoreState (const String& state) override { lastState = new CodeEditorComponent::State (state); } | |||
| void restoreState (const String& state) override { lastState.reset (new CodeEditorComponent::State (state)); } | |||
| File getCounterpartFile() const override | |||
| { | |||
| const File file (getFile()); | |||
| auto file = getFile(); | |||
| if (file.hasFileExtension (sourceFileExtensions)) | |||
| { | |||
| @@ -378,7 +378,7 @@ private: | |||
| || jucerComp->getOwnerDocument() == nullptr | |||
| || jucerComp->getFilename() != jucerComponentFile) | |||
| { | |||
| jucerComp = nullptr; | |||
| jucerComp.reset(); | |||
| jucerComp = new TestComponent (ComponentTypeHandler::findParentDocument (this), 0, false); | |||
| jucerComp->setFilename (jucerComponentFile); | |||
| @@ -389,7 +389,7 @@ private: | |||
| } | |||
| else | |||
| { | |||
| jucerComp = nullptr; | |||
| jucerComp.reset(); | |||
| } | |||
| resized(); | |||
| @@ -113,14 +113,14 @@ PaintRoutine* ButtonDocument::getPaintRoutine (const int index) const | |||
| if (paintStatesEnabled [i]) | |||
| { | |||
| if (index == n) | |||
| return paintRoutines [i]; | |||
| else | |||
| ++n; | |||
| return paintRoutines[i].get(); | |||
| ++n; | |||
| } | |||
| } | |||
| jassertfalse; | |||
| return 0; | |||
| return {}; | |||
| } | |||
| void ButtonDocument::setStatePaintRoutineEnabled (const int index, bool b) | |||
| @@ -45,7 +45,7 @@ public: | |||
| StringArray getPaintRoutineNames() const { return StringArray ("Graphics"); } | |||
| PaintRoutine* getPaintRoutine (const int index) const { return index == 0 ? backgroundGraphics.get() : nullptr; } | |||
| ComponentLayout* getComponentLayout() const { return components; } | |||
| ComponentLayout* getComponentLayout() const { return components.get(); } | |||
| //============================================================================== | |||
| XmlElement* createXml() const; | |||
| @@ -598,8 +598,7 @@ void JucerDocumentEditor::saveLastSelectedTab() const | |||
| { | |||
| if (document != nullptr) | |||
| { | |||
| auto* project = document->getCppDocument().getProject(); | |||
| if (project != nullptr) | |||
| if (auto* project = document->getCppDocument().getProject()) | |||
| { | |||
| auto& projectProps = project->getStoredProperties(); | |||
| @@ -617,7 +616,7 @@ void JucerDocumentEditor::saveLastSelectedTab() const | |||
| child->setAttribute ("tab", tabbedComponent.getCurrentTabIndex()); | |||
| projectProps.setValue ("GUIComponentsLastTab", root); | |||
| projectProps.setValue ("GUIComponentsLastTab", root.get()); | |||
| } | |||
| } | |||
| } | |||
| @@ -626,10 +625,10 @@ void JucerDocumentEditor::restoreLastSelectedTab() | |||
| { | |||
| if (document != nullptr) | |||
| { | |||
| auto* project = document->getCppDocument().getProject(); | |||
| if (project != nullptr) | |||
| if (auto* project = document->getCppDocument().getProject()) | |||
| { | |||
| ScopedPointer<XmlElement> root (project->getStoredProperties().getXmlValue ("GUIComponentsLastTab")); | |||
| if (root != nullptr) | |||
| { | |||
| auto* child = root->getChildByName (document->getCppFile().getFileName()); | |||
| @@ -154,7 +154,7 @@ void PaintRoutineEditor::visibilityChanged() | |||
| void PaintRoutineEditor::refreshAllElements() | |||
| { | |||
| for (int i = getNumChildComponents(); --i >= 0;) | |||
| if (PaintElement* const e = dynamic_cast<PaintElement*> (getChildComponent (i))) | |||
| if (auto* e = dynamic_cast<PaintElement*> (getChildComponent (i))) | |||
| if (! graphics.containsElement (e)) | |||
| removeChildComponent (e); | |||
| @@ -162,7 +162,7 @@ void PaintRoutineEditor::refreshAllElements() | |||
| for (int i = graphics.getNumElements(); --i >= 0;) | |||
| { | |||
| PaintElement* const e = graphics.getElement (i); | |||
| auto* e = graphics.getElement (i); | |||
| addAndMakeVisible (e); | |||
| @@ -268,7 +268,7 @@ void PaintRoutineEditor::filesDropped (const StringArray& filenames, int x, int | |||
| if (d != nullptr) | |||
| { | |||
| d = nullptr; | |||
| d.reset(); | |||
| document.beginTransaction(); | |||
| @@ -94,7 +94,7 @@ void TestComponent::setFilename (const String& newName) | |||
| { | |||
| recursiveFiles.add (newFile.getFullPathName()); | |||
| loadedDocument = nullptr; | |||
| loadedDocument.reset(); | |||
| filename = newName; | |||
| lastModificationTime = findFile().getLastModificationTime(); | |||
| @@ -121,7 +121,7 @@ void BinaryResources::add (const String& name, const String& originalFileName, c | |||
| r->originalFilename = originalFileName; | |||
| r->data = data; | |||
| r->drawable = nullptr; | |||
| r->drawable.reset(); | |||
| changed(); | |||
| } | |||
| @@ -420,7 +420,7 @@ Component* ComponentLayout::addNewComponent (ComponentTypeHandler* const type, i | |||
| c->getProperties().set ("id", nextCompUID++); | |||
| ScopedPointer<XmlElement> xml (type->createXmlFor (c, this)); | |||
| c = nullptr; | |||
| c.reset(); | |||
| c = addComponentFromXml (*xml, true); | |||
| String memberName (CodeHelpers::makeValidIdentifier (type->getClassName (c), true, true, false)); | |||
| @@ -564,7 +564,7 @@ bool JucerDocument::flushChangesToDocuments (Project* project) | |||
| cpp->getCodeDocument().replaceAllContent (cppTemplate); | |||
| } | |||
| userDocChangeTimer = nullptr; | |||
| userDocChangeTimer.reset(); | |||
| return true; | |||
| } | |||
| @@ -771,7 +771,7 @@ public: | |||
| jucerDoc->setClassName (newFile.getFileNameWithoutExtension()); | |||
| jucerDoc->flushChangesToDocuments (&project); | |||
| jucerDoc = nullptr; | |||
| jucerDoc.reset(); | |||
| cpp->save(); | |||
| header->save(); | |||
| @@ -553,7 +553,7 @@ void PaintRoutine::dropImageAt (const File& f, int x, int y) | |||
| if (d != nullptr) | |||
| { | |||
| auto bounds = d->getDrawableBounds(); | |||
| d = nullptr; | |||
| d.reset(); | |||
| auto* newElement = addNewElement (ObjectTypes::createNewImageElement (this), -1, true); | |||
| @@ -114,7 +114,7 @@ LicenseController::LicenseController() | |||
| LicenseController::~LicenseController() | |||
| { | |||
| #if !JUCER_ENABLE_GPL_MODE | |||
| thread = nullptr; | |||
| thread.reset(); | |||
| closeWebview (-1); | |||
| #endif | |||
| } | |||
| @@ -155,7 +155,7 @@ void LicenseController::logout() | |||
| jassert (MessageManager::getInstance()->isThisTheMessageThread()); | |||
| #if ! JUCER_ENABLE_GPL_MODE | |||
| thread = nullptr; | |||
| thread.reset(); | |||
| updateState ({}); | |||
| #if ! JUCE_LINUX | |||
| @@ -171,7 +171,7 @@ void LicenseController::chooseNewLicense() | |||
| jassert (MessageManager::getInstance()->isThisTheMessageThread()); | |||
| #if ! JUCER_ENABLE_GPL_MODE | |||
| thread = nullptr; | |||
| thread.reset(); | |||
| thread = new LicenseThread (*this, true); | |||
| #endif | |||
| } | |||
| @@ -174,7 +174,7 @@ struct LicenseThread : NetWorkerThread | |||
| if (statusCode == 200) | |||
| { | |||
| var result = JSON::parse (shared->readEntireStreamAsString()); | |||
| shared = nullptr; | |||
| shared.reset(); | |||
| auto newState = licenseStateFromJSON (result, stateToUpdate.authToken, stateToUpdate.avatar); | |||
| @@ -222,7 +222,7 @@ struct LicenseThread : NetWorkerThread | |||
| var json = JSON::parse (shared->withExtraHeaders (accessTokenHeader) | |||
| .readEntireStreamAsString()); | |||
| shared = nullptr; | |||
| shared.reset(); | |||
| if (auto* jsonLicenses = json.getArray()) | |||
| { | |||
| @@ -81,15 +81,14 @@ private: | |||
| struct Header : public Component, private LicenseController::StateChangedCallback, | |||
| private Button::Listener | |||
| { | |||
| Header () | |||
| : avatarButton ("User Settings", &getIcons().user) | |||
| Header() : avatarButton ("User Settings", &getIcons().user) | |||
| { | |||
| setOpaque (true); | |||
| addChildComponent (avatarButton); | |||
| avatarButton.addListener (this); | |||
| if (LicenseController* licenseController = ProjucerApplication::getApp().licenseController) | |||
| if (auto* licenseController = ProjucerApplication::getApp().licenseController.get()) | |||
| { | |||
| licenseController->addLicenseStatusChangedCallback (this); | |||
| licenseStateChanged (licenseController->getState()); | |||
| @@ -100,7 +99,7 @@ private: | |||
| { | |||
| avatarButton.removeListener (this); | |||
| if (LicenseController* licenseController = ProjucerApplication::getApp().licenseController) | |||
| if (auto* licenseController = ProjucerApplication::getApp().licenseController.get()) | |||
| licenseController->removeLicenseStatusChangedCallback (this); | |||
| } | |||
| @@ -128,9 +127,9 @@ private: | |||
| void buttonClicked (Button*) override | |||
| { | |||
| if (LicenseController* licenseController = ProjucerApplication::getApp().licenseController) | |||
| if (auto* licenseController = ProjucerApplication::getApp().licenseController.get()) | |||
| { | |||
| const LicenseState::Type type = licenseController->getState().type; | |||
| auto type = licenseController->getState().type; | |||
| auto* content = new UserSettingsPopup (true); | |||
| content->setSize (200, (type == LicenseState::Type::noLicenseChosenYet ? 100 : 150)); | |||
| @@ -293,12 +293,12 @@ public: | |||
| if (isRunningApp && server != nullptr) | |||
| server->killServerWithoutMercy(); | |||
| server = nullptr; | |||
| server.reset(); | |||
| } | |||
| void restartServer() | |||
| { | |||
| server = nullptr; | |||
| server.reset(); | |||
| server = new ClientIPC (owner); | |||
| sendRebuild(); | |||
| } | |||
| @@ -578,7 +578,7 @@ CompileEngineChildProcess::~CompileEngineChildProcess() | |||
| { | |||
| ProjucerApplication::getApp().openDocumentManager.removeListener (this); | |||
| process = nullptr; | |||
| process.reset(); | |||
| lastComponentList.clear(); | |||
| } | |||
| @@ -588,7 +588,7 @@ void CompileEngineChildProcess::createProcess() | |||
| process = new ChildProcess (*this, project); | |||
| if (! process->openedOk) | |||
| process = nullptr; | |||
| process.reset(); | |||
| updateAllEditors(); | |||
| } | |||
| @@ -662,7 +662,7 @@ bool CompileEngineChildProcess::canKillApp() const | |||
| void CompileEngineChildProcess::killApp() | |||
| { | |||
| runningAppProcess = nullptr; | |||
| runningAppProcess.reset(); | |||
| } | |||
| void CompileEngineChildProcess::handleAppLaunched() | |||
| @@ -675,7 +675,7 @@ void CompileEngineChildProcess::handleAppLaunched() | |||
| void CompileEngineChildProcess::handleAppQuit() | |||
| { | |||
| DBG ("handleAppQuit"); | |||
| runningAppProcess = nullptr; | |||
| runningAppProcess.reset(); | |||
| } | |||
| //============================================================================== | |||
| @@ -162,7 +162,7 @@ public: | |||
| ~ServerIPC() | |||
| { | |||
| zombieKiller = nullptr; | |||
| zombieKiller.reset(); | |||
| if (dll.isLoaded()) | |||
| dll.projucer_deleteBuilder (liveCodeBuilder); | |||
| @@ -69,12 +69,12 @@ public: | |||
| Icon getIcon() const override | |||
| { | |||
| return getIconForExporter (exporter).withColour (getContentColour (true)); | |||
| return getIconForExporter (exporter.get()).withColour (getContentColour (true)); | |||
| } | |||
| void showDocument() override | |||
| { | |||
| showSettingsPage (new SettingsComp (exporter)); | |||
| showSettingsPage (new SettingsComp (exporter.get())); | |||
| } | |||
| void deleteItem() override | |||
| @@ -142,7 +142,7 @@ public: | |||
| void itemDropped (const DragAndDropTarget::SourceDetails& dragSourceDetails, int insertIndex) override | |||
| { | |||
| const int oldIndex = indexOfConfig (dragSourceDetails.description.toString().fromLastOccurrenceOf ("||", false, false)); | |||
| auto oldIndex = indexOfConfig (dragSourceDetails.description.toString().fromLastOccurrenceOf ("||", false, false)); | |||
| if (oldIndex >= 0) | |||
| configListTree.moveChild (oldIndex, insertIndex, project.getUndoManagerFor (configListTree)); | |||
| @@ -201,10 +201,10 @@ public: | |||
| ~ConcertinaTreeComponent() | |||
| { | |||
| treeToDisplay = nullptr; | |||
| addButton = nullptr; | |||
| findPanel = nullptr; | |||
| settingsButton = nullptr; | |||
| treeToDisplay.reset(); | |||
| addButton.reset(); | |||
| findPanel.reset(); | |||
| settingsButton.reset(); | |||
| } | |||
| void resized() override | |||
| @@ -98,7 +98,7 @@ public: | |||
| if (existingComponentToUpdate == nullptr | |||
| || dynamic_cast<FileOptionComponent*> (existing.get())->item != child) | |||
| { | |||
| existing = nullptr; | |||
| existing.reset(); | |||
| existing = new FileOptionComponent (child, dynamic_cast<ListBoxHeader*> (list.getHeaderComponent())); | |||
| } | |||
| } | |||
| @@ -99,11 +99,11 @@ ProjectContentComponent::~ProjectContentComponent() | |||
| ProjucerApplication::getApp().openDocumentManager.removeListener (this); | |||
| logo = nullptr; | |||
| header = nullptr; | |||
| logo.reset(); | |||
| header.reset(); | |||
| setProject (nullptr); | |||
| contentView = nullptr; | |||
| fileNameLabel = nullptr; | |||
| contentView.reset(); | |||
| fileNameLabel.reset(); | |||
| removeChildComponent (&bubbleMessage); | |||
| jassert (getNumChildComponents() <= 1); | |||
| } | |||
| @@ -178,8 +178,8 @@ void ProjectContentComponent::setProject (Project* newProject) | |||
| if (project != nullptr) | |||
| project->removeChangeListener (this); | |||
| contentView = nullptr; | |||
| resizerBar = nullptr; | |||
| contentView.reset(); | |||
| resizerBar.reset(); | |||
| deleteProjectTabs(); | |||
| project = newProject; | |||
| @@ -391,7 +391,7 @@ bool ProjectContentComponent::showDocument (OpenDocumentManager::Document* doc, | |||
| void ProjectContentComponent::hideEditor() | |||
| { | |||
| currentDocument = nullptr; | |||
| contentView = nullptr; | |||
| contentView.reset(); | |||
| if (fileNameLabel != nullptr) | |||
| fileNameLabel->setVisible (false); | |||
| @@ -416,7 +416,7 @@ bool ProjectContentComponent::setEditorComponent (Component* editor, | |||
| { | |||
| if (editor != nullptr) | |||
| { | |||
| contentView = nullptr; | |||
| contentView.reset(); | |||
| if (doc == nullptr) | |||
| { | |||
| @@ -67,7 +67,7 @@ public: | |||
| void hideEditor(); | |||
| bool setEditorComponent (Component* editor, OpenDocumentManager::Document* doc); | |||
| Component* getEditorComponentContent() const; | |||
| Component* getEditorComponent() const { return contentView; } | |||
| Component* getEditorComponent() const { return contentView.get(); } | |||
| Component& getSidebarComponent() { return sidebarTabs; } | |||
| bool goToPreviousFile(); | |||
| @@ -407,7 +407,7 @@ Result Project::loadDocument (const File& file) | |||
| return Result::fail ("The document contains errors and couldn't be parsed!"); | |||
| registerRecentFile (file); | |||
| enabledModulesList = nullptr; | |||
| enabledModulesList.reset(); | |||
| projectRoot = newTree; | |||
| removeDefunctExporters(); | |||
| @@ -297,7 +297,7 @@ public: | |||
| bool next(); | |||
| ProjectExporter& operator*() const { return *exporter; } | |||
| ProjectExporter* operator->() const { return exporter; } | |||
| ProjectExporter* operator->() const { return exporter.get(); } | |||
| ScopedPointer<ProjectExporter> exporter; | |||
| int index; | |||
| @@ -84,7 +84,7 @@ private: | |||
| propertyFiles.getUnchecked (0)->setValue (isProjectDefaults ? "PROJECT_DEFAULT_SETTINGS" | |||
| : "FALLBACK_PATHS", | |||
| data); | |||
| data.get()); | |||
| } | |||
| void updateGlobalPreferences(); | |||
| @@ -54,10 +54,10 @@ void TreePanelBase::saveOpenness() | |||
| { | |||
| if (project != nullptr) | |||
| { | |||
| const ScopedPointer<XmlElement> opennessState (tree.getOpennessState (true)); | |||
| ScopedPointer<XmlElement> opennessState (tree.getOpennessState (true)); | |||
| if (opennessState != nullptr) | |||
| project->getStoredProperties().setValue (opennessStateKey, opennessState); | |||
| project->getStoredProperties().setValue (opennessStateKey, opennessState.get()); | |||
| else | |||
| project->getStoredProperties().removeValue (opennessStateKey); | |||
| } | |||
| @@ -269,5 +269,5 @@ void JucerTreeViewBase::itemDoubleClicked (const MouseEvent&) | |||
| void JucerTreeViewBase::cancelDelayedSelectionTimer() | |||
| { | |||
| delayedSelectionTimer = nullptr; | |||
| delayedSelectionTimer.reset(); | |||
| } | |||
| @@ -72,7 +72,7 @@ public: | |||
| switchLicenseButton->addListener (this); | |||
| } | |||
| if (LicenseController* controller = ProjucerApplication::getApp().licenseController) | |||
| if (auto* controller = ProjucerApplication::getApp().licenseController.get()) | |||
| licenseStateChanged (controller->getState()); | |||
| #endif | |||
| } | |||
| @@ -120,7 +120,7 @@ private: | |||
| else if (b == switchLicenseButton) | |||
| { | |||
| dismissCalloutBox(); | |||
| if (LicenseController* controller = ProjucerApplication::getApp().licenseController) | |||
| if (auto* controller = ProjucerApplication::getApp().licenseController.get()) | |||
| controller->chooseNewLicense(); | |||
| } | |||
| } | |||
| @@ -53,23 +53,23 @@ struct NewProjectWizardClasses | |||
| return 9; | |||
| } | |||
| static NewProjectWizard* createWizardType (int index) | |||
| static ScopedPointer<NewProjectWizard> createWizardType (int index) | |||
| { | |||
| switch (index) | |||
| { | |||
| case 0: return new NewProjectWizardClasses::GUIAppWizard(); | |||
| case 1: return new NewProjectWizardClasses::AnimatedAppWizard(); | |||
| case 2: return new NewProjectWizardClasses::OpenGLAppWizard(); | |||
| case 3: return new NewProjectWizardClasses::ConsoleAppWizard(); | |||
| case 4: return new NewProjectWizardClasses::AudioAppWizard(); | |||
| case 5: return new NewProjectWizardClasses::AudioPluginAppWizard(); | |||
| case 6: return new NewProjectWizardClasses::StaticLibraryWizard(); | |||
| case 7: return new NewProjectWizardClasses::DynamicLibraryWizard(); | |||
| case 8: return new NewProjectWizardClasses::BlankAppWizard(); | |||
| case 0: return ScopedPointer<NewProjectWizard> (new NewProjectWizardClasses::GUIAppWizard()); | |||
| case 1: return ScopedPointer<NewProjectWizard> (new NewProjectWizardClasses::AnimatedAppWizard()); | |||
| case 2: return ScopedPointer<NewProjectWizard> (new NewProjectWizardClasses::OpenGLAppWizard()); | |||
| case 3: return ScopedPointer<NewProjectWizard> (new NewProjectWizardClasses::ConsoleAppWizard()); | |||
| case 4: return ScopedPointer<NewProjectWizard> (new NewProjectWizardClasses::AudioAppWizard()); | |||
| case 5: return ScopedPointer<NewProjectWizard> (new NewProjectWizardClasses::AudioPluginAppWizard()); | |||
| case 6: return ScopedPointer<NewProjectWizard> (new NewProjectWizardClasses::StaticLibraryWizard()); | |||
| case 7: return ScopedPointer<NewProjectWizard> (new NewProjectWizardClasses::DynamicLibraryWizard()); | |||
| case 8: return ScopedPointer<NewProjectWizard> (new NewProjectWizardClasses::BlankAppWizard()); | |||
| default: jassertfalse; break; | |||
| } | |||
| return nullptr; | |||
| return {}; | |||
| } | |||
| static StringArray getWizardNames() | |||
| @@ -77,10 +77,7 @@ struct NewProjectWizardClasses | |||
| StringArray s; | |||
| for (int i = 0; i < getNumWizards(); ++i) | |||
| { | |||
| ScopedPointer<NewProjectWizard> wiz (createWizardType (i)); | |||
| s.add (wiz->getName()); | |||
| } | |||
| s.add (createWizardType (i)->getName()); | |||
| return s; | |||
| } | |||
| @@ -519,7 +519,7 @@ private: | |||
| TextButton cancelButton { TRANS("Cancel") }; | |||
| ModulesFolderPathBox modulesPathBox; | |||
| NewProjectWizardClasses::NewProjectWizard* createWizard() | |||
| ScopedPointer<NewProjectWizardClasses::NewProjectWizard> createWizard() | |||
| { | |||
| return createWizardType (projectType.getSelectedItemIndex()); | |||
| } | |||
| @@ -144,7 +144,7 @@ public: | |||
| for (int i = 0; i < numWizardButtons; ++i) | |||
| { | |||
| ScopedPointer<NewProjectWizard> wizard (createWizardType (i)); | |||
| auto wizard = createWizardType (i); | |||
| TemplateOptionButton* b = new TemplateOptionButton (wizard->getName(), | |||
| TemplateOptionButton::ImageFitted, | |||
| @@ -101,8 +101,8 @@ AudioDeviceManager::AudioDeviceManager() | |||
| AudioDeviceManager::~AudioDeviceManager() | |||
| { | |||
| currentAudioDevice = nullptr; | |||
| defaultMidiOutput = nullptr; | |||
| currentAudioDevice.reset(); | |||
| defaultMidiOutput.reset(); | |||
| } | |||
| //============================================================================== | |||
| @@ -316,7 +316,7 @@ String AudioDeviceManager::initialiseFromXML (const XmlElement& xml, | |||
| String AudioDeviceManager::initialiseWithDefaultDevices (int numInputChannelsNeeded, | |||
| int numOutputChannelsNeeded) | |||
| { | |||
| lastExplicitSettings = nullptr; | |||
| lastExplicitSettings.reset(); | |||
| return initialise (numInputChannelsNeeded, numOutputChannelsNeeded, | |||
| nullptr, false, String(), nullptr); | |||
| @@ -389,7 +389,7 @@ void AudioDeviceManager::getAudioDeviceSetup (AudioDeviceSetup& setup) const | |||
| void AudioDeviceManager::deleteCurrentDevice() | |||
| { | |||
| currentAudioDevice = nullptr; | |||
| currentAudioDevice.reset(); | |||
| currentSetup.inputDeviceName.clear(); | |||
| currentSetup.outputDeviceName.clear(); | |||
| } | |||
| @@ -588,13 +588,13 @@ void AudioDeviceManager::stopDevice() | |||
| if (currentAudioDevice != nullptr) | |||
| currentAudioDevice->stop(); | |||
| testSound = nullptr; | |||
| testSound.reset(); | |||
| } | |||
| void AudioDeviceManager::closeAudioDevice() | |||
| { | |||
| stopDevice(); | |||
| currentAudioDevice = nullptr; | |||
| currentAudioDevice.reset(); | |||
| } | |||
| void AudioDeviceManager::restartLastAudioDevice() | |||
| @@ -705,14 +705,14 @@ void AudioDeviceManager::audioDeviceIOCallbackInt (const float** inputChannelDat | |||
| if (callbacks.size() > 0) | |||
| { | |||
| const double callbackStartTime = Time::getMillisecondCounterHiRes(); | |||
| auto callbackStartTime = Time::getMillisecondCounterHiRes(); | |||
| tempBuffer.setSize (jmax (1, numOutputChannels), jmax (1, numSamples), false, false, true); | |||
| callbacks.getUnchecked(0)->audioDeviceIOCallback (inputChannelData, numInputChannels, | |||
| outputChannelData, numOutputChannels, numSamples); | |||
| float** const tempChans = tempBuffer.getArrayOfWritePointers(); | |||
| auto** tempChans = tempBuffer.getArrayOfWritePointers(); | |||
| for (int i = callbacks.size(); --i > 0;) | |||
| { | |||
| @@ -721,14 +721,14 @@ void AudioDeviceManager::audioDeviceIOCallbackInt (const float** inputChannelDat | |||
| for (int chan = 0; chan < numOutputChannels; ++chan) | |||
| { | |||
| if (const float* const src = tempChans [chan]) | |||
| if (float* const dst = outputChannelData [chan]) | |||
| if (auto* src = tempChans [chan]) | |||
| if (auto* dst = outputChannelData [chan]) | |||
| for (int j = 0; j < numSamples; ++j) | |||
| dst[j] += src[j]; | |||
| } | |||
| } | |||
| const double msTaken = Time::getMillisecondCounterHiRes() - callbackStartTime; | |||
| auto msTaken = Time::getMillisecondCounterHiRes() - callbackStartTime; | |||
| const double filterAmount = 0.2; | |||
| cpuUsageMs += filterAmount * (msTaken - cpuUsageMs); | |||
| @@ -743,16 +743,17 @@ void AudioDeviceManager::audioDeviceIOCallbackInt (const float** inputChannelDat | |||
| if (testSound != nullptr) | |||
| { | |||
| const int numSamps = jmin (numSamples, testSound->getNumSamples() - testSoundPosition); | |||
| const float* const src = testSound->getReadPointer (0, testSoundPosition); | |||
| auto numSamps = jmin (numSamples, testSound->getNumSamples() - testSoundPosition); | |||
| auto* src = testSound->getReadPointer (0, testSoundPosition); | |||
| for (int i = 0; i < numOutputChannels; ++i) | |||
| for (int j = 0; j < numSamps; ++j) | |||
| outputChannelData [i][j] += src[j]; | |||
| testSoundPosition += numSamps; | |||
| if (testSoundPosition >= testSound->getNumSamples()) | |||
| testSound = nullptr; | |||
| testSound.reset(); | |||
| } | |||
| } | |||
| @@ -761,8 +762,8 @@ void AudioDeviceManager::audioDeviceAboutToStartInt (AudioIODevice* const device | |||
| cpuUsageMs = 0; | |||
| xruns = 0; | |||
| const double sampleRate = device->getCurrentSampleRate(); | |||
| const int blockSize = device->getCurrentBufferSizeSamples(); | |||
| auto sampleRate = device->getCurrentSampleRate(); | |||
| auto blockSize = device->getCurrentBufferSizeSamples(); | |||
| if (sampleRate > 0.0 && blockSize > 0) | |||
| { | |||
| @@ -772,6 +773,7 @@ void AudioDeviceManager::audioDeviceAboutToStartInt (AudioIODevice* const device | |||
| { | |||
| const ScopedLock sl (audioCallbackLock); | |||
| for (int i = callbacks.size(); --i >= 0;) | |||
| callbacks.getUnchecked(i)->audioDeviceAboutToStart (device); | |||
| } | |||
| @@ -787,6 +789,7 @@ void AudioDeviceManager::audioDeviceStoppedInt() | |||
| sendChangeMessage(); | |||
| const ScopedLock sl (audioCallbackLock); | |||
| for (int i = callbacks.size(); --i >= 0;) | |||
| callbacks.getUnchecked(i)->audioDeviceStopped(); | |||
| } | |||
| @@ -794,6 +797,7 @@ void AudioDeviceManager::audioDeviceStoppedInt() | |||
| void AudioDeviceManager::audioDeviceErrorInt (const String& message) | |||
| { | |||
| const ScopedLock sl (audioCallbackLock); | |||
| for (int i = callbacks.size(); --i >= 0;) | |||
| callbacks.getUnchecked(i)->audioDeviceError (message); | |||
| } | |||
| @@ -903,7 +907,7 @@ void AudioDeviceManager::setDefaultMidiOutput (const String& deviceName) | |||
| for (int i = oldCallbacks.size(); --i >= 0;) | |||
| oldCallbacks.getUnchecked(i)->audioDeviceStopped(); | |||
| defaultMidiOutput = nullptr; | |||
| defaultMidiOutput.reset(); | |||
| defaultMidiOutputName = deviceName; | |||
| if (deviceName.isNotEmpty()) | |||
| @@ -318,8 +318,7 @@ namespace CoreMidiHelpers | |||
| class MidiPortAndCallback | |||
| { | |||
| public: | |||
| MidiPortAndCallback (MidiInputCallback& cb) | |||
| : input (nullptr), active (false), callback (cb), concatenator (2048) | |||
| MidiPortAndCallback (MidiInputCallback& cb) : callback (cb) | |||
| { | |||
| } | |||
| @@ -332,18 +331,19 @@ namespace CoreMidiHelpers | |||
| activeCallbacks.removeFirstMatchingValue (this); | |||
| } | |||
| if (portAndEndpoint != 0 && portAndEndpoint->port != 0) | |||
| if (portAndEndpoint != nullptr && portAndEndpoint->port != 0) | |||
| CHECK_ERROR (MIDIPortDisconnectSource (portAndEndpoint->port, portAndEndpoint->endPoint)); | |||
| } | |||
| void handlePackets (const MIDIPacketList* const pktlist) | |||
| { | |||
| const double time = Time::getMillisecondCounterHiRes() * 0.001; | |||
| auto time = Time::getMillisecondCounterHiRes() * 0.001; | |||
| const ScopedLock sl (callbackLock); | |||
| if (activeCallbacks.contains (this) && active) | |||
| { | |||
| const MIDIPacket* packet = &pktlist->packet[0]; | |||
| auto* packet = &pktlist->packet[0]; | |||
| for (unsigned int i = 0; i < pktlist->numPackets; ++i) | |||
| { | |||
| @@ -355,13 +355,13 @@ namespace CoreMidiHelpers | |||
| } | |||
| } | |||
| MidiInput* input; | |||
| MidiInput* input = nullptr; | |||
| ScopedPointer<MidiPortAndEndpoint> portAndEndpoint; | |||
| volatile bool active; | |||
| volatile bool active = false; | |||
| private: | |||
| MidiInputCallback& callback; | |||
| MidiDataConcatenator concatenator; | |||
| MidiDataConcatenator concatenator { 2048 }; | |||
| }; | |||
| static void midiInputProc (const MIDIPacketList* pktlist, void* readProcRefCon, void* /*srcConnRefCon*/) | |||
| @@ -1749,8 +1749,8 @@ namespace WavFileHelpers | |||
| outStream.release(); | |||
| bool ok = writer->writeFromAudioReader (*reader, 0, -1); | |||
| writer = nullptr; | |||
| reader = nullptr; | |||
| writer.reset(); | |||
| reader.reset(); | |||
| return ok && tempFile.overwriteTargetFileWithTemporary(); | |||
| } | |||
| @@ -1769,7 +1769,7 @@ bool WavAudioFormat::replaceMetadataInFile (const File& wavFile, const StringPai | |||
| { | |||
| auto bwavPos = reader->bwavChunkStart; | |||
| auto bwavSize = reader->bwavSize; | |||
| reader = nullptr; | |||
| reader.reset(); | |||
| if (bwavSize > 0) | |||
| { | |||
| @@ -389,7 +389,7 @@ bool MemoryMappedAudioFormatReader::mapSectionOfFile (Range<int64> samplesToMap) | |||
| { | |||
| if (map == nullptr || samplesToMap != mappedSection) | |||
| { | |||
| map = nullptr; | |||
| map.reset(); | |||
| const Range<int64> fileRange (sampleToFilePos (samplesToMap.getStart()), | |||
| sampleToFilePos (samplesToMap.getEnd())); | |||
| @@ -397,7 +397,7 @@ bool MemoryMappedAudioFormatReader::mapSectionOfFile (Range<int64> samplesToMap) | |||
| map = new MemoryMappedFile (file, fileRange, MemoryMappedFile::readOnly); | |||
| if (map->getData() == nullptr) | |||
| map = nullptr; | |||
| map.reset(); | |||
| else | |||
| mappedSection = Range<int64> (jmax ((int64) 0, filePosToSample (map->getRange().getStart() + (bytesPerFrame - 1))), | |||
| jmin (lengthInSamples, filePosToSample (map->getRange().getEnd()))); | |||
| @@ -113,7 +113,7 @@ void AudioProcessorEditor::setResizable (const bool shouldBeResizable, const boo | |||
| } | |||
| else | |||
| { | |||
| resizableCorner = nullptr; | |||
| resizableCorner.reset(); | |||
| } | |||
| } | |||
| } | |||
| @@ -1177,8 +1177,8 @@ void AudioProcessorGraph::buildRenderingSequence() | |||
| { | |||
| { | |||
| const ScopedLock sl (getCallbackLock()); | |||
| renderSequenceFloat = nullptr; | |||
| renderSequenceDouble = nullptr; | |||
| renderSequenceFloat.reset(); | |||
| renderSequenceDouble.reset(); | |||
| } | |||
| for (auto* node : nodes) | |||
| @@ -385,7 +385,7 @@ public: | |||
| if (pool != nullptr) | |||
| { | |||
| pool->removeAllJobs (true, 60000); | |||
| pool = nullptr; | |||
| pool.reset(); | |||
| } | |||
| } | |||
| @@ -580,7 +580,7 @@ void PluginListComponent::scanFinished (const StringArray& failedFiles) | |||
| for (int i = 0; i < failedFiles.size(); ++i) | |||
| shortNames.add (File::createFileWithoutCheckingPath (failedFiles[i]).getFileName()); | |||
| currentScanner = nullptr; // mustn't delete this before using the failed files array | |||
| currentScanner.reset(); // mustn't delete this before using the failed files array | |||
| if (shortNames.size() > 0) | |||
| AlertWindow::showMessageBoxAsync (AlertWindow::InfoIcon, | |||
| @@ -459,8 +459,8 @@ public: | |||
| } | |||
| else | |||
| { | |||
| outputChanLabel = nullptr; | |||
| outputChanList = nullptr; | |||
| outputChanLabel.reset(); | |||
| outputChanList.reset(); | |||
| } | |||
| if (setup.maxNumInputChannels > 0 | |||
| @@ -480,8 +480,8 @@ public: | |||
| } | |||
| else | |||
| { | |||
| inputChanLabel = nullptr; | |||
| inputChanList = nullptr; | |||
| inputChanLabel.reset(); | |||
| inputChanList.reset(); | |||
| } | |||
| updateSampleRateComboBox (currentDevice); | |||
| @@ -491,15 +491,15 @@ public: | |||
| { | |||
| jassert (setup.manager->getCurrentAudioDevice() == nullptr); // not the correct device type! | |||
| inputChanLabel = nullptr; | |||
| outputChanLabel = nullptr; | |||
| sampleRateLabel = nullptr; | |||
| bufferSizeLabel = nullptr; | |||
| inputChanLabel.reset(); | |||
| outputChanLabel.reset(); | |||
| sampleRateLabel.reset(); | |||
| bufferSizeLabel.reset(); | |||
| inputChanList = nullptr; | |||
| outputChanList = nullptr; | |||
| sampleRateDropDown = nullptr; | |||
| bufferSizeDropDown = nullptr; | |||
| inputChanList.reset(); | |||
| outputChanList.reset(); | |||
| sampleRateDropDown.reset(); | |||
| bufferSizeDropDown.reset(); | |||
| if (outputDeviceDropDown != nullptr) | |||
| outputDeviceDropDown->setSelectedId (-1, dontSendNotification); | |||
| @@ -574,8 +574,8 @@ private: | |||
| void updateControlPanelButton() | |||
| { | |||
| AudioIODevice* const currentDevice = setup.manager->getCurrentAudioDevice(); | |||
| showUIButton = nullptr; | |||
| auto* currentDevice = setup.manager->getCurrentAudioDevice(); | |||
| showUIButton.reset(); | |||
| if (currentDevice != nullptr && currentDevice->hasControlPanel()) | |||
| { | |||
| @@ -606,7 +606,7 @@ private: | |||
| } | |||
| } | |||
| resetDeviceButton = nullptr; | |||
| resetDeviceButton.reset(); | |||
| } | |||
| void updateOutputsComboBox() | |||
| @@ -1033,9 +1033,9 @@ AudioDeviceSelectorComponent::AudioDeviceSelectorComponent (AudioDeviceManager& | |||
| } | |||
| else | |||
| { | |||
| midiInputsList = nullptr; | |||
| midiInputsLabel = nullptr; | |||
| bluetoothButton = nullptr; | |||
| midiInputsList.reset(); | |||
| midiInputsLabel.reset(); | |||
| bluetoothButton.reset(); | |||
| } | |||
| if (showMidiOutputSelector) | |||
| @@ -1048,8 +1048,8 @@ AudioDeviceSelectorComponent::AudioDeviceSelectorComponent (AudioDeviceManager& | |||
| } | |||
| else | |||
| { | |||
| midiOutputSelector = nullptr; | |||
| midiOutputLabel = nullptr; | |||
| midiOutputSelector.reset(); | |||
| midiOutputLabel.reset(); | |||
| } | |||
| deviceManager.addChangeListener (this); | |||
| @@ -1123,7 +1123,7 @@ void AudioDeviceSelectorComponent::comboBoxChanged (ComboBox* comboBoxThatHasCha | |||
| { | |||
| if (AudioIODeviceType* const type = deviceManager.getAvailableDeviceTypes() [deviceTypeDropDown->getSelectedId() - 1]) | |||
| { | |||
| audioDeviceSettingsComp = nullptr; | |||
| audioDeviceSettingsComp.reset(); | |||
| deviceManager.setCurrentAudioDeviceType (type->getTypeName(), true); | |||
| updateAllControls(); // needed in case the type hasn't actually changed | |||
| } | |||
| @@ -1153,11 +1153,10 @@ void AudioDeviceSelectorComponent::updateAllControls() | |||
| || audioDeviceSettingsCompType != deviceManager.getCurrentAudioDeviceType()) | |||
| { | |||
| audioDeviceSettingsCompType = deviceManager.getCurrentAudioDeviceType(); | |||
| audioDeviceSettingsComp = nullptr; | |||
| audioDeviceSettingsComp.reset(); | |||
| if (AudioIODeviceType* const type | |||
| = deviceManager.getAvailableDeviceTypes() [deviceTypeDropDown == nullptr | |||
| ? 0 : deviceTypeDropDown->getSelectedId() - 1]) | |||
| if (auto* type = deviceManager.getAvailableDeviceTypes() [deviceTypeDropDown == nullptr | |||
| ? 0 : deviceTypeDropDown->getSelectedId() - 1]) | |||
| { | |||
| AudioDeviceSetupDetails details; | |||
| details.manager = &deviceManager; | |||
| @@ -1167,7 +1166,7 @@ void AudioDeviceSelectorComponent::updateAllControls() | |||
| details.maxNumOutputChannels = maxOutputChannels; | |||
| details.useStereoPairs = showChannelsAsStereoPairs; | |||
| AudioDeviceSettingsPanel* sp = new AudioDeviceSettingsPanel (*type, details, hideAdvancedOptionsWithButton); | |||
| auto* sp = new AudioDeviceSettingsPanel (*type, details, hideAdvancedOptionsWithButton); | |||
| audioDeviceSettingsComp = sp; | |||
| addAndMakeVisible (sp); | |||
| sp->updateAllControls(); | |||
| @@ -1185,7 +1184,7 @@ void AudioDeviceSelectorComponent::updateAllControls() | |||
| { | |||
| midiOutputSelector->clear(); | |||
| const StringArray midiOuts (MidiOutput::getDevices()); | |||
| auto midiOuts = MidiOutput::getDevices(); | |||
| midiOutputSelector->addItem (getNoDeviceString(), -1); | |||
| midiOutputSelector->addSeparator(); | |||
| @@ -120,7 +120,7 @@ public: | |||
| sampleRate = reader->sampleRate; | |||
| if (lengthInSamples <= 0 || isFullyLoaded()) | |||
| reader = nullptr; | |||
| reader.reset(); | |||
| else | |||
| owner.cache.getTimeSliceThread().addTimeSliceClient (this); | |||
| } | |||
| @@ -155,7 +155,7 @@ public: | |||
| void releaseResources() | |||
| { | |||
| const ScopedLock sl (readerLock); | |||
| reader = nullptr; | |||
| reader.reset(); | |||
| } | |||
| int useTimeSlice() override | |||
| @@ -557,7 +557,7 @@ AudioThumbnail::~AudioThumbnail() | |||
| void AudioThumbnail::clear() | |||
| { | |||
| source = nullptr; | |||
| source.reset(); | |||
| const ScopedLock sl (lock); | |||
| clearChannelData(); | |||
| } | |||
| @@ -51,7 +51,6 @@ public: | |||
| //============================================================================== | |||
| /** Creates an empty array. */ | |||
| OwnedArray() noexcept | |||
| : numUsed (0) | |||
| { | |||
| } | |||
| @@ -139,7 +138,7 @@ public: | |||
| if (isPositiveAndBelow (index, numUsed)) | |||
| { | |||
| jassert (data.elements != nullptr); | |||
| return data.elements [index]; | |||
| return data.elements[index]; | |||
| } | |||
| return nullptr; | |||
| @@ -154,7 +153,7 @@ public: | |||
| { | |||
| const ScopedLockType lock (getLock()); | |||
| jassert (isPositiveAndBelow (index, numUsed) && data.elements != nullptr); | |||
| return data.elements [index]; | |||
| return data.elements[index]; | |||
| } | |||
| /** Returns a pointer to the first object in the array. | |||
| @@ -169,7 +168,7 @@ public: | |||
| if (numUsed > 0) | |||
| { | |||
| jassert (data.elements != nullptr); | |||
| return data.elements [0]; | |||
| return data.elements[0]; | |||
| } | |||
| return nullptr; | |||
| @@ -187,7 +186,7 @@ public: | |||
| if (numUsed > 0) | |||
| { | |||
| jassert (data.elements != nullptr); | |||
| return data.elements [numUsed - 1]; | |||
| return data.elements[numUsed - 1]; | |||
| } | |||
| return nullptr; | |||
| @@ -233,8 +232,8 @@ public: | |||
| int indexOf (const ObjectClass* objectToLookFor) const noexcept | |||
| { | |||
| const ScopedLockType lock (getLock()); | |||
| ObjectClass* const* e = data.elements.get(); | |||
| ObjectClass* const* const end_ = e + numUsed; | |||
| auto** e = data.elements.get(); | |||
| auto** end_ = e + numUsed; | |||
| for (; e != end_; ++e) | |||
| if (objectToLookFor == *e) | |||
| @@ -251,8 +250,8 @@ public: | |||
| bool contains (const ObjectClass* objectToLookFor) const noexcept | |||
| { | |||
| const ScopedLockType lock (getLock()); | |||
| ObjectClass* const* e = data.elements.get(); | |||
| ObjectClass* const* const end_ = e + numUsed; | |||
| auto** e = data.elements.get(); | |||
| auto** end_ = e + numUsed; | |||
| for (; e != end_; ++e) | |||
| if (objectToLookFor == *e) | |||
| @@ -279,7 +278,7 @@ public: | |||
| const ScopedLockType lock (getLock()); | |||
| data.ensureAllocatedSize (numUsed + 1); | |||
| jassert (data.elements != nullptr); | |||
| data.elements [numUsed++] = newObject; | |||
| data.elements[numUsed++] = newObject; | |||
| return newObject; | |||
| } | |||
| @@ -314,8 +313,8 @@ public: | |||
| data.ensureAllocatedSize (numUsed + 1); | |||
| jassert (data.elements != nullptr); | |||
| ObjectClass** const e = data.elements + indexToInsertAt; | |||
| const int numToMove = numUsed - indexToInsertAt; | |||
| auto** e = data.elements + indexToInsertAt; | |||
| auto numToMove = numUsed - indexToInsertAt; | |||
| if (numToMove > 0) | |||
| memmove (e + 1, e, sizeof (ObjectClass*) * (size_t) numToMove); | |||
| @@ -345,12 +344,12 @@ public: | |||
| { | |||
| const ScopedLockType lock (getLock()); | |||
| data.ensureAllocatedSize (numUsed + numberOfElements); | |||
| ObjectClass** insertPos = data.elements; | |||
| auto* insertPos = data.elements.get(); | |||
| if (isPositiveAndBelow (indexToInsertAt, numUsed)) | |||
| { | |||
| insertPos += indexToInsertAt; | |||
| const size_t numberToMove = (size_t) (numUsed - indexToInsertAt); | |||
| auto numberToMove = (size_t) (numUsed - indexToInsertAt); | |||
| memmove (insertPos + numberOfElements, insertPos, numberToMove * sizeof (ObjectClass*)); | |||
| } | |||
| else | |||
| @@ -410,18 +409,18 @@ public: | |||
| { | |||
| if (deleteOldElement) | |||
| { | |||
| toDelete = data.elements [indexToChange]; | |||
| toDelete = data.elements[indexToChange]; | |||
| if (toDelete == newObject) | |||
| toDelete.release(); | |||
| } | |||
| data.elements [indexToChange] = newObject; | |||
| data.elements[indexToChange] = newObject; | |||
| } | |||
| else | |||
| { | |||
| data.ensureAllocatedSize (numUsed + 1); | |||
| data.elements [numUsed++] = newObject; | |||
| data.elements[numUsed++] = newObject; | |||
| } | |||
| } | |||
| } | |||
| @@ -465,7 +464,7 @@ public: | |||
| while (--numElementsToAdd >= 0) | |||
| { | |||
| data.elements [numUsed] = arrayToAddFrom.getUnchecked (startIndex++); | |||
| data.elements[numUsed] = arrayToAddFrom.getUnchecked (startIndex++); | |||
| ++numUsed; | |||
| } | |||
| } | |||
| @@ -505,7 +504,7 @@ public: | |||
| jassert (numElementsToAdd <= 0 || data.elements != nullptr); | |||
| while (--numElementsToAdd >= 0) | |||
| data.elements [numUsed++] = createCopyIfNotNull (arrayToAddFrom.getUnchecked (startIndex++)); | |||
| data.elements[numUsed++] = createCopyIfNotNull (arrayToAddFrom.getUnchecked (startIndex++)); | |||
| } | |||
| /** Inserts a new object into the array assuming that the array is sorted. | |||
| @@ -552,14 +551,15 @@ public: | |||
| while (s < e) | |||
| { | |||
| if (comparator.compareElements (objectToLookFor, data.elements [s]) == 0) | |||
| if (comparator.compareElements (objectToLookFor, data.elements[s]) == 0) | |||
| return s; | |||
| const int halfway = (s + e) / 2; | |||
| auto halfway = (s + e) / 2; | |||
| if (halfway == s) | |||
| break; | |||
| if (comparator.compareElements (objectToLookFor, data.elements [halfway]) >= 0) | |||
| if (comparator.compareElements (objectToLookFor, data.elements[halfway]) >= 0) | |||
| s = halfway; | |||
| else | |||
| e = halfway; | |||
| @@ -588,13 +588,13 @@ public: | |||
| if (isPositiveAndBelow (indexToRemove, numUsed)) | |||
| { | |||
| ObjectClass** const e = data.elements + indexToRemove; | |||
| auto** e = data.elements + indexToRemove; | |||
| if (deleteObject) | |||
| toDelete = *e; | |||
| toDelete.reset (*e); | |||
| --numUsed; | |||
| const int numToShift = numUsed - indexToRemove; | |||
| auto numToShift = numUsed - indexToRemove; | |||
| if (numToShift > 0) | |||
| memmove (e, e + 1, sizeof (ObjectClass*) * (size_t) numToShift); | |||
| @@ -621,7 +621,7 @@ public: | |||
| if (isPositiveAndBelow (indexToRemove, numUsed)) | |||
| { | |||
| ObjectClass** const e = data.elements + indexToRemove; | |||
| auto** e = data.elements + indexToRemove; | |||
| removedItem = *e; | |||
| --numUsed; | |||
| @@ -648,7 +648,7 @@ public: | |||
| void removeObject (const ObjectClass* objectToRemove, bool deleteObject = true) | |||
| { | |||
| const ScopedLockType lock (getLock()); | |||
| ObjectClass** const e = data.elements.get(); | |||
| auto** e = data.elements.get(); | |||
| for (int i = 0; i < numUsed; ++i) | |||
| { | |||
| @@ -676,7 +676,7 @@ public: | |||
| void removeRange (int startIndex, int numberToRemove, bool deleteObjects = true) | |||
| { | |||
| const ScopedLockType lock (getLock()); | |||
| const int endIndex = jlimit (0, numUsed, startIndex + numberToRemove); | |||
| auto endIndex = jlimit (0, numUsed, startIndex + numberToRemove); | |||
| startIndex = jlimit (0, numUsed, startIndex); | |||
| if (endIndex > startIndex) | |||
| @@ -685,19 +685,19 @@ public: | |||
| { | |||
| for (int i = startIndex; i < endIndex; ++i) | |||
| { | |||
| ContainerDeletePolicy<ObjectClass>::destroy (data.elements [i]); | |||
| data.elements [i] = nullptr; // (in case one of the destructors accesses this array and hits a dangling pointer) | |||
| ContainerDeletePolicy<ObjectClass>::destroy (data.elements[i]); | |||
| data.elements[i] = nullptr; // (in case one of the destructors accesses this array and hits a dangling pointer) | |||
| } | |||
| } | |||
| const int rangeSize = endIndex - startIndex; | |||
| ObjectClass** e = data.elements + startIndex; | |||
| int numToShift = numUsed - endIndex; | |||
| auto rangeSize = endIndex - startIndex; | |||
| auto** e = data.elements + startIndex; | |||
| auto numToShift = numUsed - endIndex; | |||
| numUsed -= rangeSize; | |||
| while (--numToShift >= 0) | |||
| { | |||
| *e = e [rangeSize]; | |||
| *e = e[rangeSize]; | |||
| ++e; | |||
| } | |||
| @@ -736,8 +736,8 @@ public: | |||
| if (isPositiveAndBelow (index1, numUsed) | |||
| && isPositiveAndBelow (index2, numUsed)) | |||
| { | |||
| std::swap (data.elements [index1], | |||
| data.elements [index2]); | |||
| std::swap (data.elements[index1], | |||
| data.elements[index2]); | |||
| } | |||
| } | |||
| @@ -765,7 +765,7 @@ public: | |||
| if (! isPositiveAndBelow (newIndex, numUsed)) | |||
| newIndex = numUsed - 1; | |||
| ObjectClass* const value = data.elements [currentIndex]; | |||
| auto* value = data.elements[currentIndex]; | |||
| if (newIndex > currentIndex) | |||
| { | |||
| @@ -780,7 +780,7 @@ public: | |||
| sizeof (ObjectClass*) * (size_t) (currentIndex - newIndex)); | |||
| } | |||
| data.elements [newIndex] = value; | |||
| data.elements[newIndex] = value; | |||
| } | |||
| } | |||
| } | |||
| @@ -882,12 +882,12 @@ public: | |||
| private: | |||
| //============================================================================== | |||
| ArrayAllocationBase <ObjectClass*, TypeOfCriticalSectionToUse> data; | |||
| int numUsed; | |||
| int numUsed = 0; | |||
| void deleteAllObjects() | |||
| { | |||
| while (numUsed > 0) | |||
| ContainerDeletePolicy<ObjectClass>::destroy (data.elements [--numUsed]); | |||
| ContainerDeletePolicy<ObjectClass>::destroy (data.elements[--numUsed]); | |||
| } | |||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (OwnedArray) | |||
| @@ -79,7 +79,7 @@ bool DirectoryIterator::next (bool* const isDirResult, bool* const isHiddenResul | |||
| if (subIterator->next (isDirResult, isHiddenResult, fileSize, modTime, creationTime, isReadOnly)) | |||
| return true; | |||
| subIterator = nullptr; | |||
| subIterator.reset(); | |||
| } | |||
| String filename; | |||
| @@ -1103,7 +1103,7 @@ struct JavascriptEngine::RootObject : public DynamicObject | |||
| Expression* parseInPlaceOpExpression (ExpPtr& lhs) | |||
| { | |||
| ExpPtr rhs (parseExpression()); | |||
| Expression* bareLHS = lhs; // careful - bare pointer is deliberately alised | |||
| Expression* bareLHS = lhs.get(); // careful - bare pointer is deliberately alised | |||
| return new SelfAssignment (location, bareLHS, new OpType (location, lhs, rhs)); | |||
| } | |||
| @@ -98,7 +98,7 @@ public: | |||
| //============================================================================== | |||
| /** Returns the object that this pointer is managing. */ | |||
| inline operator ObjectType*() const noexcept { return object; } | |||
| inline operator ObjectType*() const noexcept { return object.get(); } | |||
| /** Returns the object that this pointer is managing. */ | |||
| inline ObjectType* get() const noexcept { return object; } | |||
| @@ -107,7 +107,7 @@ public: | |||
| inline ObjectType& operator*() const noexcept { return *object; } | |||
| /** Lets you access methods and properties of the object that this pointer is holding. */ | |||
| inline ObjectType* operator->() const noexcept { return object; } | |||
| inline ObjectType* operator->() const noexcept { return object.get(); } | |||
| //============================================================================== | |||
| /** Removes the current object from this OptionalScopedPointer without deleting it. | |||
| @@ -170,6 +170,12 @@ public: | |||
| } | |||
| } | |||
| /** Sets this pointer to a new object, deleting the old object that it was previously pointing to if there was one. */ | |||
| void reset (ScopedPointer& newObject) | |||
| { | |||
| reset (newObject.release()); | |||
| } | |||
| /** Detaches and returns the current object from this ScopedPointer without deleting it. | |||
| This will return the current object, and set the ScopedPointer to a null pointer. | |||
| */ | |||
| @@ -191,7 +197,7 @@ public: | |||
| /** If the pointer is non-null, this will attempt to return a new copy of the object that is pointed to. | |||
| If the pointer is null, this will safely return a nullptr. | |||
| */ | |||
| inline ObjectType* createCopy() const { return createCopyIfNotNull (object); } | |||
| inline ObjectType* createCopy() const { return createCopyIfNotNull (object); } | |||
| private: | |||
| //============================================================================== | |||
| @@ -206,22 +212,74 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| /** Compares a ScopedPointer with another pointer. | |||
| This can be handy for checking whether this is a null pointer. | |||
| */ | |||
| /** Compares a ScopedPointer with another pointer. */ | |||
| template <typename ObjectType1, typename ObjectType2> | |||
| bool operator== (ObjectType1* pointer1, const ScopedPointer<ObjectType2>& pointer2) noexcept | |||
| { | |||
| return pointer1 == pointer2.get(); | |||
| } | |||
| /** Compares a ScopedPointer with another pointer. */ | |||
| template <typename ObjectType1, typename ObjectType2> | |||
| bool operator!= (ObjectType1* pointer1, const ScopedPointer<ObjectType2>& pointer2) noexcept | |||
| { | |||
| return pointer1 != pointer2.get(); | |||
| } | |||
| /** Compares a ScopedPointer with another pointer. */ | |||
| template <typename ObjectType1, typename ObjectType2> | |||
| bool operator== (const ScopedPointer<ObjectType1>& pointer1, ObjectType2* pointer2) noexcept | |||
| { | |||
| return pointer1.get() == pointer2; | |||
| } | |||
| /** Compares a ScopedPointer with another pointer. */ | |||
| template <typename ObjectType1, typename ObjectType2> | |||
| bool operator!= (const ScopedPointer<ObjectType1>& pointer1, ObjectType2* pointer2) noexcept | |||
| { | |||
| return pointer1.get() != pointer2; | |||
| } | |||
| /** Compares a ScopedPointer with another pointer. */ | |||
| template <typename ObjectType1, typename ObjectType2> | |||
| bool operator== (const ScopedPointer<ObjectType1>& pointer1, const ScopedPointer<ObjectType2>& pointer2) noexcept | |||
| { | |||
| return pointer1.get() == pointer2.get(); | |||
| } | |||
| /** Compares a ScopedPointer with another pointer. */ | |||
| template <typename ObjectType1, typename ObjectType2> | |||
| bool operator!= (const ScopedPointer<ObjectType1>& pointer1, const ScopedPointer<ObjectType2>& pointer2) noexcept | |||
| { | |||
| return pointer1.get() != pointer2.get(); | |||
| } | |||
| /** Compares a ScopedPointer with a nullptr. */ | |||
| template <class ObjectType> | |||
| bool operator== (const ScopedPointer<ObjectType>& pointer1, ObjectType* pointer2) noexcept | |||
| bool operator== (decltype (nullptr), const ScopedPointer<ObjectType>& pointer) noexcept | |||
| { | |||
| return static_cast<ObjectType*> (pointer1) == pointer2; | |||
| return pointer.get() == nullptr; | |||
| } | |||
| /** Compares a ScopedPointer with another pointer. | |||
| This can be handy for checking whether this is a null pointer. | |||
| */ | |||
| /** Compares a ScopedPointer with a nullptr. */ | |||
| template <class ObjectType> | |||
| bool operator!= (decltype (nullptr), const ScopedPointer<ObjectType>& pointer) noexcept | |||
| { | |||
| return pointer.get() != nullptr; | |||
| } | |||
| /** Compares a ScopedPointer with a nullptr. */ | |||
| template <class ObjectType> | |||
| bool operator== (const ScopedPointer<ObjectType>& pointer, decltype (nullptr)) noexcept | |||
| { | |||
| return pointer.get() == nullptr; | |||
| } | |||
| /** Compares a ScopedPointer with a nullptr. */ | |||
| template <class ObjectType> | |||
| bool operator!= (const ScopedPointer<ObjectType>& pointer1, ObjectType* pointer2) noexcept | |||
| bool operator!= (const ScopedPointer<ObjectType>& pointer, decltype (nullptr)) noexcept | |||
| { | |||
| return static_cast<ObjectType*> (pointer1) != pointer2; | |||
| return pointer.get() != nullptr; | |||
| } | |||
| //============================================================================== | |||
| @@ -176,7 +176,7 @@ public: | |||
| ScopedPointer<std::function<int()>> fStackTmp (new std::function<int()> (fStack)); | |||
| std::function<int()> f1 (static_cast<std::function<int()>&&> (*fStackTmp)); | |||
| fStackTmp = nullptr; | |||
| fStackTmp.reset(); | |||
| expectEquals (f1(), 3); | |||
| ScopedPointer<std::function<int()>> fHeapTmp (new std::function<int()> (fHeap)); | |||
| @@ -184,12 +184,12 @@ public: | |||
| if (*fHeapTmp) | |||
| expect (false); | |||
| fHeapTmp = nullptr; | |||
| fHeapTmp.reset(); | |||
| expectEquals (f2(), FunctionTestsHelpers::BigData::bigDataSum); | |||
| ScopedPointer<std::function<int()>> fEmptyTmp (new std::function<int()>()); | |||
| std::function<int()> f3 (static_cast<std::function<int()>&&> (*fEmptyTmp)); | |||
| fEmptyTmp = nullptr; | |||
| fEmptyTmp.reset(); | |||
| if (f3) | |||
| expect (false); | |||
| } | |||
| @@ -201,7 +201,7 @@ public: | |||
| ScopedPointer<std::function<int()>> fStackTmp (new std::function<int()> (fStack)); | |||
| f1 = static_cast<std::function<int()>&&> (*fStackTmp); | |||
| fStackTmp = nullptr; | |||
| fStackTmp.reset(); | |||
| expectEquals (f1(), 3); | |||
| std::function<int()> f2 (fStack); | |||
| @@ -210,13 +210,13 @@ public: | |||
| if (*fHeapTmp) | |||
| expect (false); | |||
| fHeapTmp = nullptr; | |||
| fHeapTmp.reset(); | |||
| expectEquals (f2(), FunctionTestsHelpers::BigData::bigDataSum); | |||
| std::function<int()> f3 (fHeap); | |||
| ScopedPointer<std::function<int()>> fEmptyTmp (new std::function<int()>()); | |||
| f3 = static_cast<std::function<int()>&&> (*fEmptyTmp); | |||
| fEmptyTmp = nullptr; | |||
| fEmptyTmp.reset(); | |||
| if (f3) | |||
| expect (false); | |||
| } | |||
| @@ -941,7 +941,7 @@ public: | |||
| ~Pimpl() | |||
| { | |||
| connection = nullptr; | |||
| connection.reset(); | |||
| } | |||
| bool connect (WebInputStream::Listener* webInputListener, int numRetries = 0) | |||
| @@ -963,12 +963,12 @@ public: | |||
| #if ! (JUCE_IOS || (defined (__MAC_OS_X_VERSION_MIN_REQUIRED) && defined (__MAC_10_10) && __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_10)) | |||
| if (numRetries == 0 && connection->nsUrlErrorCode == NSURLErrorNetworkConnectionLost) | |||
| { | |||
| connection = nullptr; | |||
| connection.reset(); | |||
| return connect (webInputListener, ++numRetries); | |||
| } | |||
| #endif | |||
| connection = nullptr; | |||
| connection.reset(); | |||
| return false; | |||
| } | |||
| @@ -191,7 +191,7 @@ void NamedPipe::close() | |||
| ignoreUnused (done); | |||
| ScopedWriteLock sl (lock); | |||
| pimpl = nullptr; | |||
| pimpl.reset(); | |||
| } | |||
| } | |||
| @@ -211,7 +211,7 @@ bool NamedPipe::openInternal (const String& pipeName, const bool createPipe, boo | |||
| if (createPipe && ! pimpl->createFifos (mustNotExist)) | |||
| { | |||
| pimpl = nullptr; | |||
| pimpl.reset(); | |||
| return false; | |||
| } | |||
| @@ -880,7 +880,7 @@ bool InterProcessLock::enter (const int timeOutMillisecs) | |||
| pimpl = new Pimpl (name, timeOutMillisecs); | |||
| if (pimpl->handle == 0) | |||
| pimpl = nullptr; | |||
| pimpl.reset(); | |||
| } | |||
| else | |||
| { | |||
| @@ -898,7 +898,7 @@ void InterProcessLock::exit() | |||
| jassert (pimpl != nullptr); | |||
| if (pimpl != nullptr && --(pimpl->refCount) == 0) | |||
| pimpl = nullptr; | |||
| pimpl.reset(); | |||
| } | |||
| //============================================================================== | |||
| @@ -1260,7 +1260,7 @@ bool ChildProcess::start (const StringArray& args, int streamFlags) | |||
| activeProcess = new ActiveProcess (args, streamFlags); | |||
| if (activeProcess->childPID == 0) | |||
| activeProcess = nullptr; | |||
| activeProcess.reset(); | |||
| return activeProcess != nullptr; | |||
| } | |||
| @@ -534,7 +534,7 @@ private: | |||
| uncompressedSize += bytesRead; | |||
| } | |||
| stream = nullptr; | |||
| stream.reset(); | |||
| return true; | |||
| } | |||
| @@ -28,7 +28,6 @@ namespace juce | |||
| { | |||
| ApplicationProperties::ApplicationProperties() | |||
| : commonSettingsAreReadOnly (0) | |||
| { | |||
| } | |||
| @@ -56,16 +55,16 @@ void ApplicationProperties::openFiles() | |||
| if (userProps == nullptr) | |||
| { | |||
| o.commonToAllUsers = false; | |||
| userProps = new PropertiesFile (o); | |||
| userProps.reset (new PropertiesFile (o)); | |||
| } | |||
| if (commonProps == nullptr) | |||
| { | |||
| o.commonToAllUsers = true; | |||
| commonProps = new PropertiesFile (o); | |||
| commonProps.reset (new PropertiesFile (o)); | |||
| } | |||
| userProps->setFallbackPropertySet (commonProps); | |||
| userProps->setFallbackPropertySet (commonProps.get()); | |||
| } | |||
| } | |||
| @@ -74,7 +73,7 @@ PropertiesFile* ApplicationProperties::getUserSettings() | |||
| if (userProps == nullptr) | |||
| openFiles(); | |||
| return userProps; | |||
| return userProps.get(); | |||
| } | |||
| PropertiesFile* ApplicationProperties::getCommonSettings (const bool returnUserPropsIfReadOnly) | |||
| @@ -88,10 +87,10 @@ PropertiesFile* ApplicationProperties::getCommonSettings (const bool returnUserP | |||
| commonSettingsAreReadOnly = commonProps->save() ? -1 : 1; | |||
| if (commonSettingsAreReadOnly > 0) | |||
| return userProps; | |||
| return userProps.get(); | |||
| } | |||
| return commonProps; | |||
| return commonProps.get(); | |||
| } | |||
| bool ApplicationProperties::saveIfNeeded() | |||
| @@ -102,8 +101,8 @@ bool ApplicationProperties::saveIfNeeded() | |||
| void ApplicationProperties::closeFiles() | |||
| { | |||
| userProps = nullptr; | |||
| commonProps = nullptr; | |||
| userProps.reset(); | |||
| commonProps.reset(); | |||
| } | |||
| } // namespace juce | |||
| @@ -122,7 +122,7 @@ private: | |||
| //============================================================================== | |||
| PropertiesFile::Options options; | |||
| ScopedPointer<PropertiesFile> userProps, commonProps; | |||
| int commonSettingsAreReadOnly; | |||
| int commonSettingsAreReadOnly = 0; | |||
| void openFiles(); | |||
| @@ -331,7 +331,7 @@ bool PropertiesFile::saveAsBinary() | |||
| out->writeString (values[i]); | |||
| } | |||
| out = nullptr; | |||
| out.reset(); | |||
| if (tempFile.overwriteTargetFileWithTemporary()) | |||
| { | |||
| @@ -36,8 +36,8 @@ struct UndoManager::ActionSet | |||
| bool perform() const | |||
| { | |||
| for (int i = 0; i < actions.size(); ++i) | |||
| if (! actions.getUnchecked(i)->perform()) | |||
| for (auto* a : actions) | |||
| if (! a->perform()) | |||
| return false; | |||
| return true; | |||
| @@ -56,8 +56,8 @@ struct UndoManager::ActionSet | |||
| { | |||
| int total = 0; | |||
| for (int i = actions.size(); --i >= 0;) | |||
| total += actions.getUnchecked(i)->getSizeInUnits(); | |||
| for (auto* a : actions) | |||
| total += a->getSizeInUnits(); | |||
| return total; | |||
| } | |||
| @@ -68,15 +68,9 @@ struct UndoManager::ActionSet | |||
| }; | |||
| //============================================================================== | |||
| UndoManager::UndoManager (const int maxNumberOfUnitsToKeep, | |||
| const int minimumTransactions) | |||
| : totalUnitsStored (0), | |||
| nextIndex (0), | |||
| newTransaction (true), | |||
| reentrancyCheck (false) | |||
| UndoManager::UndoManager (int maxNumberOfUnitsToKeep, int minimumTransactions) | |||
| { | |||
| setMaxNumberOfStoredUnits (maxNumberOfUnitsToKeep, | |||
| minimumTransactions); | |||
| setMaxNumberOfStoredUnits (maxNumberOfUnitsToKeep, minimumTransactions); | |||
| } | |||
| UndoManager::~UndoManager() | |||
| @@ -97,11 +91,10 @@ int UndoManager::getNumberOfUnitsTakenUpByStoredCommands() const | |||
| return totalUnitsStored; | |||
| } | |||
| void UndoManager::setMaxNumberOfStoredUnits (const int maxNumberOfUnitsToKeep, | |||
| const int minimumTransactions) | |||
| void UndoManager::setMaxNumberOfStoredUnits (int maxUnits, int minTransactions) | |||
| { | |||
| maxNumUnitsToKeep = jmax (1, maxNumberOfUnitsToKeep); | |||
| minimumTransactionsToKeep = jmax (1, minimumTransactions); | |||
| maxNumUnitsToKeep = jmax (1, maxUnits); | |||
| minimumTransactionsToKeep = jmax (1, minTransactions); | |||
| } | |||
| //============================================================================== | |||
| @@ -118,7 +111,7 @@ bool UndoManager::perform (UndoableAction* const newAction, const String& action | |||
| return false; | |||
| } | |||
| bool UndoManager::perform (UndoableAction* const newAction) | |||
| bool UndoManager::perform (UndoableAction* newAction) | |||
| { | |||
| if (newAction != nullptr) | |||
| { | |||
| @@ -133,15 +126,15 @@ bool UndoManager::perform (UndoableAction* const newAction) | |||
| if (action->perform()) | |||
| { | |||
| ActionSet* actionSet = getCurrentSet(); | |||
| auto* actionSet = getCurrentSet(); | |||
| if (actionSet != nullptr && ! newTransaction) | |||
| { | |||
| if (UndoableAction* const lastAction = actionSet->actions.getLast()) | |||
| if (auto* lastAction = actionSet->actions.getLast()) | |||
| { | |||
| if (UndoableAction* const coalescedAction = lastAction->createCoalescedAction (action)) | |||
| if (auto coalescedAction = lastAction->createCoalescedAction (action.get())) | |||
| { | |||
| action = coalescedAction; | |||
| action.reset (coalescedAction); | |||
| totalUnitsStored -= lastAction->getSizeInUnits(); | |||
| actionSet->actions.removeLast(); | |||
| } | |||
| @@ -176,7 +169,7 @@ void UndoManager::moveFutureTransactionsToStash() | |||
| while (nextIndex < transactions.size()) | |||
| { | |||
| ActionSet* removed = transactions.removeAndReturn (nextIndex); | |||
| auto* removed = transactions.removeAndReturn (nextIndex); | |||
| stashedFutureTransactions.add (removed); | |||
| totalUnitsStored -= removed->getTotalSize(); | |||
| } | |||
| @@ -191,11 +184,10 @@ void UndoManager::restoreStashedFutureTransactions() | |||
| transactions.remove (nextIndex); | |||
| } | |||
| for (int i = 0; i < stashedFutureTransactions.size(); ++i) | |||
| for (auto* stashed : stashedFutureTransactions) | |||
| { | |||
| ActionSet* action = stashedFutureTransactions.removeAndReturn (i); | |||
| totalUnitsStored += action->getTotalSize(); | |||
| transactions.add (action); | |||
| transactions.add (stashed); | |||
| totalUnitsStored += stashed->getTotalSize(); | |||
| } | |||
| stashedFutureTransactions.clearQuick (false); | |||
| @@ -219,7 +211,7 @@ void UndoManager::dropOldTransactionsIfTooLarge() | |||
| void UndoManager::beginNewTransaction() noexcept | |||
| { | |||
| beginNewTransaction (String()); | |||
| beginNewTransaction ({}); | |||
| } | |||
| void UndoManager::beginNewTransaction (const String& actionName) noexcept | |||
| @@ -232,13 +224,13 @@ void UndoManager::setCurrentTransactionName (const String& newName) noexcept | |||
| { | |||
| if (newTransaction) | |||
| newTransactionName = newName; | |||
| else if (ActionSet* action = getCurrentSet()) | |||
| else if (auto* action = getCurrentSet()) | |||
| action->name = newName; | |||
| } | |||
| String UndoManager::getCurrentTransactionName() const noexcept | |||
| { | |||
| if (ActionSet* action = getCurrentSet()) | |||
| if (auto* action = getCurrentSet()) | |||
| return action->name; | |||
| return newTransactionName; | |||
| @@ -253,7 +245,7 @@ bool UndoManager::canRedo() const noexcept { return getNextSet() != nullptr | |||
| bool UndoManager::undo() | |||
| { | |||
| if (const ActionSet* const s = getCurrentSet()) | |||
| if (auto* s = getCurrentSet()) | |||
| { | |||
| const ScopedValueSetter<bool> setter (reentrancyCheck, true); | |||
| @@ -272,7 +264,7 @@ bool UndoManager::undo() | |||
| bool UndoManager::redo() | |||
| { | |||
| if (const ActionSet* const s = getNextSet()) | |||
| if (auto* s = getNextSet()) | |||
| { | |||
| const ScopedValueSetter<bool> setter (reentrancyCheck, true); | |||
| @@ -335,15 +327,15 @@ bool UndoManager::undoCurrentTransactionOnly() | |||
| void UndoManager::getActionsInCurrentTransaction (Array<const UndoableAction*>& actionsFound) const | |||
| { | |||
| if (! newTransaction) | |||
| if (const ActionSet* const s = getCurrentSet()) | |||
| for (int i = 0; i < s->actions.size(); ++i) | |||
| actionsFound.add (s->actions.getUnchecked(i)); | |||
| if (auto* s = getCurrentSet()) | |||
| for (auto* a : s->actions) | |||
| actionsFound.add (a); | |||
| } | |||
| int UndoManager::getNumActionsInCurrentTransaction() const | |||
| { | |||
| if (! newTransaction) | |||
| if (const ActionSet* const s = getCurrentSet()) | |||
| if (auto* s = getCurrentSet()) | |||
| return s->actions.size(); | |||
| return 0; | |||
| @@ -232,8 +232,8 @@ private: | |||
| friend struct ContainerDeletePolicy<ActionSet>; | |||
| OwnedArray<ActionSet> transactions, stashedFutureTransactions; | |||
| String newTransactionName; | |||
| int totalUnitsStored, maxNumUnitsToKeep, minimumTransactionsToKeep, nextIndex; | |||
| bool newTransaction, reentrancyCheck; | |||
| int totalUnitsStored = 0, maxNumUnitsToKeep = 0, minimumTransactionsToKeep = 0, nextIndex = 0; | |||
| bool newTransaction = true, reentrancyCheck = false; | |||
| ActionSet* getCurrentSet() const noexcept; | |||
| ActionSet* getNextSet() const noexcept; | |||
| void moveFutureTransactionsToStash(); | |||
| @@ -128,7 +128,7 @@ ChildProcessMaster::~ChildProcessMaster() | |||
| { | |||
| sendMessageToSlave (MemoryBlock (killMessage, specialMessageSize)); | |||
| connection->disconnect(); | |||
| connection = nullptr; | |||
| connection.reset(); | |||
| } | |||
| } | |||
| @@ -145,10 +145,10 @@ bool ChildProcessMaster::sendMessageToSlave (const MemoryBlock& mb) | |||
| bool ChildProcessMaster::launchSlaveProcess (const File& executable, const String& commandLineUniqueID, int timeoutMs, int streamFlags) | |||
| { | |||
| connection = nullptr; | |||
| connection.reset(); | |||
| jassert (childProcess.kill()); | |||
| const String pipeName ("p" + String::toHexString (Random().nextInt64())); | |||
| auto pipeName = "p" + String::toHexString (Random().nextInt64()); | |||
| StringArray args; | |||
| args.add (executable.getFullPathName()); | |||
| @@ -164,7 +164,7 @@ bool ChildProcessMaster::launchSlaveProcess (const File& executable, const Strin | |||
| return true; | |||
| } | |||
| connection = nullptr; | |||
| connection.reset(); | |||
| } | |||
| return false; | |||
| @@ -257,7 +257,7 @@ bool ChildProcessSlave::initialiseFromCommandLine (const String& commandLine, | |||
| connection = new Connection (*this, pipeName, timeoutMs <= 0 ? defaultTimeoutMs : timeoutMs); | |||
| if (! connection->isConnected()) | |||
| connection = nullptr; | |||
| connection.reset(); | |||
| } | |||
| } | |||
| @@ -45,7 +45,7 @@ InterprocessConnection::~InterprocessConnection() | |||
| callbackConnectionState = false; | |||
| disconnect(); | |||
| masterReference.clear(); | |||
| thread = nullptr; | |||
| thread.reset(); | |||
| } | |||
| //============================================================================== | |||
| @@ -65,7 +65,7 @@ bool InterprocessConnection::connectToSocket (const String& hostName, | |||
| return true; | |||
| } | |||
| socket = nullptr; | |||
| socket.reset(); | |||
| return false; | |||
| } | |||
| @@ -121,8 +121,8 @@ void InterprocessConnection::disconnect() | |||
| void InterprocessConnection::deletePipeAndSocket() | |||
| { | |||
| const ScopedLock sl (pipeAndSocketLock); | |||
| socket = nullptr; | |||
| pipe = nullptr; | |||
| socket.reset(); | |||
| pipe.reset(); | |||
| } | |||
| bool InterprocessConnection::isConnected() const | |||
| @@ -122,10 +122,10 @@ public: | |||
| bool isConnected() const; | |||
| /** Returns the socket that this connection is using (or nullptr if it uses a pipe). */ | |||
| StreamingSocket* getSocket() const noexcept { return socket; } | |||
| StreamingSocket* getSocket() const noexcept { return socket.get(); } | |||
| /** Returns the pipe that this connection is using (or nullptr if it uses a socket). */ | |||
| NamedPipe* getPipe() const noexcept { return pipe; } | |||
| NamedPipe* getPipe() const noexcept { return pipe.get(); } | |||
| /** Returns the name of the machine at the other end of this connection. | |||
| This may return an empty string if the name is unknown. | |||
| @@ -46,7 +46,7 @@ bool InterprocessConnectionServer::beginWaitingForSocket (const int portNumber, | |||
| return true; | |||
| } | |||
| socket = nullptr; | |||
| socket.reset(); | |||
| return false; | |||
| } | |||
| @@ -58,7 +58,7 @@ void InterprocessConnectionServer::stop() | |||
| socket->close(); | |||
| stopThread (4000); | |||
| socket = nullptr; | |||
| socket.reset(); | |||
| } | |||
| int InterprocessConnectionServer::getBoundPort() const noexcept | |||
| @@ -304,7 +304,7 @@ bool JUCEApplicationBase::initialiseApp() | |||
| #if JUCE_HANDLE_MULTIPLE_INSTANCES | |||
| if (multipleInstanceHandler != nullptr) | |||
| MessageManager::getInstance()->registerBroadcastListener (multipleInstanceHandler); | |||
| MessageManager::getInstance()->registerBroadcastListener (multipleInstanceHandler.get()); | |||
| #endif | |||
| return true; | |||
| @@ -316,7 +316,7 @@ int JUCEApplicationBase::shutdownApp() | |||
| #if JUCE_HANDLE_MULTIPLE_INSTANCES | |||
| if (multipleInstanceHandler != nullptr) | |||
| MessageManager::getInstance()->deregisterBroadcastListener (multipleInstanceHandler); | |||
| MessageManager::getInstance()->deregisterBroadcastListener (multipleInstanceHandler.get()); | |||
| #endif | |||
| JUCE_TRY | |||
| @@ -326,7 +326,7 @@ int JUCEApplicationBase::shutdownApp() | |||
| } | |||
| JUCE_CATCH_EXCEPTION | |||
| multipleInstanceHandler = nullptr; | |||
| multipleInstanceHandler.reset(); | |||
| return getApplicationReturnValue(); | |||
| } | |||
| @@ -32,7 +32,7 @@ MessageManager::MessageManager() noexcept | |||
| MessageManager::~MessageManager() noexcept | |||
| { | |||
| broadcaster = nullptr; | |||
| broadcaster.reset(); | |||
| doPlatformSpecificShutdown(); | |||
| @@ -37,13 +37,13 @@ FillType::FillType (Colour c) noexcept | |||
| { | |||
| } | |||
| FillType::FillType (const ColourGradient& gradient_) | |||
| : colour (0xff000000), gradient (new ColourGradient (gradient_)) | |||
| FillType::FillType (const ColourGradient& g) | |||
| : colour (0xff000000), gradient (new ColourGradient (g)) | |||
| { | |||
| } | |||
| FillType::FillType (const Image& image_, const AffineTransform& transform_) noexcept | |||
| : colour (0xff000000), image (image_), transform (transform_) | |||
| FillType::FillType (const Image& im, const AffineTransform& t) noexcept | |||
| : colour (0xff000000), image (im), transform (t) | |||
| { | |||
| } | |||
| @@ -106,7 +106,7 @@ bool FillType::operator!= (const FillType& other) const | |||
| void FillType::setColour (Colour newColour) noexcept | |||
| { | |||
| gradient = nullptr; | |||
| gradient.reset(); | |||
| image = Image(); | |||
| colour = newColour; | |||
| } | |||
| @@ -125,11 +125,11 @@ void FillType::setGradient (const ColourGradient& newGradient) | |||
| } | |||
| } | |||
| void FillType::setTiledImage (const Image& image_, const AffineTransform& transform_) noexcept | |||
| void FillType::setTiledImage (const Image& newImage, const AffineTransform& newTransform) noexcept | |||
| { | |||
| gradient = nullptr; | |||
| image = image_; | |||
| transform = transform_; | |||
| gradient.reset(); | |||
| image = newImage; | |||
| transform = newTransform; | |||
| colour = Colours::black; | |||
| } | |||
| @@ -297,10 +297,10 @@ public: | |||
| snapToIntegerCoordinate = typeface->isHinted(); | |||
| glyph = glyphNumber; | |||
| const float fontHeight = font.getHeight(); | |||
| edgeTable = typeface->getEdgeTableForGlyph (glyphNumber, | |||
| AffineTransform::scale (fontHeight * font.getHorizontalScale(), | |||
| fontHeight), fontHeight); | |||
| auto fontHeight = font.getHeight(); | |||
| edgeTable.reset (typeface->getEdgeTableForGlyph (glyphNumber, | |||
| AffineTransform::scale (fontHeight * font.getHorizontalScale(), | |||
| fontHeight), fontHeight)); | |||
| } | |||
| Font font; | |||
| @@ -76,27 +76,7 @@ private: | |||
| }; | |||
| //============================================================================== | |||
| Button::Button (const String& name) | |||
| : Component (name), | |||
| text (name), | |||
| buttonPressTime (0), | |||
| lastRepeatTime (0), | |||
| commandManagerToUse (nullptr), | |||
| autoRepeatDelay (-1), | |||
| autoRepeatSpeed (0), | |||
| autoRepeatMinimumDelay (-1), | |||
| radioGroupId (0), | |||
| connectedEdgeFlags (0), | |||
| commandID(), | |||
| buttonState (buttonNormal), | |||
| lastStatePainted (buttonNormal), | |||
| lastToggleState (false), | |||
| clickTogglesState (false), | |||
| needsToRelease (false), | |||
| needsRepainting (false), | |||
| isKeyDown (false), | |||
| triggerOnMouseDown (false), | |||
| generateTooltip (false) | |||
| Button::Button (const String& name) : Component (name), text (name) | |||
| { | |||
| callbackHelper = new CallbackHelper (*this); | |||
| @@ -112,7 +92,7 @@ Button::~Button() | |||
| commandManagerToUse->removeListener (callbackHelper); | |||
| isOn.removeListener (callbackHelper); | |||
| callbackHelper = nullptr; | |||
| callbackHelper.reset(); | |||
| } | |||
| //============================================================================== | |||
| @@ -479,21 +479,21 @@ private: | |||
| friend class CallbackHelper; | |||
| friend struct ContainerDeletePolicy<CallbackHelper>; | |||
| ScopedPointer<CallbackHelper> callbackHelper; | |||
| uint32 buttonPressTime, lastRepeatTime; | |||
| ApplicationCommandManager* commandManagerToUse; | |||
| int autoRepeatDelay, autoRepeatSpeed, autoRepeatMinimumDelay; | |||
| int radioGroupId, connectedEdgeFlags; | |||
| CommandID commandID; | |||
| ButtonState buttonState, lastStatePainted; | |||
| uint32 buttonPressTime = 0, lastRepeatTime = 0; | |||
| ApplicationCommandManager* commandManagerToUse = nullptr; | |||
| int autoRepeatDelay = -1, autoRepeatSpeed = 0, autoRepeatMinimumDelay = -1; | |||
| int radioGroupId = 0, connectedEdgeFlags = 0; | |||
| CommandID commandID = {}; | |||
| ButtonState buttonState = buttonNormal, lastStatePainted = buttonNormal; | |||
| Value isOn; | |||
| bool lastToggleState; | |||
| bool clickTogglesState; | |||
| bool needsToRelease; | |||
| bool needsRepainting; | |||
| bool isKeyDown; | |||
| bool triggerOnMouseDown; | |||
| bool generateTooltip; | |||
| bool lastToggleState = false; | |||
| bool clickTogglesState = false; | |||
| bool needsToRelease = false; | |||
| bool needsRepainting = false; | |||
| bool isKeyDown = false; | |||
| bool triggerOnMouseDown = false; | |||
| bool generateTooltip = false; | |||
| void repeatTimerCallback(); | |||
| bool keyStateChangedCallback(); | |||
| @@ -28,7 +28,6 @@ namespace juce | |||
| { | |||
| ApplicationCommandManager::ApplicationCommandManager() | |||
| : firstTarget (nullptr) | |||
| { | |||
| keyMappings = new KeyPressMappingSet (*this); | |||
| Desktop::getInstance().addFocusChangeListener (this); | |||
| @@ -37,7 +36,7 @@ ApplicationCommandManager::ApplicationCommandManager() | |||
| ApplicationCommandManager::~ApplicationCommandManager() | |||
| { | |||
| Desktop::getInstance().removeFocusChangeListener (this); | |||
| keyMappings = nullptr; | |||
| keyMappings.reset(); | |||
| } | |||
| //============================================================================== | |||
| @@ -198,7 +198,7 @@ public: | |||
| @see KeyPressMappingSet | |||
| */ | |||
| KeyPressMappingSet* getKeyMappings() const noexcept { return keyMappings; } | |||
| KeyPressMappingSet* getKeyMappings() const noexcept { return keyMappings.get(); } | |||
| //============================================================================== | |||
| @@ -304,7 +304,7 @@ private: | |||
| OwnedArray<ApplicationCommandInfo> commands; | |||
| ListenerList<ApplicationCommandManagerListener> listeners; | |||
| ScopedPointer<KeyPressMappingSet> keyMappings; | |||
| ApplicationCommandTarget* firstTarget; | |||
| ApplicationCommandTarget* firstTarget = nullptr; | |||
| void sendListenerInvokeCallback (const ApplicationCommandTarget::InvocationInfo&); | |||
| void handleAsyncUpdate() override; | |||
| @@ -853,7 +853,7 @@ void Component::setBufferedToImage (const bool shouldBeBuffered) | |||
| } | |||
| else | |||
| { | |||
| cachedImage = nullptr; | |||
| cachedImage.reset(); | |||
| } | |||
| } | |||
| @@ -1334,7 +1334,7 @@ void Component::setTransform (const AffineTransform& newTransform) | |||
| if (affineTransform != nullptr) | |||
| { | |||
| repaint(); | |||
| affineTransform = nullptr; | |||
| affineTransform.reset(); | |||
| repaint(); | |||
| sendMovedResizedMessages (false, false); | |||
| @@ -2812,7 +2812,7 @@ void Component::grabFocusInternal (const FocusChangeType cause, const bool canTr | |||
| if (traverser != nullptr) | |||
| { | |||
| auto* defaultComp = traverser->getDefaultComponent (this); | |||
| traverser = nullptr; | |||
| traverser.reset(); | |||
| if (defaultComp != nullptr) | |||
| { | |||
| @@ -2859,7 +2859,7 @@ void Component::moveKeyboardFocusToSibling (const bool moveToNext) | |||
| { | |||
| auto* nextComp = moveToNext ? traverser->getNextComponent (this) | |||
| : traverser->getPreviousComponent (this); | |||
| traverser = nullptr; | |||
| traverser.reset(); | |||
| if (nextComp != nullptr) | |||
| { | |||
| @@ -2222,7 +2222,7 @@ public: | |||
| /** Returns the object that was set by setCachedComponentImage(). | |||
| @see setCachedComponentImage | |||
| */ | |||
| CachedComponentImage* getCachedComponentImage() const noexcept { return cachedImage; } | |||
| CachedComponentImage* getCachedComponentImage() const noexcept { return cachedImage.get(); } | |||
| /** Sets a flag to indicate whether mouse drag events on this Component should be ignored when it is inside a | |||
| Viewport with drag-to-scroll functionality enabled. This is useful for Components such as sliders that | |||
| @@ -143,7 +143,7 @@ void DrawablePath::setPath (const RelativePointPath& newRelativePath) | |||
| } | |||
| else | |||
| { | |||
| relativePath = nullptr; | |||
| relativePath.reset(); | |||
| applyRelativePath (newRelativePath, nullptr); | |||
| } | |||
| } | |||
| @@ -103,7 +103,7 @@ void DrawableShape::setFillInternal (RelativeFillType& fill, const RelativeFillT | |||
| if (fill != newFill) | |||
| { | |||
| fill = newFill; | |||
| pos = nullptr; | |||
| pos.reset(); | |||
| if (fill.isDynamic()) | |||
| { | |||
| @@ -87,7 +87,7 @@ void DirectoryContentsList::stopSearching() | |||
| { | |||
| shouldStop = true; | |||
| thread.removeTimeSliceClient (this); | |||
| fileFindHandle = nullptr; | |||
| fileFindHandle.reset(); | |||
| } | |||
| void DirectoryContentsList::clear() | |||
| @@ -210,7 +210,7 @@ bool DirectoryContentsList::checkNextFile (bool& hasChanged) | |||
| return true; | |||
| } | |||
| fileFindHandle = nullptr; | |||
| fileFindHandle.reset(); | |||
| } | |||
| return false; | |||
| @@ -121,8 +121,8 @@ FileBrowserComponent::FileBrowserComponent (int flags_, | |||
| FileBrowserComponent::~FileBrowserComponent() | |||
| { | |||
| fileListComponent = nullptr; | |||
| fileList = nullptr; | |||
| fileListComponent.reset(); | |||
| fileList.reset(); | |||
| thread.stopThread (10000); | |||
| } | |||
| @@ -88,7 +88,7 @@ void FilenameComponent::setBrowseButtonText (const String& newBrowseButtonText) | |||
| void FilenameComponent::lookAndFeelChanged() | |||
| { | |||
| browseButton = nullptr; | |||
| browseButton.reset(); | |||
| addAndMakeVisible (browseButton = getLookAndFeel().createFilenameComponentBrowseButton (browseButtonText)); | |||
| browseButton->setConnectedEdges (Button::ConnectedOnLeft); | |||
| @@ -61,7 +61,7 @@ public: | |||
| if (useProxyComponent) | |||
| proxy = new ProxyComponent (*component); | |||
| else | |||
| proxy = nullptr; | |||
| proxy.reset(); | |||
| component->setVisible (! useProxyComponent); | |||
| } | |||
| @@ -282,7 +282,7 @@ bool MultiDocumentPanel::closeDocument (Component* component, | |||
| delete component; | |||
| if (tabComponent != nullptr && tabComponent->getNumTabs() <= numDocsBeforeTabsUsed) | |||
| tabComponent = nullptr; | |||
| tabComponent.reset(); | |||
| components.removeFirstMatchingValue (component); | |||
| @@ -387,7 +387,7 @@ void MultiDocumentPanel::setLayoutMode (const LayoutMode newLayoutMode) | |||
| if (mode == FloatingWindows) | |||
| { | |||
| tabComponent = nullptr; | |||
| tabComponent.reset(); | |||
| } | |||
| else | |||
| { | |||
| @@ -242,7 +242,7 @@ public: | |||
| Colour getBackgroundColour() const noexcept { return backgroundColour; } | |||
| /** If the panel is being used in tabbed mode, this returns the TabbedComponent that's involved. */ | |||
| TabbedComponent* getCurrentTabbedComponent() const noexcept { return tabComponent; } | |||
| TabbedComponent* getCurrentTabbedComponent() const noexcept { return tabComponent.get(); } | |||
| //============================================================================== | |||
| /** A subclass must override this to say whether its currently ok for a document | |||