Exemple #1
0
        // Copy of FSharedReferencer& operator=( FSharedReferencer const& InSharedReference )
        // - Assignment operator adds a reference to the assigned object.  If this counter was previously
        //   referencing an object, that reference will be released.
        public void CopyFrom(FText other)
        {
            if (other == null || other.nativeAddress == IntPtr.Zero)
            {
                return;
            }

            IntPtr oldReferenceController = nativeAddress == IntPtr.Zero ? IntPtr.Zero : nativeInstance->TextData.ReferenceController;
            IntPtr newReferenceController = other.nativeInstance->TextData.ReferenceController;

            // Make sure we're not be reassigned to ourself!
            if (newReferenceController != oldReferenceController)
            {
                // First, add a shared reference to the new object
                if (newReferenceController != IntPtr.Zero)
                {
                    Native_FReferenceControllerOps.AddSharedReference(newReferenceController, espMode);
                }

                // Release shared reference to the old object
                if (oldReferenceController != IntPtr.Zero)
                {
                    Native_FReferenceControllerOps.ReleaseSharedReference(oldReferenceController, espMode);
                }

                // Assume ownership of the assigned reference counter
                *nativeInstance = *other.nativeInstance;
            }
        }
Exemple #2
0
 /// <summary>
 /// Releases a weak reference to the counter
 /// </summary>
 public void ReleaseWeakReference(ESPMode mode)
 {
     Native_FReferenceControllerOps.ReleaseWeakReference(ReferenceController, mode);
 }
Exemple #3
0
 /// <summary>
 /// Adds a shared reference to the counter ONLY if there is already at least one reference
 /// </summary>
 /// <param name="mode"></param>
 public void ConditionallyAddSharedReference(ESPMode mode)
 {
     Native_FReferenceControllerOps.ConditionallyAddSharedReference(ReferenceController, mode);
 }
Exemple #4
0
 /// <summary>
 /// Adds a weak reference to the counter
 /// </summary>
 public void AddWeakReference(ESPMode mode)
 {
     Native_FReferenceControllerOps.AddWeakReference(ReferenceController, mode);
 }
Exemple #5
0
        public IntPtr ReferenceController;// Could be called either SharedReferenceCount or ReferenceController (the actual pointer)

        /// <summary>
        /// Returns the number of shared references to this object (including this reference.)
        /// IMPORTANT: Not necessarily fast!  Should only be used for debugging purposes!
        /// </summary>
        /// <returns></returns>
        public int GetSharedReferenceCount(ESPMode mode)
        {
            return(Native_FReferenceControllerOps.GetSharedReferenceCount(ReferenceController, mode));
        }