The Croc Programming Language
Parameter checking

Functions

void croc_ex_checkAnyParam (CrocThread *t, word_t index)
 
int croc_ex_checkBoolParam (CrocThread *t, word_t index)
 
crocint_t croc_ex_checkIntParam (CrocThread *t, word_t index)
 
crocfloat_t croc_ex_checkFloatParam (CrocThread *t, word_t index)
 
crocfloat_t croc_ex_checkNumParam (CrocThread *t, word_t index)
 
const char * croc_ex_checkStringParam (CrocThread *t, word_t index)
 
const char * croc_ex_checkStringParamn (CrocThread *t, word_t index, uword_t *len)
 
crocchar_t croc_ex_checkCharParam (CrocThread *t, word_t index)
 
void croc_ex_checkInstParam (CrocThread *t, word_t index, const char *name)
 
void croc_ex_checkInstParamSlot (CrocThread *t, word_t index, word_t classIndex)
 
void croc_ex_checkParam (CrocThread *t, word_t index, CrocType type)
 
uword_t croc_ex_checkIndexParam (CrocThread *t, word_t index, uword_t length, const char *name)
 
uword_t croc_ex_checkLoSliceParam (CrocThread *t, word_t index, uword_t length, const char *name)
 
uword_t croc_ex_checkHiSliceParam (CrocThread *t, word_t index, uword_t length, const char *name)
 
uword_t croc_ex_checkSliceParams (CrocThread *t, word_t index, uword_t length, const char *name, uword_t *hi)
 
int croc_ex_optBoolParam (CrocThread *t, word_t index, int def)
 
crocint_t croc_ex_optIntParam (CrocThread *t, word_t index, crocint_t def)
 
crocfloat_t croc_ex_optFloatParam (CrocThread *t, word_t index, crocfloat_t def)
 
crocfloat_t croc_ex_optNumParam (CrocThread *t, word_t index, crocfloat_t def)
 
const char * croc_ex_optStringParam (CrocThread *t, word_t index, const char *def)
 
const char * croc_ex_optStringParamn (CrocThread *t, word_t index, const char *def, uword_t *len)
 
crocchar_t croc_ex_optCharParam (CrocThread *t, word_t index, crocchar_t def)
 
int croc_ex_optParam (CrocThread *t, word_t index, CrocType type)
 
uword_t croc_ex_optIndexParam (CrocThread *t, word_t index, uword_t length, const char *name, crocint_t def)
 
word_t croc_ex_paramTypeError (CrocThread *t, word_t index, const char *expected)
 
void croc_ex_checkValidSlice (CrocThread *t, crocint_t lo, crocint_t hi, uword_t length, const char *name)
 
word_t croc_ex_indexError (CrocThread *t, crocint_t index, uword_t length, const char *name)
 
word_t croc_ex_sliceIndexError (CrocThread *t, crocint_t lo, crocint_t hi, uword_t length, const char *name)
 

Detailed Description

Checking parameters in native functions.

Function Documentation

void croc_ex_checkAnyParam ( CrocThread t,
word_t  index 
)

Checks that a parameter of any type has been passed at the given index, and if not, throws a ParamError saying that at least index parameters were expected.

int croc_ex_checkBoolParam ( CrocThread t,
word_t  index 
)

Checks that parameter index is a bool, and returns its value.

crocint_t croc_ex_checkIntParam ( CrocThread t,
word_t  index 
)

Checks that parameter index is an int, and returns its value.

crocfloat_t croc_ex_checkFloatParam ( CrocThread t,
word_t  index 
)

Checks that parameter index is a float, and returns its value.

crocfloat_t croc_ex_checkNumParam ( CrocThread t,
word_t  index 
)

Checks that parameter index is an int or float, and returns the value (cast to a float if needed).

const char* croc_ex_checkStringParam ( CrocThread t,
word_t  index 
)

Checks that parameter index is a string, and returns the value.

The same warnings that apply to croc_getString apply here.

const char* croc_ex_checkStringParamn ( CrocThread t,
word_t  index,
uword_t len 
)

Checks that parameter index is a string, and returns the value, as well as returning the byte length of the string through the len parameter.

The same warnings that apply to croc_getString apply here.

crocchar_t croc_ex_checkCharParam ( CrocThread t,
word_t  index 
)

Checks that parameter index is a one-codepoint string, and returns the codepoint.

void croc_ex_checkInstParam ( CrocThread t,
word_t  index,
const char *  name 
)

Checks that parameter index is an instance of the class name (which is looked up with croc_ex_lookup).

void croc_ex_checkInstParamSlot ( CrocThread t,
word_t  index,
word_t  classIndex 
)

Same as croc_ex_checkInstParam, but checks that parameter index is an instance of the class in slot classIndex.

void croc_ex_checkParam ( CrocThread t,
word_t  index,
CrocType  type 
)

Checks that parameter index is of type type, and if not, throws an exception.

