Browse Source

Removed some erroneous casts from ReferenceCountedObjectPtr that allowed base classes to be implicitly converted to derived classes

tags/2021-05-28
jules 7 years ago
parent
commit
8e280f3454
3 changed files with 30 additions and 29 deletions
  1. +1
    -1
      modules/juce_box2d/box2d/Common/b2Timer.cpp
  2. +17
    -17
      modules/juce_core/memory/juce_ReferenceCountedObject.h
  3. +12
    -11
      modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm

+ 1
- 1
modules/juce_box2d/box2d/Common/b2Timer.cpp View File

@@ -18,7 +18,7 @@
#include "b2Timer.h"
b2Timer::b2Timer()
b2Timer::b2Timer()
{
Reset();
}


+ 17
- 17
modules/juce_core/memory/juce_ReferenceCountedObject.h View File

@@ -237,12 +237,12 @@ private:
@tags{Core}
*/
template <class ReferenceCountedObjectClass>
template <class ObjectType>
class ReferenceCountedObjectPtr
{
public:
/** The class being referenced by this pointer. */
typedef ReferenceCountedObjectClass ReferencedType;
typedef ObjectType ReferencedType;
//==============================================================================
/** Creates a pointer to a null object. */
@@ -274,7 +274,7 @@ public:
*/
template <typename Convertible>
ReferenceCountedObjectPtr (const ReferenceCountedObjectPtr<Convertible>& other) noexcept
: referencedObject (static_cast<ReferencedType*> (other.get()))
: referencedObject (other.get())
{
incIfNotNull (referencedObject);
}
@@ -295,7 +295,7 @@ public:
template <typename Convertible>
ReferenceCountedObjectPtr& operator= (const ReferenceCountedObjectPtr<Convertible>& other)
{
return operator= (static_cast<ReferencedType*> (other.get()));
return operator= (other.get());
}
/** Changes this pointer to point at a different object.
@@ -303,7 +303,7 @@ public:
The reference count of the old object is decremented, and it might be
deleted if it hits zero. The new object's count is incremented.
*/
ReferenceCountedObjectPtr& operator= (ReferencedType* const newObject)
ReferenceCountedObjectPtr& operator= (ReferencedType* newObject)
{
if (referencedObject != newObject)
{
@@ -382,43 +382,43 @@ private:
//==============================================================================
/** Compares two ReferenceCountedObjectPtrs. */
template <typename ReferenceCountedObjectClass>
bool operator== (const ReferenceCountedObjectPtr<ReferenceCountedObjectClass>& object1, ReferenceCountedObjectClass* const object2) noexcept
template <typename ObjectType>
bool operator== (const ReferenceCountedObjectPtr<ObjectType>& object1, ObjectType* const object2) noexcept
{
return object1.get() == object2;
}
/** Compares two ReferenceCountedObjectPtrs. */
template <typename ReferenceCountedObjectClass>
bool operator== (const ReferenceCountedObjectPtr<ReferenceCountedObjectClass>& object1, const ReferenceCountedObjectPtr<ReferenceCountedObjectClass>& object2) noexcept
template <typename ObjectType>
bool operator== (const ReferenceCountedObjectPtr<ObjectType>& object1, const ReferenceCountedObjectPtr<ObjectType>& object2) noexcept
{
return object1.get() == object2.get();
}
/** Compares two ReferenceCountedObjectPtrs. */
template <typename ReferenceCountedObjectClass>
bool operator== (ReferenceCountedObjectClass* object1, const ReferenceCountedObjectPtr<ReferenceCountedObjectClass>& object2) noexcept
template <typename ObjectType>
bool operator== (ObjectType* object1, const ReferenceCountedObjectPtr<ObjectType>& object2) noexcept
{
return object1 == object2.get();
}
/** Compares two ReferenceCountedObjectPtrs. */
template <typename ReferenceCountedObjectClass>
bool operator!= (const ReferenceCountedObjectPtr<ReferenceCountedObjectClass>& object1, const ReferenceCountedObjectClass* object2) noexcept
template <typename ObjectType>
bool operator!= (const ReferenceCountedObjectPtr<ObjectType>& object1, const ObjectType* object2) noexcept
{
return object1.get() != object2;
}
/** Compares two ReferenceCountedObjectPtrs. */
template <typename ReferenceCountedObjectClass>
bool operator!= (const ReferenceCountedObjectPtr<ReferenceCountedObjectClass>& object1, const ReferenceCountedObjectPtr<ReferenceCountedObjectClass>& object2) noexcept
template <typename ObjectType>
bool operator!= (const ReferenceCountedObjectPtr<ObjectType>& object1, const ReferenceCountedObjectPtr<ObjectType>& object2) noexcept
{
return object1.get() != object2.get();
}
/** Compares two ReferenceCountedObjectPtrs. */
template <typename ReferenceCountedObjectClass>
bool operator!= (ReferenceCountedObjectClass* object1, const ReferenceCountedObjectPtr<ReferenceCountedObjectClass>& object2) noexcept
template <typename ObjectType>
bool operator!= (ObjectType* object1, const ReferenceCountedObjectPtr<ObjectType>& object2) noexcept
{
return object1 != object2.get();
}


+ 12
- 11
modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm View File

@@ -82,7 +82,7 @@ private:
private:
static void frameChanged (id self, SEL, NSNotification*)
{
if (NSViewResizeWatcher* const target = getIvar<NSViewResizeWatcher*> (self, "target"))
if (auto* target = getIvar<NSViewResizeWatcher*> (self, "target"))
target->viewResized();
}
@@ -98,7 +98,7 @@ class NSViewAttachment : public ReferenceCountedObject,
private NSViewResizeWatcher
{
public:
NSViewAttachment (NSView* const v, Component& comp)
NSViewAttachment (NSView* v, Component& comp)
: ComponentMovementWatcher (&comp),
view (v), owner (comp),
currentPeer (nullptr)
@@ -134,9 +134,9 @@ public:
void componentMovedOrResized (bool /*wasMoved*/, bool /*wasResized*/) override
{
if (ComponentPeer* const peer = owner.getTopLevelComponent()->getPeer())
if (auto* peer = owner.getTopLevelComponent()->getPeer())
{
NSRect r = makeNSRect (peer->getAreaCoveredBy (owner));
auto r = makeNSRect (peer->getAreaCoveredBy (owner));
r.origin.y = [[view superview] frame].size.height - (r.origin.y + r.size.height);
[view setFrame: r];
}
@@ -144,7 +144,7 @@ public:
void componentPeerChanged() override
{
ComponentPeer* const peer = owner.getPeer();
auto* peer = owner.getPeer();
if (currentPeer != peer)
{
@@ -152,7 +152,7 @@ public:
if (peer != nullptr)
{
NSView* const peerView = (NSView*) peer->getNativeHandle();
auto peerView = (NSView*) peer->getNativeHandle();
[peerView addSubview: view];
componentMovedOrResized (false, false);
}
@@ -182,7 +182,8 @@ public:
NSView* const view;
typedef ReferenceCountedObjectPtr<NSViewAttachment> Ptr;
using Ptr = ReferenceCountedObjectPtr<NSViewAttachment>;
private:
Component& owner;
ComponentPeer* currentPeer;
@@ -201,11 +202,11 @@ private:
NSViewComponent::NSViewComponent() {}
NSViewComponent::~NSViewComponent() {}
void NSViewComponent::setView (void* const view)
void NSViewComponent::setView (void* view)
{
if (view != getView())
{
NSViewAttachment::Ptr old = attachment;
auto old = attachment;
attachment = nullptr;
@@ -226,7 +227,7 @@ void NSViewComponent::resizeToFitView()
{
if (attachment != nullptr)
{
NSRect r = [static_cast<NSViewAttachment*> (attachment.get())->view frame];
auto r = [static_cast<NSViewAttachment*> (attachment.get())->view frame];
setBounds (Rectangle<int> ((int) r.size.width, (int) r.size.height));
}
}
@@ -239,7 +240,7 @@ void NSViewComponent::alphaChanged()
(static_cast<NSViewAttachment*> (attachment.get()))->updateAlpha();
}
ReferenceCountedObject* NSViewComponent::attachViewToComponent (Component& comp, void* const view)
ReferenceCountedObject* NSViewComponent::attachViewToComponent (Component& comp, void* view)
{
return new NSViewAttachment ((NSView*) view, comp);
}


Loading…
Cancel
Save