struct command_t {
char *name;
int argc;
zmp_command cb;
} commands = {
/* subwindow package; version 1 */
{ "subwindow.open", 4, subwindow_open },
{ "subwindow.select", 1, subwindow_select },
…
/* subwindow package; version 2 */
{ "subwindow2.open", 5, subwindow2_open },
{ "subwindow2.select", 1, subwindow_select },
…
{ 0, 0, 0 }
};
local subwindow = ZMP_Package{
_name = 'subwindow',
open = function(args)
…
end,
select = function(args)
…
end,
…
})
local subwindow2 = ZMP_Package{
_name = 'subwindow2',
_inherit = subwindow,
open = function(args)
…
end
});
elanthis' specs of the protocol and official subpackages are set in stone. It's important to keep in mind that the protocol is designed to allow arbitrary packages so mud servers or clients can have support some form of unique functionality and these mud server specific packages probably WILL change.
So just because my client has complete support for the org.foomud. package today doesn't mean that tomorrow the head coder at foomud doesn't add another command or two.