On Sat, Dec 18, 2010 at 10:57:29AM +0100, Andreas wrote: [...] > The problem I see is that Wireshark doesn't have "The API". It is not > obvious which header files, and which declaration are public. When you > look at the libwireshark.def it seems that definitions have been added > or removed just as the needs appeared. [...]
Yes, that is probably the most fundamental issue. > I would propose to _define_ the Wireshark API. This will be a process > and I don't expect this to become available in a few days. One way to > identify *the Wireshark API* would be to identify this API in the header > files. > > With a central macro WIRESHARKAPI(or WSAPI This is a much better approach than my original idea of autogenerating the .def file. > // config.h > > #ifdef MSVC_VARIANT > // generating libwireshark.DLL > #ifdef _NEED_VAR_IMPORT > #define WIRESHARKAPI __declspec(dllimport) > #else > #define WIRESHARKAPI __declspec(dllexport) > #endif > #else > // not generating DLL > #define WIRESHARKAPI extern > #endif I'm not sure if extern is sufficient to mark the function for export if libtool is using -export-symbols. That may require some tweaking for non-Windows platforms. > you can define the API in the header files like this: > > // proto.h > > WIRESHARKAPI proto_tree* proto_tree_create_root(void); > > WIRESHARKAPI proto_item * > proto_tree_add_item(proto_tree *tree, const int hfindex, tvbuff_t *tvb, > const gint start, gint length, const guint encoding); Looks good to me. Maybe WSPUBLIC or WSEXPORT would be a clearer name, but that's a detail to be worked out. > The has some advantages > > - one central place to define how the functions become part of the API > in config.h > > - exactly one place of definition if a symbol is part of the API. > Currently you define the symbol in header and DEF file. > > - It is visible immediately if a declaration in the header files is part > if the API or not. Vital. I keep finding things in header files I want to use, then have to check the .def file to discover whether it's exported. > What do you think about it? I love it! Any objections, or can we get started on it? > Andy --Greg ___________________________________________________________________________ Sent via: Wireshark-dev mailing list <wireshark-dev@wireshark.org> Archives: http://www.wireshark.org/lists/wireshark-dev Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev mailto:wireshark-dev-requ...@wireshark.org?subject=unsubscribe