mirror of https://github.com/sipwise/klish.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
133 lines
4.0 KiB
133 lines
4.0 KiB
/*
|
|
* ptype.h
|
|
*/
|
|
/**
|
|
\ingroup clish
|
|
\defgroup clish_ptype ptype
|
|
@{
|
|
|
|
\brief This class represents a parameter type.
|
|
|
|
Types are a syntatical template which parameters reference.
|
|
|
|
*/
|
|
|
|
#ifndef _clish_ptype_h
|
|
#define _clish_ptype_h
|
|
|
|
typedef struct clish_ptype_s clish_ptype_t;
|
|
|
|
#include "lub/types.h"
|
|
#include "lub/bintree.h"
|
|
#include "lub/argv.h"
|
|
|
|
#include <stddef.h>
|
|
|
|
/*=====================================
|
|
* PTYPE INTERFACE
|
|
*===================================== */
|
|
/*-----------------
|
|
* public types
|
|
*----------------- */
|
|
/**
|
|
* The means by which the pattern is interpreted and
|
|
* validated.
|
|
*/
|
|
typedef enum {
|
|
/**
|
|
* [default] - A POSIX regular expression.
|
|
*/
|
|
CLISH_PTYPE_REGEXP,
|
|
/**
|
|
* A numeric definition "min..max" signed and unsigned versions
|
|
*/
|
|
CLISH_PTYPE_INTEGER,
|
|
CLISH_PTYPE_UNSIGNEDINTEGER,
|
|
/**
|
|
* A list of possible values.
|
|
* The syntax of the string is of the form:
|
|
* "valueOne(ONE) valueTwo(TWO) valueThree(THREE)"
|
|
* where the text before the parethesis defines the syntax
|
|
* that the user must use, and the value within the parenthesis
|
|
* is the result expanded as a parameter value.
|
|
*/
|
|
CLISH_PTYPE_SELECT
|
|
} clish_ptype_method_e;
|
|
/**
|
|
* This defines the pre processing which is to be
|
|
* performed before a string is validated.
|
|
*/
|
|
typedef enum {
|
|
/**
|
|
* [default] - do nothing
|
|
*/
|
|
CLISH_PTYPE_NONE,
|
|
/**
|
|
* before validation convert to uppercase.
|
|
*/
|
|
CLISH_PTYPE_TOUPPER,
|
|
/**
|
|
* before validation convert to lowercase.
|
|
*/
|
|
CLISH_PTYPE_TOLOWER
|
|
} clish_ptype_preprocess_e;
|
|
|
|
/*-----------------
|
|
* meta functions
|
|
*----------------- */
|
|
int clish_ptype_bt_compare(const void *clientnode, const void *clientkey);
|
|
void clish_ptype_bt_getkey(const void *clientnode, lub_bintree_key_t * key);
|
|
size_t clish_ptype_bt_offset(void);
|
|
const char *clish_ptype_method__get_name(clish_ptype_method_e method);
|
|
clish_ptype_method_e clish_ptype_method_resolve(const char *method_name);
|
|
const char *clish_ptype_preprocess__get_name(clish_ptype_preprocess_e
|
|
preprocess);
|
|
clish_ptype_preprocess_e clish_ptype_preprocess_resolve(const char
|
|
*preprocess_name);
|
|
clish_ptype_t *clish_ptype_new(const char *name, const char *text,
|
|
const char *pattern, clish_ptype_method_e method,
|
|
clish_ptype_preprocess_e preprocess);
|
|
/*-----------------
|
|
* methods
|
|
*----------------- */
|
|
void clish_ptype_delete(clish_ptype_t * instance);
|
|
/**
|
|
* This is the validation method for the specified type.
|
|
* \return
|
|
* - NULL if the validation is negative.
|
|
* - A pointer to a string containing the validated text. NB. this
|
|
* may not be identical to that passed in. e.g. it may have been
|
|
* a case-modified "select" or a preprocessed value.
|
|
*/
|
|
char *clish_ptype_validate(const clish_ptype_t * instance, const char *text);
|
|
/**
|
|
* This is the translation method for the specified type. The text is
|
|
* first validated then translated into the form which should be used
|
|
* for variable substitutions in ACTION or VIEW_ID fields.
|
|
* \return
|
|
* - NULL if the validation is negative.
|
|
* - A pointer to a string containing the translated text. NB. this
|
|
* may not be identical to that passed in. e.g. it may have been
|
|
* a translated "select" value.
|
|
*/
|
|
char *clish_ptype_translate(const clish_ptype_t * instance, const char *text);
|
|
/**
|
|
* This is used to perform parameter auto-completion
|
|
*/
|
|
void clish_ptype_word_generator(clish_ptype_t * instance,
|
|
lub_argv_t *matches, const char *text);
|
|
void clish_ptype_dump(clish_ptype_t * instance);
|
|
/*-----------------
|
|
* attributes
|
|
*----------------- */
|
|
const char *clish_ptype__get_name(const clish_ptype_t * instance);
|
|
const char *clish_ptype__get_text(const clish_ptype_t * instance);
|
|
const char *clish_ptype__get_range(const clish_ptype_t * instance);
|
|
void clish_ptype__set_preprocess(clish_ptype_t * instance,
|
|
clish_ptype_preprocess_e preprocess);
|
|
void clish_ptype__set_pattern(clish_ptype_t * instance,
|
|
const char *pattern, clish_ptype_method_e method);
|
|
void clish_ptype__set_text(clish_ptype_t * instance, const char *text);
|
|
#endif /* _clish_ptype_h */
|
|
/** @} clish_ptype */
|