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