xref: /nrf52832-nimble/rt-thread/components/finsh/finsh_node.h (revision 104654410c56c573564690304ae786df310c91fc)
1*10465441SEvalZero /*
2*10465441SEvalZero  * Copyright (c) 2006-2018, RT-Thread Development Team
3*10465441SEvalZero  *
4*10465441SEvalZero  * SPDX-License-Identifier: Apache-2.0
5*10465441SEvalZero  *
6*10465441SEvalZero  * Change Logs:
7*10465441SEvalZero  * Date           Author       Notes
8*10465441SEvalZero  * 2010-03-22     Bernard      first version
9*10465441SEvalZero  */
10*10465441SEvalZero #ifndef __FINSH_NODE_H__
11*10465441SEvalZero #define __FINSH_NODE_H__
12*10465441SEvalZero 
13*10465441SEvalZero #include <finsh.h>
14*10465441SEvalZero 
15*10465441SEvalZero #define FINSH_NODE_UNKNOWN          0
16*10465441SEvalZero #define FINSH_NODE_ID               1
17*10465441SEvalZero 
18*10465441SEvalZero #define FINSH_NODE_VALUE_CHAR       2
19*10465441SEvalZero #define FINSH_NODE_VALUE_INT        3
20*10465441SEvalZero #define FINSH_NODE_VALUE_LONG       4
21*10465441SEvalZero #define FINSH_NODE_VALUE_STRING     5
22*10465441SEvalZero #define FINSH_NODE_VALUE_NULL       6
23*10465441SEvalZero 
24*10465441SEvalZero #define FINSH_NODE_SYS_ADD          7
25*10465441SEvalZero #define FINSH_NODE_SYS_SUB          8
26*10465441SEvalZero #define FINSH_NODE_SYS_MUL          9
27*10465441SEvalZero #define FINSH_NODE_SYS_DIV          10
28*10465441SEvalZero #define FINSH_NODE_SYS_MOD          11
29*10465441SEvalZero #define FINSH_NODE_SYS_AND          12
30*10465441SEvalZero #define FINSH_NODE_SYS_OR           13
31*10465441SEvalZero #define FINSH_NODE_SYS_XOR          14
32*10465441SEvalZero #define FINSH_NODE_SYS_BITWISE      15
33*10465441SEvalZero #define FINSH_NODE_SYS_SHL          16
34*10465441SEvalZero #define FINSH_NODE_SYS_SHR          17
35*10465441SEvalZero #define FINSH_NODE_SYS_FUNC         18
36*10465441SEvalZero #define FINSH_NODE_SYS_ASSIGN       19
37*10465441SEvalZero #define FINSH_NODE_SYS_CAST         20
38*10465441SEvalZero #define FINSH_NODE_SYS_PREINC       21
39*10465441SEvalZero #define FINSH_NODE_SYS_PREDEC       22
40*10465441SEvalZero #define FINSH_NODE_SYS_INC          23
41*10465441SEvalZero #define FINSH_NODE_SYS_DEC          24
42*10465441SEvalZero #define FINSH_NODE_SYS_GETVALUE    25
43*10465441SEvalZero #define FINSH_NODE_SYS_GETADDR     26
44*10465441SEvalZero #define FINSH_NODE_SYS_NULL         27
45*10465441SEvalZero 
46*10465441SEvalZero #define FINSH_DATA_TYPE_VOID        0x00
47*10465441SEvalZero #define FINSH_DATA_TYPE_BYTE        0x01
48*10465441SEvalZero #define FINSH_DATA_TYPE_WORD        0x02
49*10465441SEvalZero #define FINSH_DATA_TYPE_DWORD       0x03
50*10465441SEvalZero #define FINSH_DATA_TYPE_PTR         0x10
51*10465441SEvalZero 
52*10465441SEvalZero #define FINSH_NODE_VALUE            0
53*10465441SEvalZero #define FINSH_NODE_ADDRESS          1
54*10465441SEvalZero #define FINSH_NODE_FUNCTION         2
55*10465441SEvalZero 
56*10465441SEvalZero int finsh_node_init(void);
57*10465441SEvalZero 
58*10465441SEvalZero struct finsh_node* finsh_node_allocate(uint8_t type);
59*10465441SEvalZero struct finsh_node* finsh_node_new_id(char* id);
60*10465441SEvalZero struct finsh_node* finsh_node_new_char(char c);
61*10465441SEvalZero struct finsh_node* finsh_node_new_int(int i);
62*10465441SEvalZero struct finsh_node* finsh_node_new_long(long l);
63*10465441SEvalZero struct finsh_node* finsh_node_new_string(char* s);
64*10465441SEvalZero struct finsh_node* finsh_node_new_ptr(void* ptr);
65*10465441SEvalZero 
66*10465441SEvalZero #define finsh_node_sibling(node)    ((node)->sibling)
67*10465441SEvalZero #define finsh_node_child(node)      ((node)->child)
68*10465441SEvalZero 
69*10465441SEvalZero #endif
70