include/ruby/vm.h File Reference

Go to the source code of this file.

Defines

#define RUBY_VM_H   1

Typedefs

typedef struct rb_vm_struct ruby_vm_t

Functions

int ruby_vm_destruct (ruby_vm_t *vm)
void ruby_vm_at_exit (void(*func)(ruby_vm_t *))
 ruby_vm_at_exit registers a function _func_ to be invoked when a VM passed away.

Define Documentation

#define RUBY_VM_H   1

Definition at line 13 of file vm.h.


Typedef Documentation

typedef struct rb_vm_struct ruby_vm_t

Definition at line 34 of file vm.h.


Function Documentation

void ruby_vm_at_exit ( void(*)(ruby_vm_t *)  func  ) 

ruby_vm_at_exit registers a function _func_ to be invoked when a VM passed away.

Functions registered this way runs in reverse order of registration, just like END {} block does. The difference is its timing to be triggered. ruby_vm_at_exit functions runs when a VM _passed_ _away_, while END {} blocks runs just _before_ a VM _is_ _passing_ _away_.

You cannot register a function to another VM than where you are in. So where to register is intuitive, omitted. OTOH the argument _func_ cannot know which VM it is in because at the time of invocation, the VM has already died and there is no execution context. The VM itself is passed as the first argument to it.

Parameters:
[in] func the function to register.

Definition at line 205 of file vm.c.

References at_exit, func, GET_VM, and rb_ary_push().

int ruby_vm_destruct ( ruby_vm_t vm  ) 

Generated on 27 Nov 2014 for Ruby by  doxygen 1.6.1