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.
git-svn-id: svn://10.0.0.236/trunk@23899 18797224-902f-48f8-a5cc-f745e15eee43
* one character fix (D'oh!) to make InterfaceTypeDescriptor indices update properly.
git-svn-id: svn://10.0.0.236/trunk@23605 18797224-902f-48f8-a5cc-f745e15eee43
* first annotation indicates that resulting typelib was created by the linker.
* annotations from files being linked in are now preserved.
git-svn-id: svn://10.0.0.236/trunk@23561 18797224-902f-48f8-a5cc-f745e15eee43
* xpt_dump now checks num_methods and num_constants before trying to walk the arrays.
* xpt_link now actually links. It even updates interfaces indices. Tested using all the idl files in mozilla/xpcom/idl.
git-svn-id: svn://10.0.0.236/trunk@23535 18797224-902f-48f8-a5cc-f745e15eee43
- 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.
git-svn-id: svn://10.0.0.236/trunk@23521 18797224-902f-48f8-a5cc-f745e15eee43
Added a comment saying preconditions the tests actually needs to
succeed. (also simplified these some.)
git-svn-id: svn://10.0.0.236/trunk@23515 18797224-902f-48f8-a5cc-f745e15eee43
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.
git-svn-id: svn://10.0.0.236/trunk@23499 18797224-902f-48f8-a5cc-f745e15eee43
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.
git-svn-id: svn://10.0.0.236/trunk@23485 18797224-902f-48f8-a5cc-f745e15eee43
* linker now sorts based on IIDs
* xpt_dump no longer complains about md->result if it is of the correct retval type
git-svn-id: svn://10.0.0.236/trunk@23202 18797224-902f-48f8-a5cc-f745e15eee43
* changing references to interfaces (within structs) to be indices rather than pointers
* updated xpt_dump and xpt_link code to reflect above change
git-svn-id: svn://10.0.0.236/trunk@23187 18797224-902f-48f8-a5cc-f745e15eee43
Changed from using malloc to (much less, but still slightly) hacked
nsIAllocator service.
git-svn-id: svn://10.0.0.236/trunk@22538 18797224-902f-48f8-a5cc-f745e15eee43
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.
git-svn-id: svn://10.0.0.236/trunk@22533 18797224-902f-48f8-a5cc-f745e15eee43
* first pass at typelib linker
* parent_interface modification is untested
* interface offset management is unimplemented
* what to do about annotations?
git-svn-id: svn://10.0.0.236/trunk@21921 18797224-902f-48f8-a5cc-f745e15eee43
* now close input file in all cases
* warn user about params with no in/out flag information
* more internal error checking
git-svn-id: svn://10.0.0.236/trunk@21207 18797224-902f-48f8-a5cc-f745e15eee43
* eliminated compiler warnings on Linux
* added extra error checking for file manipulation in SimpleTypeLib and xpt_dump
* removed erroneous comment from xpt_struct.h
git-svn-id: svn://10.0.0.236/trunk@20801 18797224-902f-48f8-a5cc-f745e15eee43
* changed type descriptor tag defines into one big enum
* made corresponding changes to xpt_dump
git-svn-id: svn://10.0.0.236/trunk@20264 18797224-902f-48f8-a5cc-f745e15eee43
* added function XPT_GetInterfaceIndexByName
* replaced remaining occurences of 'namespace' with 'name_space' to keep C++ happy
* added xpt_dump display for param types (in/out/retval)
* changed xpt_dump handling for wchar_t strings
* use shaver's print_IID function when displaying type descriptors
* removed DoAnnotations (not used)
git-svn-id: svn://10.0.0.236/trunk@20058 18797224-902f-48f8-a5cc-f745e15eee43
Removed unused XPT_ALLOC macro.
Move XPT_SetDataOffset calls into XPT_DoHeader so that the API consumer doesn't
need to know about header sizing and IDE layout guck.
Handle NULL namespaces and interface_directory bits snd idents better.
Made xpt_dump show the the IID for interfaces.
git-svn-id: svn://10.0.0.236/trunk@19992 18797224-902f-48f8-a5cc-f745e15eee43
* add command-line flag for verbose mode, which will soon not be the default
* now outputs to stdout
* added output for int64, uint64, and wchar
git-svn-id: svn://10.0.0.236/trunk@19615 18797224-902f-48f8-a5cc-f745e15eee43
Update to use 16-bit IDE indices (one-based) instead of header-pool offsets.
Removed debugging cruft.
Added prototypes to get rid of warnings.
Fix many dumb mistakes WRT allocation and index checking.
git-svn-id: svn://10.0.0.236/trunk@19582 18797224-902f-48f8-a5cc-f745e15eee43
* added directory libxpt/tools which currently only contains the typelib dumper
* removed dump code from tests dir
* added/modified appropriate Makefiles and configure scripts
git-svn-id: svn://10.0.0.236/trunk@19068 18797224-902f-48f8-a5cc-f745e15eee43
* committing fixes for shaver
* header pointer is now set XPT_DoHeader
* fixed assertion error in CHECK_COUNT macro
git-svn-id: svn://10.0.0.236/trunk@19065 18797224-902f-48f8-a5cc-f745e15eee43