File: liquid_vm.h

package info (click to toggle)
ruby-liquid-c 4.2.0-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 544 kB
  • sloc: ansic: 3,866; ruby: 1,135; makefile: 7
file content (25 lines) | stat: -rw-r--r-- 663 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#ifndef VM_H
#define VM_H

#include <ruby.h>
#include "block.h"
#include "vm_assembler.h"
#include "context.h"

typedef struct vm {
    c_buffer_t stack;
    bool invoking_filter;
    context_t context;
} vm_t;

void liquid_define_vm(void);
vm_t *vm_from_context(VALUE context);
void liquid_vm_render(block_body_header_t *block, const VALUE *const_ptr, VALUE context, VALUE output);
void liquid_vm_next_instruction(const uint8_t **ip_ptr);
bool liquid_vm_filtering(VALUE context);
VALUE liquid_vm_evaluate(VALUE context, vm_assembler_t *code);

vm_t *vm_from_context(VALUE context);
VALUE vm_translate_if_filter_argument_error(vm_t *vm, VALUE exception);

#endif