overloading
display, functions and operators overloading capabilities
Description
In scilab, variable display, functions and operators may be defined for new objects using functions (scilab coded or primitives).
- Display
The display of new objects defined by
tliststructure may be overloaded (the default display is similar tolist's one). The overloading function must have no output argument a single input argument. It's name is formed as follow%<tlist_type>_pwhere%<tlist_type>stands for the first entry of thetlisttype component truncated to the first 9 characters.- Operators
Each operator which is not defined for given operands type may be defined. The overloading function must have a single output argument and one or two inputs according to the number of operands. The function name is formed as follow:
for binary operators:
%<first_operand_type>_<op_code>_<second_operand_type>
for unary operators:
%<operand_type>_<op_code>
extraction and insertion operators which are n-nary operators are described below.
Be careful, only the types registered by
the typename function can be used in an
overloading macros
<operand_type>,
<first_operand_type>,
<second_operand_type> are sequence of characters
associated with each data type as described in the following table:
| data type | char code | typeof | comments |
| double matrix | s |
constant |
|
| polynomial matrix | p |
polynomial |
|
| boolean matrix | b |
boolean |
|
| sparse matrix | sp |
sparse |
|
| boolean sparse matrix | spb |
boolean sparse |
|
| Matlab sparse matrix | msp |
Matlab sparse |
|
| integer matrix | i |
int8, int16,int32, uint8, uint16, uint32 |
|
| string matrix | c |
string |
|
| handle | h |
handle |
|
| compiled function | fptr |
fptr |
|
| script function | mc |
function |
|
| library | l |
library |
|
| list | l |
list |
|
| tlist | tlist type |
tlist type |
the first string in the first tlist entry |
| mlist | mlist type |
mlist type |
the first string in the first mlist entry |
| hypermatrix | hm |
hypermat |
|
| pointer | ptr |
pointer |
|
| cell | ce |
ce |
|
| structure | st |
st |
|
| rational | r |
rational |
|
| linear state space | lss |
state-space |
|
| implicit polynom | ip |
size implicit |
1:$ |
<op_code> is a single character associated
with each operator as described in the following table:
| op | char code | op | char code |
' |
t | + | a |
| - | s | * | m |
/ |
r | \ | l |
^ |
p | .* | x |
| ./ | d | .\ | q |
| .*. | k | ./. | y |
.\. |
z | : | b |
| *. | u | /. | v |
\. |
w | [a,b] | c |
| [a;b] | f | () extraction | e |
| () insertion | i | == | o |
| <> | n | | | g |
| & | h | .^ |
j |
| ~ | 5 | .' | 0 |
| < | 1 | > | 2 |
| <= | 3 | >= | 4 |
| iext | 6 |
The overloading function for extraction syntax
b=a(i1,...,in) has the following calling sequence:
b=%<type_of_a>_e_(i1,...,in,a)
and the syntax [x1,..,xm]=a(i1,...,in) has the
following calling sequence:
[x1,..,xm]=%<type_of_a>_e_(i1,...,in,a)
The overloading function associated to the insertion syntax
a(i1,...,in)=b has the following calling sequence:
a=%<type_of_b>_i_<type_of_a>(i1,...,in,b,a).
The 6 char code may be used for some complex
insertion algorithm like x.b(2)=33 where
b field is not defined in the structure
x. The insertion is automatically decomposed into
temp=x.b; temp(2)=33;
x.b=temp. The 6 char code is used
for the first step of this algorithm. The 6 overloading
function is very similar to the e's one.
- Functions :
Some basic primitive function
may also be overloaded for new data type. When such a function is undefined for a particular data types the function
%<type_of_an_argument>_<function_name>is called. User may add in this called function the definition associated with the input data types.
Examples
See Also
Comments
Add a comment:
Please login to comment this page.
| << Overloading | Overloading | Functions >> |