本文整理汇总了C++中WeakReference::get方法的典型用法代码示例。如果您正苦于以下问题:C++ WeakReference::get方法的具体用法?C++ WeakReference::get怎么用?C++ WeakReference::get使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WeakReference
的用法示例。
在下文中一共展示了WeakReference::get方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: checkForExternalDrag
void checkForExternalDrag (DragAndDropTarget::SourceDetails& details, const Point<int>& screenPos)
{
if (! hasCheckedForExternalDrag)
{
if (Desktop::getInstance().findComponentAt (screenPos) == nullptr)
{
hasCheckedForExternalDrag = true;
StringArray files;
bool canMoveFiles = false;
if (owner.shouldDropFilesWhenDraggedExternally (details, files, canMoveFiles)
&& files.size() > 0)
{
WeakReference<Component> thisWeakRef (this);
setVisible (false);
isDoingExternalDrag = true;
if (ModifierKeys::getCurrentModifiersRealtime().isAnyMouseButtonDown())
DragAndDropContainer::performExternalDragDropOfFiles (files, canMoveFiles);
delete thisWeakRef.get();
return;
}
}
}
}
示例2: lock
/**
* Retrieve a requires file that might be loaded for this
* instance.
*
* @param name The name used for the requires file.
*
* @return The loaded requires file, or OREF_NULL if this instance
* has not used the file yet.
*/
PackageClass *InterpreterInstance::getRequiresFile(RexxActivity *activity, RexxString *name)
{
WeakReference *ref = (WeakReference *)requiresFiles->get(name);
if (ref != OREF_NULL)
{
PackageClass *resolved = (PackageClass *)ref->get();
if (resolved != OREF_NULL)
{
// get the guard lock on this...this will ensure that
// the initializer is run before we grab this from the cache
GuardLock lock(activity, resolved, ThePackageClass);
return resolved;
}
// this was garbage collected, remove it from the table
requiresFiles->remove(name);
}
return OREF_NULL;
}
示例3:
/**
* Check for a package already in the requires cache.
*
* @param name The name of the target.
*
* @return The PackageClass instance, if any.
*/
RoutineClass *PackageManager::checkRequiresCache(RexxString *name, ProtectedObject &result)
{
// first check this using the specified name. Since we need to perform checks in the
// macro space, it's possible this will be loaded under the simple name. We'll need to check
// table again using the fully resolved name afterward.
WeakReference *requiresRef = (WeakReference *)loadedRequires->get(name);
if (requiresRef != OREF_NULL)
{
RoutineClass *resolved = (RoutineClass *)requiresRef->get();
if (resolved != OREF_NULL)
{
result = resolved;
return resolved;
}
// this was garbage collected, remove it from the table
loadedRequires->remove(name);
}
return OREF_NULL;
}
示例4: getCurrentlyOver
DragAndDropTarget* getCurrentlyOver()
{
return dynamic_cast <DragAndDropTarget*> (currentlyOverComp.get());
}
示例5: updateLocation
void updateLocation (const bool canDoExternalDrag, const Point<int>& screenPos)
{
// (note: use a local copy of this in case a callback runs a modal loop and deletes
// this object before it returns)
DragAndDropTarget::SourceDetails details (sourceDetails);
Point<int> newPos (screenPos + imageOffset);
if (getParentComponent() != nullptr)
newPos = getParentComponent()->getLocalPoint (nullptr, newPos);
//if (newX != getX() || newY != getY())
{
setTopLeftPosition (newPos.getX(), newPos.getY());
Point<int> relPos;
DragAndDropTarget* const newTarget = findTarget (screenPos, relPos);
Component* newTargetComp = dynamic_cast <Component*> (newTarget);
drawImage = (newTarget == nullptr) || newTarget->shouldDrawDragImageWhenOver();
if (newTargetComp != currentlyOverComp)
{
DragAndDropTarget* const lastTarget = getCurrentlyOver();
if (lastTarget != nullptr && details.sourceComponent != nullptr
&& lastTarget->isInterestedInDragSource (details))
lastTarget->itemDragExit (details);
currentlyOverComp = newTargetComp;
if (newTarget != nullptr)
{
details.localPosition = relPos;
if (newTarget->isInterestedInDragSource (details))
newTarget->itemDragEnter (details);
}
}
{
DragAndDropTarget* const target = getCurrentlyOver();
if (target != nullptr)
{
details.localPosition = relPos;
if (target->isInterestedInDragSource (details))
target->itemDragMove (details);
}
}
if (getCurrentlyOver() == nullptr && canDoExternalDrag && ! hasCheckedForExternalDrag)
{
if (Desktop::getInstance().findComponentAt (screenPos) == nullptr)
{
hasCheckedForExternalDrag = true;
StringArray files;
bool canMoveFiles = false;
if (owner->shouldDropFilesWhenDraggedExternally (details, files, canMoveFiles)
&& files.size() > 0)
{
WeakReference<Component> thisWeakRef (this);
setVisible (false);
if (ModifierKeys::getCurrentModifiersRealtime().isAnyMouseButtonDown())
DragAndDropContainer::performExternalDragDropOfFiles (files, canMoveFiles);
delete thisWeakRef.get();
return;
}
}
}
}
}