From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp53.i.mail.ru (smtp53.i.mail.ru [94.100.177.113]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 04C63469719 for ; Wed, 30 Sep 2020 02:20:39 +0300 (MSK) References: <96922008cb146eaa04cb727472eda3e71f2e7bc8.1600955781.git.tsafin@tarantool.org> <185c95b5-edc6-10d0-50c0-ba7c086fc97a@tarantool.org> <20200929050900.4xzupgi24zvddgfo@tkn_work_nb> From: Vladislav Shpilevoy Message-ID: <2373999e-86e4-66db-3d3f-349b2fcc2795@tarantool.org> Date: Wed, 30 Sep 2020 01:20:37 +0200 MIME-Version: 1.0 In-Reply-To: <20200929050900.4xzupgi24zvddgfo@tkn_work_nb> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Subject: Re: [Tarantool-patches] [PATCH 2.X 4/7] module api: luaL_register_module & luaL_register_type List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Alexander Turenko Cc: tarantool-patches@dev.tarantool.org On 29.09.2020 07:09, Alexander Turenko wrote: >>> diff --git a/src/lua/utils.h b/src/lua/utils.h >>> index 7639cd64a..9b1fe7e57 100644 >>> --- a/src/lua/utils.h >>> +++ b/src/lua/utils.h >>> @@ -78,6 +78,8 @@ luaL_pushuuid(struct lua_State *L); >>> >>> /** \cond public */ >>> >>> +struct luaL_Reg; >> >> 1. It does not seem to be public. How are users supposed to work with that? >> Igor, could you please take a look at this? >> >> If you need it so badly, at least we need a wrapper around luaL_Reg >> or we need to expose it and document too. Probably Igor has better ideas. > > It is exposed from lauxlib.h, no need to duplicate in the module API. Thanks, didn't know it is public. Ok, then no question here. >>> + >>> /** >>> * @brief Checks whether a value on the Lua stack is a cdata. >>> * >>> @@ -442,6 +444,8 @@ luaL_checkfield(struct lua_State *L, struct luaL_serializer *cfg, int idx, >>> luaL_convertfield(L, cfg, idx, field); >>> } >>> >>> +/** \cond public */ >>> + >>> void >>> luaL_register_type(struct lua_State *L, const char *type_name, >>> const struct luaL_Reg *methods); >> >> 2. These newly exported methods don't have a single comment. Why? > > luaL_register_*() are our helpers around luaL_register(), AFAIR. A > module should use the latter. In that case I don't see why do we need to export them. luaL_register_module() is a wrapper around luaL_register() to support multilevel modules like 'box.space', 'net.box', etc. With '.' in them, AFAIS. And a few error checks. It is not bad to have a bit excessive but commonly used or perf critical things in module.h, but there is a certain border of what is "commonly used" and "perf critical". Module registration does not seem to me fitting any of these categories (subjectively). So if it can be done without any new exports, I would stick to that.