- added a forward declaration of nsIInterfaceInfoManager to xptinfo.h
- reworked and cleaned up most aspects of the loader; typelib files now get associated typelib records, which have arrays of pointers to shared interface records; no hashtable lookup is necessary to resolve index pointers from params, etc to nsInterfaceInfo objects.
- moved to two hashtables in nsInterfaceInfoManager, mapping from name->interface record and iid->interface record. Still unclear if I handle the different-iid, same-name case correctly.
Removed awkward nsXPTParamInfo::GetInterface and friend, and als removed supporting nsXPTParamInfo.cpp file. Replace by nsIInterfaceInfo::GetInfoForParam and friend.
Made the constructor for nsInterfaceInfo private, with nsInterfaceInfoManager as a friend class.
- Added magic comments to make the LXR browsing experience more pleasant.
- introduced the nsInterfaceRecord class (formerly less formally interface_record).
- changed the XPTInterfaceDirectoryEntry pointer in InterfaceInfoes into nsInterfaceRecord pointers, removing the need for a hash just to go from entries to records to support nsXPTParamInfo::GetInterface.
- made the destructor for InterfaceInfo objects remove null the pointer in the corresponding reference.
API change - changed nsXPTParamInfo from taking an InterfaceDirectoryEntry* (which really isn't part of the API I want to expose) to taking an nsIInterfaceInfo*, which is.
Progress on the nsInterfaceInfoManager typelib loader for xpconnect.
Now has complete (I think) functionality, though the implementation is
still probably rusty.
I punted on defining a directory for .xpt files at this point; the
implementation looks at the value of the XPTDIR environment variable
for this value.
Note that the nsXPTParaminfo interface (public/xpt_cpp) has changed
(possibly temporarily) to take an 'entry' parameter.
Moved nsInterfaceInfoManager files from the libxpt directory (where
they would have precipitated an unpleasant circular dependency between
xpidl and nsISupports.h) into a new subdirectory.
Added corresponding entries to allmakefiles.sh.
nsInterfaceInfoManager is intended to abstract the loading and
management of typelib information generated by xpidl, for use by
xpconnect.