Back to index

lightning-sunbird  0.9+nobinonly
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Friends
nsSVGStringProxyValue Class Reference
Inheritance diagram for nsSVGStringProxyValue:
Inheritance graph
[legend]
Collaboration diagram for nsSVGStringProxyValue:
Collaboration graph
[legend]

List of all members.

Public Types

enum  modificationType { mod_other = 0, mod_context, mod_die }

Public Member Functions

NS_DECL_ISUPPORTS NS_IMETHOD SetValueString (const nsAString &aValue)
NS_IMETHOD GetValueString (nsAString &aValue)
NS_IMETHOD WillModifySVGObservable (nsISVGValue *observable, modificationType aModType)
NS_IMETHOD DidModifySVGObservable (nsISVGValue *observable, modificationType aModType)
NS_IMETHOD AddObserver (nsISVGValueObserver *observer)
NS_IMETHOD RemoveObserver (nsISVGValueObserver *observer)
NS_IMETHOD BeginBatchUpdate ()
NS_IMETHOD EndBatchUpdate ()
typedef NS_STDCALL_FUNCPROTO (nsresult, SVGObserverNotifyFunction, nsISVGValueObserver, DidModifySVGObservable,(nsISVGValue *, nsISVGValue::modificationType))

Protected Member Functions

 nsSVGStringProxyValue ()
virtual ~nsSVGStringProxyValue ()
PRBool Init (nsISVGValue *proxiedValue)
void WillModify (modificationType aModType=mod_other)
void DidModify (modificationType aModType=mod_other)
void ReleaseObservers ()
void NotifyObservers (SVGObserverNotifyFunction f, modificationType aModType)
PRInt32 GetModifyNestCount ()

Protected Attributes

nsString mCachedValue
nsCOMPtr< nsISVGValuemProxiedValue
PRBool mUseCachedValue

Friends

nsresult NS_CreateSVGStringProxyValue (nsISVGValue *proxiedValue, nsISVGValue **aResult)
class nsSVGValueAutoNotifier

Detailed Description

Definition at line 59 of file nsSVGStringProxyValue.cpp.


Member Enumeration Documentation

Enumerator:
mod_other 
mod_context 
mod_die 

Definition at line 68 of file nsISVGValue.h.


Constructor & Destructor Documentation

Definition at line 113 of file nsSVGStringProxyValue.cpp.

{
#ifdef DEBUG
  printf("nsSVGStringProxyValue CTOR\n");
#endif
}

Definition at line 120 of file nsSVGStringProxyValue.cpp.

{
  mProxiedValue->RemoveObserver(this);
#ifdef DEBUG
  printf("nsSVGStringProxyValue DTOR\n");
#endif
}

Member Function Documentation

NS_IMETHODIMP nsSVGValue::AddObserver ( nsISVGValueObserver observer) [virtual, inherited]

Implements nsISVGValue.

Definition at line 97 of file nsSVGValue.cpp.

{
  nsIWeakReference* wr = NS_GetWeakReference(observer);
  if (!wr) return NS_ERROR_FAILURE;
  mObservers.AppendElement((void*)wr);
  return NS_OK;
}

Here is the call graph for this function:

Here is the caller graph for this function:

NS_IMETHODIMP nsSVGValue::BeginBatchUpdate ( ) [virtual, inherited]

Implements nsISVGValue.

Definition at line 119 of file nsSVGValue.cpp.

{
  WillModify();
  return NS_OK;
}

Here is the call graph for this function:

void nsSVGValue::DidModify ( modificationType  aModType = mod_other) [protected, inherited]

Definition at line 86 of file nsSVGValue.cpp.

{
  NS_ASSERTION(mModifyNestCount>0, "unbalanced Will/DidModify calls");
  if (--mModifyNestCount == 0) {
    OnDidModify();
    NotifyObservers(&nsISVGValueObserver::DidModifySVGObservable, aModType);
  }
}

Here is the call graph for this function:

Implements nsISVGValueObserver.

Definition at line 191 of file nsSVGStringProxyValue.cpp.

{
  // Our internal proxied object has set its state internally.
  // Make sure its new value takes priority over our cached string:
  mUseCachedValue = PR_FALSE;
  
  DidModify(aModType);
  return NS_OK;
}

Here is the call graph for this function:

NS_IMETHODIMP nsSVGValue::EndBatchUpdate ( ) [virtual, inherited]

Implements nsISVGValue.

Definition at line 126 of file nsSVGValue.cpp.

{
  DidModify();
  return NS_OK;
}

Here is the call graph for this function:

PRInt32 nsSVGValue::GetModifyNestCount ( ) [inline, protected, inherited]

Definition at line 79 of file nsSVGValue.h.

{ return mModifyNestCount; }
NS_IMETHODIMP nsSVGStringProxyValue::GetValueString ( nsAString &  aValue) [virtual]

Implements nsISVGValue.

