[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: Re: A question of style for C module writers
- From: Philipp Janda <siffiejoe@...>
- Date: Sun, 7 Apr 2019 10:42:24 +0200
Am 07.04.19 um 09:00 schröbte Marc Balmer:
I have a question of style. It's about using constants in modules.
Let's say we have a fictious C library libfoo that defines a preprocessor symbol INFO with a value of e.g. 42.
Then I write a Lua module foo which exposes libfoo's functionality to Lua. Should INFO be an integer constant in foo or rather a string that is looked up using luaL_checkoption()?
foo.somefunc(foo.INFO, 'test data')
foo.somefunc('info', 'test data')
It's probably only a question of style or taste, but what is your opininion (or remarks) on this?
That depends on how INFO is used. If it is passed unmodified to
functions, I use string options. If it can be combined with other
constants using bitwise operations, I use full userdata with interning
for extra type safety. If you are supposed to pass an integer and INFO
is just one particular example of such an argument, I use integers. The
last one hasn't happened for me yet, I think.