mirror of
				https://github.com/stedolan/jq.git
				synced 2024-05-11 05:55:39 +00:00 
			
		
		
		
	Most visible change is that error messages when a function is called with the wrong number of arguments are much better.
		
			
				
	
	
		
			42 lines
		
	
	
		
			640 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			640 B
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef OPCODE_H
 | |
| #define OPCODE_H
 | |
| #include <assert.h>
 | |
| 
 | |
| typedef enum {
 | |
| #define OP(name, imm, in, out) name,
 | |
| #include "opcode_list.h"
 | |
| #undef OP
 | |
| } opcode;
 | |
| 
 | |
| enum {
 | |
|   NUM_OPCODES = 
 | |
| #define OP(name, imm, in, out) +1
 | |
| #include "opcode_list.h"
 | |
| #undef OP
 | |
| };
 | |
| 
 | |
| enum {
 | |
|   OP_HAS_CONSTANT = 2,
 | |
|   OP_HAS_VARIABLE = 4,
 | |
|   OP_HAS_BRANCH = 8,
 | |
|   OP_HAS_CFUNC = 32,
 | |
|   OP_HAS_UFUNC = 64,
 | |
|   OP_IS_CALL_PSEUDO = 128,
 | |
|   OP_HAS_BINDING = 1024,
 | |
| };
 | |
| struct opcode_description {
 | |
|   opcode op;
 | |
|   const char* name;
 | |
| 
 | |
|   int flags;
 | |
| 
 | |
|   // length in 16-bit units
 | |
|   int length;
 | |
| 
 | |
|   int stack_in, stack_out;
 | |
| };
 | |
| 
 | |
| const struct opcode_description* opcode_describe(opcode op);
 | |
| 
 | |
| #endif
 |