mirror of
https://github.com/matrix-construct/construct
synced 2024-10-03 22:28:52 +02:00
ircd::js: Return undefined for args::operator[]; bounds check on args::at().
This commit is contained in:
parent
a44e6f701f
commit
90f81bb871
1 changed files with 8 additions and 0 deletions
|
@ -32,6 +32,7 @@ struct args
|
||||||
size_t size() const { return length(); }
|
size_t size() const { return length(); }
|
||||||
bool has(const size_t &at) const { return size() > at; }
|
bool has(const size_t &at) const { return size() > at; }
|
||||||
|
|
||||||
|
value at(const size_t &at) const;
|
||||||
value operator[](const size_t &at) const;
|
value operator[](const size_t &at) const;
|
||||||
|
|
||||||
args(const unsigned &argc, JS::Value *const &argv);
|
args(const unsigned &argc, JS::Value *const &argv);
|
||||||
|
@ -47,6 +48,13 @@ args::args(const unsigned &argc,
|
||||||
inline value
|
inline value
|
||||||
args::operator[](const size_t &at)
|
args::operator[](const size_t &at)
|
||||||
const
|
const
|
||||||
|
{
|
||||||
|
return length() > at? JS::CallArgs::operator[](at) : value{};
|
||||||
|
}
|
||||||
|
|
||||||
|
inline value
|
||||||
|
args::at(const size_t &at)
|
||||||
|
const
|
||||||
{
|
{
|
||||||
if(unlikely(length() <= at))
|
if(unlikely(length() <= at))
|
||||||
throw range_error("Missing required argument #%zu", at);
|
throw range_error("Missing required argument #%zu", at);
|
||||||
|
|
Loading…
Reference in a new issue