On Jul 8, 2009, at 2:17 PM, Eugene Loh wrote:
> In https://svn.open-mpi.org/trac/ompi/wiki/CodingStyle , there is
> mention of "the prefix rule." What is this rule?
In components, you have to prefix all public symbols with
"<layer>_<framework>_<component>", where <layer> is one of "mca",
"ompi", "orte", or "opal" ("mca" used to be used, but it has fallen
out of favor; "ompi", "orte", and "opal" are a bit more common these
days -- but still the bulk of existing code probably uses "mca").
> Let me ask specifically this. If I look at
> , I see a declaration for "void btl_sm_add_pending". Should that
> have an "mca_" appended to the name?
Prepended. If it's a public symbol, yes. If it's not public, then it
can be named whatever you want.
> Don't worry about the
> particulars. I'm about to change this code. I'm just asking about
> principles. Because this function is callable from a file other than
> where it is defined, should the prefix be "mca_btl_sm_" or does
> "btl_sm_" suffice?
> Similarly, I see a btl_sm_pending_send_item_t type. Should that also
> have mca_ appended?
> Ouch, and this one: sm_fifo_t. (This one is my fault.) I assume it
> should be mca_btl_sm_fifo_t, yes?
Correct on all counts -- when in doubt, add the prefix. It never
hurts to add the prefix.
Most plaforms will obey the DECLSPEC stuff these days, so this is
mostly moot for non-DECLSPEC'ed symbols. But there probably are a
handful of platforms/compilers out there that make symbols public even
though we don't DECLSPEC them. That being said, I haven't checked in
a while to know what the status is in this regard (e.g., if only
ancient compilers don't obey DECLSPEC, etc.).
> P.S. Shouldn't the "prefix rule" be explained in the "coding style"
> twiki page?
Why? Then we'd be *clear*...
I'd volunteer to add something, but I'm heading out on vacation
tomorrow afternoon, and have a bagillion things to finish before then
-- would you mind adding something?