Gecko:DeCOMtamination Algorithm: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
| Line 14: | Line 14: | ||
#Update all uses of nsClass | #Update all uses of nsClass | ||
## nsComPtr<nsIClass> becomes nsRefPtr<nsClass> | ## nsComPtr<nsIClass> becomes nsRefPtr<nsClass> | ||
##* Since QueryInterface no longer exists, need to call AddRef on instantiation | |||
## nsCOMArray<nsIClass> becomes nsTArray<nsRefPtr<nsClass> > | ## nsCOMArray<nsIClass> becomes nsTArray<nsRefPtr<nsClass> > | ||
## Instatiate nsClass directly: | ## Instatiate nsClass directly: | ||
Revision as of 19:06, 21 November 2006
- Select a candidate for DeCOMtamination (using Olmar or Oink)
- Find all classes that inherit from ISupports
- Filter out classes scriptable via XPConnect. How to detect them?
- Order them by the number of descendants.
- Select one with the least descendants
- Collapse the XPCom interface nsIClass class and the child nsClass that implements it
- To avoid header pollution, find out what member variables are declared in nsClass that do not have headers for in the nsIClass and can not use a forward declaration.
- Rewrite them to form foo var to nsAutoPtr<foo> var. And add initializers for them to the constructor
- Update code that uses var. Eg var.member becomes var->member, var passed in an argument by value/const reference becomes *var.
- Place nsClass members into nsIClass removing virtual unless there are derivatives of nsClass
- Remove xpcom initializer like NS_NewClass(..)
- Remove nsIClass declaration
- Rename nsIClass to nsClass
- Update all uses of nsClass
- nsComPtr<nsIClass> becomes nsRefPtr<nsClass>
- Since QueryInterface no longer exists, need to call AddRef on instantiation
- nsCOMArray<nsIClass> becomes nsTArray<nsRefPtr<nsClass> >
- Instatiate nsClass directly:
- Change do_CreateInstance("@mozilla.org/...") to invoke the constructor directly : new nsClass();
- CallCreateInstance(kClassCID, &sClass) becomes sClass = new nsClass()
- nsresult rv = NS_NewClass(getter_AddRefs(var)) becomes var = new nsClass()
- nsComPtr<nsIClass> becomes nsRefPtr<nsClass>