File: vm_assembler_pool.h

package info (click to toggle)
ruby-liquid-c 4.2.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 504 kB
  • sloc: ansic: 3,866; ruby: 1,151; makefile: 7
file content (26 lines) | stat: -rw-r--r-- 882 bytes parent folder | download
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
26
#ifndef LIQUID_VM_ASSEMBLER_POOL_H
#define LIQUID_VM_ASSEMBLER_POOL_H

#include "liquid.h"
#include "vm_assembler.h"

typedef struct vm_assembler_element {
    struct vm_assembler_element *next;
    vm_assembler_t vm_assembler;
} vm_assembler_element_t;

typedef struct vm_assembler_pool {
    VALUE self;
    vm_assembler_element_t *freelist;
} vm_assembler_pool_t;

extern const rb_data_type_t vm_assembler_pool_data_type;
#define VMAssemblerPool_Get_Struct(obj, sval) TypedData_Get_Struct(obj, vm_assembler_pool_t, &vm_assembler_pool_data_type, sval)

void liquid_define_vm_assembler_pool(void);
VALUE vm_assembler_pool_new(void);
vm_assembler_t *vm_assembler_pool_alloc_assembler(vm_assembler_pool_t *pool);
void vm_assembler_pool_free_assembler(vm_assembler_t *assembler);
void vm_assembler_pool_recycle_assembler(vm_assembler_pool_t *pool, vm_assembler_t *assembler);

#endif