uword_t croc_ex_checkIndexParam ( CrocThread t,
word_t  index,
uword_t  length,
const char *  name 
)

Checks that parameter index is an integer that is suitable to be used as an index into a list-like object of length .

The parameter can be negative to mean from the end of the object, in which case it will automatically have length added to it before being returned.

Parameters
nameis a descriptive name of the object which will be passed to croc_ex_indexError if this function fails.
Returns
the value, which will always be >= 0.
uword_t croc_ex_checkLoSliceParam ( CrocThread t,
word_t  index,
uword_t  length,
const char *  name 
)

Checks that parameter index is an optional integer that is suitable to be used as a slice index into a list-like object of length .

If no parameter was passed for index, returns 0 (as the default behavior for a null low slice is to slice from the beginning of the list). This differs from croc_ex_checkIndexParam in one important regard: slice indices can be equal to length, whereas normal indices cannot.

Parameters
nameis a descriptive name of the object which will be passed to croc_ex_indexError if this function fails.
Returns
the value, which will always be >= 0.
uword_t croc_ex_checkHiSliceParam ( CrocThread t,
word_t  index,
uword_t  length,
const char *  name 
)

Same as croc_ex_checkLoSliceParam, except defaults to returning length if null was passed for parameter index.

uword_t croc_ex_checkSliceParams ( CrocThread t,
word_t  index,
uword_t  length,
const char *  name,
uword_t hi 
)

Combines checking for low and high slice parameters into one function.

The parameters at index and index + 1 are checked as low and high slice indices into a list-like object of length length;

Parameters
[out]hiwill receive the high slice index value.
Returns
the low slice index value.
int croc_ex_optBoolParam ( CrocThread t,
word_t  index,
int  def 
)

If there was a bool passed for parameter index, returns its value; otherwise, returns def.

crocint_t croc_ex_optIntParam ( CrocThread t,
word_t  index,
crocint_t  def 
)

If there was an int passed for parameter index, returns its value; otherwise, returns def.

crocfloat_t croc_ex_optFloatParam ( CrocThread t,
word_t  index,
crocfloat_t  def 
)

If there was a float passed for parameter index, returns its value; otherwise, returns def.

crocfloat_t croc_ex_optNumParam ( CrocThread t,
word_t  index,
crocfloat_t  def 
)

If there was a number passed for parameter index, returns its value; otherwise, returns def.

const char* croc_ex_optStringParam ( CrocThread t,
word_t  index,
const char *  def 
)

If there was a string passed for parameter index, returns its value; otherwise, returns def.

const char* croc_ex_optStringParamn ( CrocThread t,
word_t  index,
const char *  def,
uword_t len 
)

Same as croc_ex_optStringParam, but returns the length of the string (or of def) through the len parameter.

crocchar_t croc_ex_optCharParam ( CrocThread t,
word_t  index,
crocchar_t  def 
)

If there was a one-codepoint string passed for parameter index, returns that codepoint; otherwise, returns def.

int croc_ex_optParam ( CrocThread t,
word_t  index,
CrocType  type 
)
Returns
nonzero if a value of type type was passed for parameter index, or 0 if null was passed or no parameter was passed.
uword_t croc_ex_optIndexParam ( CrocThread t,
word_t  index,
uword_t  length,
const char *  name,
crocint_t  def 
)

If there was an int passed for parameter index, checks that it's a valid index like croc_ex_checkIndexParam; otherwise, returns def.

word_t croc_ex_paramTypeError ( CrocThread t,
word_t  index,
const char *  expected 
)

Throws a TypeError exception with a nice message about the expected type for the parameter index, and what type was actually passed instead, like "Expected type 'int' for parameter 2, not 'string'".

If index is 0, the message will say 'this' instead of 'parameter n'.

Returns
a dummy value like croc_ex_throw.
void croc_ex_checkValidSlice ( CrocThread t,
crocint_t  lo,
crocint_t  hi,
uword_t  length,
const char *  name 
)

Given positive slice indices lo and hi, sees if they define a valid slice within a list-like object of length length.

Calls croc_ex_sliceIndexError if not.

Parameters
nameis the descriptive name as listed in croc_ex_sliceIndexError.
word_t croc_ex_indexError ( CrocThread t,
crocint_t  index,
uword_t  length,
const char *  name 
)

Throws a BoundsError exception with a nice message about index being an invalid index in a list-like object of length length, where name is a descriptive name of the object.

For example, the message might be "Invalid Vector index 6 (length: 4)".

Returns
a dummy value like croc_ex_throw.
word_t croc_ex_sliceIndexError ( CrocThread t,
crocint_t  lo,
crocint_t  hi,
uword_t  length,
const char *  name 
)

Throws a BoundsError exception with a nice message about lo and hi being invalid slice indices in a list-like object of length length, where name is a descriptive name of the object.

For example, the message might be "Invalid Vector slice indices: 2 .. 5 (length: 4)".

Returns
a dummy value like croc_ex_throw.