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