Definition at line 169 of file nsSVGStringProxyValue.cpp.

{
  if (!mUseCachedValue)
    return mProxiedValue->GetValueString(aValue);

  aValue = mCachedValue;
  return NS_OK;
}
PRBool nsSVGStringProxyValue::Init ( nsISVGValue proxiedValue) [protected]

Definition at line 128 of file nsSVGStringProxyValue.cpp.

{
  mProxiedValue = proxiedValue;
  mProxiedValue->AddObserver(this);
  return PR_TRUE;
}  

Here is the caller graph for this function:

void nsSVGValue::NotifyObservers ( SVGObserverNotifyFunction  f,
modificationType  aModType 
) [protected, inherited]

Definition at line 66 of file nsSVGValue.cpp.

{
  PRInt32 count = mObservers.Count();
  for (PRInt32 i = 0; i < count; ++i) {
    nsIWeakReference* wr = NS_STATIC_CAST(nsIWeakReference*,mObservers.ElementAt(i));
    nsCOMPtr<nsISVGValueObserver> observer = do_QueryReferent(wr);
    if (observer)
       (NS_STATIC_CAST(nsISVGValueObserver*,observer)->*f)(this, aModType);
  }
}

Here is the call graph for this function:

Here is the caller graph for this function:

typedef nsSVGValue::NS_STDCALL_FUNCPROTO ( nsresult  ,
SVGObserverNotifyFunction  ,
nsISVGValueObserver  ,
DidModifySVGObservable  ,
(nsISVGValue *, nsISVGValue::modificationType  
) [inherited]
void nsSVGValue::ReleaseObservers ( ) [protected, inherited]

Definition at line 53 of file nsSVGValue.cpp.

{
  PRInt32 count = mObservers.Count();
  PRInt32 i;
  for (i = 0; i < count; ++i) {
    nsIWeakReference* wr = NS_STATIC_CAST(nsIWeakReference*,mObservers.ElementAt(i));
    NS_RELEASE(wr);
  }
  while (i)
    mObservers.RemoveElementAt(--i);
}

Here is the caller graph for this function:

NS_IMETHODIMP nsSVGValue::RemoveObserver ( nsISVGValueObserver observer) [virtual, inherited]

Implements nsISVGValue.

Definition at line 106 of file nsSVGValue.cpp.

{
  nsCOMPtr<nsIWeakReference> wr = do_GetWeakReference(observer);
  if (!wr) return NS_ERROR_FAILURE;
  PRInt32 i = mObservers.IndexOf((void*)wr);
  if (i<0) return NS_ERROR_FAILURE;
  nsIWeakReference* wr2 = NS_STATIC_CAST(nsIWeakReference*,mObservers.ElementAt(i));
  NS_RELEASE(wr2);
  mObservers.RemoveElementAt(i);
  return NS_OK;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Implements nsISVGValue.

Definition at line 152 of file nsSVGStringProxyValue.cpp.

{
#ifdef DEBUG
  printf("nsSVGStringProxyValue(%p)::SetValueString(%s)\n", this, NS_ConvertUCS2toUTF8(aValue).get());
#endif
  if (NS_FAILED(mProxiedValue->SetValueString(aValue))) {
#ifdef DEBUG
    printf("  -> call failed, now using cached value\n");
#endif
    mUseCachedValue = PR_TRUE; // mUseCachedValue will be reset in DidModifySVGObservable, 
                               // should the inner object ever change state internally
    mCachedValue = aValue;
  }
  return NS_OK;
}
void nsSVGValue::WillModify ( modificationType  aModType = mod_other) [protected, inherited]

Definition at line 79 of file nsSVGValue.cpp.

Here is the call graph for this function:

Implements nsISVGValueObserver.

Definition at line 183 of file nsSVGStringProxyValue.cpp.

{
  WillModify(aModType);
  return NS_OK;
}

Here is the call graph for this function:


Friends And Related Function Documentation

nsresult NS_CreateSVGStringProxyValue ( nsISVGValue proxiedValue,
nsISVGValue **  aResult 
) [friend]

Definition at line 96 of file nsSVGStringProxyValue.cpp.

{
  *aResult = nsnull;
  
  nsSVGStringProxyValue *sp = new nsSVGStringProxyValue();
  if(!sp) return NS_ERROR_OUT_OF_MEMORY;
  NS_ADDREF(sp);
  if (!sp->Init(proxiedValue)) {
    NS_RELEASE(sp);
    return NS_ERROR_FAILURE;
  }
  
  *aResult = sp;
  return NS_OK;
}
friend class nsSVGValueAutoNotifier [friend, inherited]

Definition at line 59 of file nsSVGValue.h.


Member Data Documentation

Definition at line 88 of file nsSVGStringProxyValue.cpp.

Definition at line 89 of file nsSVGStringProxyValue.cpp.

Definition at line 90 of file nsSVGStringProxyValue.cpp.


The documentation for this class was generated from the following file: