Merge pull request #2959 from sagmor/api-documentation

C API documentation
This commit is contained in:
Yukihiro "Matz" Matsumoto
2015-09-22 04:14:31 +09:00
21 changed files with 615 additions and 150 deletions
-11
View File
@@ -100,15 +100,4 @@
# define TRUE 1
#endif
#if defined(MRB_BUILD_AS_DLL)
#if defined(MRB_CORE) || defined(MRB_LIB)
#define MRB_API __declspec(dllexport)
#else
#define MRB_API __declspec(dllimport)
#endif
#else
#define MRB_API extern
#endif
#endif /* MRUBYCONF_H */
+239 -35
View File
@@ -28,24 +28,42 @@
#ifndef MRUBY_H
#define MRUBY_H
#if defined(__cplusplus)
extern "C" {
#endif
#include <stdint.h>
#include <stddef.h>
#include <limits.h>
#include "mrbconf.h"
#include "mruby/common.h"
#include "mruby/value.h"
#include "mruby/version.h"
/**
* @file mruby.h
* @defgroup mruby MRuby C API
* @{
*/
MRB_BEGIN_DECL
typedef uint32_t mrb_code;
/**
* Required arguments signature type.
*/
typedef uint32_t mrb_aspec;
struct mrb_irep;
struct mrb_state;
/**
* Function pointer type of custom allocator used in @ref mrb_open_allocf.
*
* The function pointing it must behave similarly as realloc except:
* - If ptr is NULL it must allocate new space.
* - If s is NULL, ptr must be freed.
*
* See @ref mrb_default_allocf for the default implementation.
*/
typedef void* (*mrb_allocf) (struct mrb_state *mrb, void*, size_t, void *ud);
#ifndef MRB_GC_ARENA_SIZE
@@ -188,35 +206,90 @@ typedef struct mrb_state {
mrb_int atexit_stack_len;
} mrb_state;
#if __STDC_VERSION__ >= 201112L
# define mrb_noreturn _Noreturn
#elif defined __GNUC__ && !defined __STRICT_ANSI__
# define mrb_noreturn __attribute__((noreturn))
# define mrb_deprecated __attribute__((deprecated))
#elif defined _MSC_VER
# define mrb_noreturn __declspec(noreturn)
# define mrb_deprecated __declspec(deprecated)
#else
# define mrb_noreturn
# define mrb_deprecated
#endif
typedef mrb_value (*mrb_func_t)(mrb_state *mrb, mrb_value);
MRB_API struct RClass *mrb_define_class(mrb_state *, const char*, struct RClass*);
/**
* Defines a new class.
*
* If you're creating a gem it may look something like this:
* <pre>
* void mrb_example_gem_init(mrb_state* mrb) {
* struct RClass *example_class;
* example_class = mrb_define_class(mrb, "Example_Class", mrb->object_class);
* }
*
* void mrb_example_gem_final(mrb_state* mrb) {
* //free(TheAnimals);
* }
* </pre>
*
* @param name The name of the defined class
* @param super The new class parent
*/
MRB_API struct RClass *mrb_define_class(mrb_state *mrb, const char *name, struct RClass *super);
MRB_API struct RClass *mrb_define_module(mrb_state *, const char*);
MRB_API mrb_value mrb_singleton_class(mrb_state*, mrb_value);
MRB_API void mrb_include_module(mrb_state*, struct RClass*, struct RClass*);
MRB_API void mrb_prepend_module(mrb_state*, struct RClass*, struct RClass*);
MRB_API void mrb_define_method(mrb_state*, struct RClass*, const char*, mrb_func_t, mrb_aspec);
/**
* Defines a global function in ruby.
*
* If you're creating a gem it may look something like this:
*
* mrb_value example_method(mrb_state* mrb, mrb_value self)
* {
* puts("Executing example command!");
* return self;
* }
*
* void mrb_example_gem_init(mrb_state* mrb)
* {
* mrb_define_method(mrb, mrb->kernel_module, "example_method", example_method, MRB_ARGS_NONE());
* }
*
* @param mrb
* The MRuby state reference.
* @param cla
* The class pointer where the method will be defined.
* @param func
* The function pointer to the method definition.
* @param aspec
* The method parameters declaration.
* See @ref mruby_mrb_aspec for details.
*/
MRB_API void mrb_define_method(mrb_state *mrb, struct RClass *cla, const char *name, mrb_func_t func, mrb_aspec aspec);
MRB_API void mrb_define_class_method(mrb_state *, struct RClass *, const char *, mrb_func_t, mrb_aspec);
MRB_API void mrb_define_singleton_method(mrb_state*, struct RObject*, const char*, mrb_func_t, mrb_aspec);
MRB_API void mrb_define_module_function(mrb_state*, struct RClass*, const char*, mrb_func_t, mrb_aspec);
MRB_API void mrb_define_const(mrb_state*, struct RClass*, const char *name, mrb_value);
MRB_API void mrb_undef_method(mrb_state*, struct RClass*, const char*);
MRB_API void mrb_undef_class_method(mrb_state*, struct RClass*, const char*);
/**
* Initialize a new object instace of c class.
*
* @param mrb
* The current mruby state.
* @param c
* Reference to the class of the new object.
* @param argc
* Number of arguments in argv
* @param argv
* Array of @ref mrb_value "mrb_values" to initialize the object
* @returns
* The newly initialized object
*/
MRB_API mrb_value mrb_obj_new(mrb_state *mrb, struct RClass *c, mrb_int argc, const mrb_value *argv);
#define mrb_class_new_instance(mrb,argc,argv,c) mrb_obj_new(mrb,c,argc,argv)
/** See @ref mrb_obj_new */
MRB_INLINE mrb_value mrb_class_new_instance(mrb_state *mrb, struct RClass *c, mrb_int argc, const mrb_value *argv)
{
return mrb_obj_new(mrb,c,argc,argv);
}
MRB_API mrb_value mrb_instance_new(mrb_state *mrb, mrb_value cv);
MRB_API struct RClass * mrb_class_new(mrb_state *mrb, struct RClass *super);
MRB_API struct RClass * mrb_module_new(mrb_state *mrb);
@@ -233,28 +306,110 @@ MRB_API mrb_bool mrb_obj_respond_to(mrb_state *mrb, struct RClass* c, mrb_sym mi
MRB_API struct RClass * mrb_define_class_under(mrb_state *mrb, struct RClass *outer, const char *name, struct RClass *super);
MRB_API struct RClass * mrb_define_module_under(mrb_state *mrb, struct RClass *outer, const char *name);
/* required arguments */
/**
* @defgroup mruby_mrb_aspec Required arguments declaration helpers.
*
* Helper functions to declare arguments requirements on methods declared by
* \ref mrb_define_method and the like
*
* @{
*/
/**
* Function requires n arguments.
*
* @param n
* The number of required arguments.
*/
#define MRB_ARGS_REQ(n) ((mrb_aspec)((n)&0x1f) << 18)
/* optional arguments */
/**
* Funtion takes n optional arguments
*
* @param n
* The number of optional arguments.
*/
#define MRB_ARGS_OPT(n) ((mrb_aspec)((n)&0x1f) << 13)
/* mandatory and optinal arguments */
/**
* Funtion takes n1 mandatory arguments and n2 optional arguments
*
* @param n1
* The number of required arguments.
* @param n2
* The number of optional arguments.
*/
#define MRB_ARGS_ARG(n1,n2) (MRB_ARGS_REQ(n1)|MRB_ARGS_OPT(n2))
/* rest argument */
/** rest argument */
#define MRB_ARGS_REST() ((mrb_aspec)(1 << 12))
/* required arguments after rest */
/** required arguments after rest */
#define MRB_ARGS_POST(n) ((mrb_aspec)((n)&0x1f) << 7)
/* keyword arguments (n of keys, kdict) */
/** keyword arguments (n of keys, kdict) */
#define MRB_ARGS_KEY(n1,n2) ((mrb_aspec)((((n1)&0x1f) << 2) | ((n2)?(1<<1):0)))
/* block argument */
/**
* Function takes a block argument
*/
#define MRB_ARGS_BLOCK() ((mrb_aspec)1)
/* accept any number of arguments */
/**
* Function accepts any number of arguments
*/
#define MRB_ARGS_ANY() MRB_ARGS_REST()
/* accept no arguments */
/**
* Function accepts no arguments
*/
#define MRB_ARGS_NONE() ((mrb_aspec)0)
MRB_API mrb_int mrb_get_args(mrb_state *mrb, const char *format, ...);
/** @} */
/**
* Format specifiers for \ref mrb_get_args function
*
* Must be a list of following format specifiers:
*
* | char | mruby type | retrieve types |note |
* |:----:|----------------|---------------------|----------------------------------------------------|
* | o | Object | mrb_value | Could be used to retrieve any type of argument |
* | C | Class/Module | mrb_value | |
* | S | String | mrb_value | when ! follows, the value may be nil |
* | A | Array | mrb_value | when ! follows, the value may be nil |
* | H | Hash | mrb_value | when ! follows, the value may be nil |
* | s | String | char *, mrb_int | Receive two arguments; s! gives (NULL,0) for nil |
* | z | String | char * | NUL terminated string; z! gives NULL for nil |
* | a | Array | mrb_value *, mrb_int | Receive two arguments; a! gives (NULL,0) for nil |
* | f | Float | mrb_float | |
* | i | Integer | mrb_int | |
* | b | boolean | mrb_bool | |
* | n | Symbol | mrb_sym | |
* | & | block | mrb_value | |
* | * | rest arguments | mrb_value *, mrb_int | Receive the rest of arguments as an array. |
* | \| | optional | | After this spec following specs would be optional. |
* | ? | optional given | mrb_bool | True if preceding argument is given. Used to check optional argument is given. |
*/
typedef const char *mrb_args_format;
/**
* Retrieve arguments from mrb_state.
*
* When applicable, implicit conversions (such as to_str, to_ary, to_hash) are
* applied to received arguments.
* Use it inside a function pointed by mrb_func_t.
*
* @param mrb
* The current MRuby state.
* @param format
* is a list of format specifiers see @ref mrb_args_format
* @param ...
* The passing variadic arguments must be a pointer of retrieving type.
* @return
* the number of arguments retrieved.
*/
MRB_API mrb_int mrb_get_args(mrb_state *mrb, mrb_args_format format, ...);
/* `strlen` for character string literals (use with caution or `strlen` instead)
Adjacent string literals are concatenated in C/C++ in translation phase 6.
@@ -264,6 +419,9 @@ MRB_API mrb_int mrb_get_args(mrb_state *mrb, const char *format, ...);
*/
#define mrb_strlen_lit(lit) (sizeof(lit "") - 1)
/**
* Call existing ruby functions.
*/
MRB_API mrb_value mrb_funcall(mrb_state*, mrb_value, const char*, mrb_int,...);
MRB_API mrb_value mrb_funcall_argv(mrb_state*, mrb_value, mrb_sym, mrb_int, const mrb_value*);
MRB_API mrb_value mrb_funcall_with_block(mrb_state*, mrb_value, mrb_sym, mrb_int, const mrb_value*, mrb_value);
@@ -288,6 +446,10 @@ MRB_API struct RBasic *mrb_obj_alloc(mrb_state*, enum mrb_vtype, struct RClass*)
MRB_API void mrb_free(mrb_state*, void*);
MRB_API mrb_value mrb_str_new(mrb_state *mrb, const char *p, size_t len);
/**
* Turns a C string into a Ruby string value.
*/
MRB_API mrb_value mrb_str_new_cstr(mrb_state*, const char*);
MRB_API mrb_value mrb_str_new_static(mrb_state *mrb, const char *p, size_t len);
#define mrb_str_new_lit(mrb, lit) mrb_str_new_static(mrb, (lit), mrb_strlen_lit(lit))
@@ -304,11 +466,54 @@ char* mrb_locale_from_utf8(const char *p, size_t len);
#define mrb_utf8_free(p)
#endif
/**
* Creates new mrb_state.
*
* @returns
* Pointer to the newly created mrb_state.
*/
MRB_API mrb_state* mrb_open(void);
MRB_API mrb_state* mrb_open_allocf(mrb_allocf, void *ud);
MRB_API mrb_state* mrb_open_core(mrb_allocf, void *ud);
MRB_API void mrb_close(mrb_state*);
/**
* Create new mrb_state with custom allocators.
*
* @param f
* Reference to the allocation function.
* @param ud
* User data will be passed to custom allocator f.
* If user data isn't required just pass NULL.
* @returns
* Pointer to the newly created mrb_state.
*/
MRB_API mrb_state* mrb_open_allocf(mrb_allocf f, void *ud);
/**
* Create new mrb_state with just the MRuby core
*
* @param f
* Reference to the allocation function.
* Use mrb_default_allocf for the default
* @param ud
* User data will be passed to custom allocator f.
* If user data isn't required just pass NULL.
* @returns
* Pointer to the newly created mrb_state.
*/
MRB_API mrb_state* mrb_open_core(mrb_allocf f, void *ud);
/**
* Closes and frees a mrb_state.
*
* @param mrb
* Pointer to the mrb_state to be closed.
*/
MRB_API void mrb_close(mrb_state *mrb);
/**
* The default allocation function.
*
* @ref mrb_allocf
*/
MRB_API void* mrb_default_allocf(mrb_state*, void*, size_t, void*);
MRB_API mrb_value mrb_top_self(mrb_state *);
@@ -471,8 +676,7 @@ MRB_API void mrb_show_copyright(mrb_state *mrb);
MRB_API mrb_value mrb_format(mrb_state *mrb, const char *format, ...);
#if defined(__cplusplus)
} /* extern "C" { */
#endif
/** @} */
MRB_END_DECL
#endif /* MRUBY_H */
+91 -7
View File
@@ -7,9 +7,16 @@
#ifndef MRUBY_ARRAY_H
#define MRUBY_ARRAY_H
#if defined(__cplusplus)
extern "C" {
#endif
#include "mruby/common.h"
/**
* @file mruby/array.h
* @defgroup mruby_array Array class
* @ingroup mruby
* @{
*/
MRB_BEGIN_DECL
typedef struct mrb_shared_array {
int refcnt;
@@ -41,15 +48,93 @@ struct RArray {
void mrb_ary_decref(mrb_state*, mrb_shared_array*);
MRB_API void mrb_ary_modify(mrb_state*, struct RArray*);
MRB_API mrb_value mrb_ary_new_capa(mrb_state*, mrb_int);
/**
* Initializes a new array.
*
* Equivalent to:
*
* Array.new
*
* @param mrb
* The MRuby state reference.
* @returns
* The initialized array
*/
MRB_API mrb_value mrb_ary_new(mrb_state *mrb);
MRB_API mrb_value mrb_ary_new_from_values(mrb_state *mrb, mrb_int size, const mrb_value *vals);
MRB_API mrb_value mrb_assoc_new(mrb_state *mrb, mrb_value car, mrb_value cdr);
MRB_API void mrb_ary_concat(mrb_state*, mrb_value, mrb_value);
MRB_API mrb_value mrb_ary_splat(mrb_state*, mrb_value);
MRB_API void mrb_ary_push(mrb_state*, mrb_value, mrb_value);
/**
* Pushes value into array.
*
* Equivalent to:
*
* ary << value
*
* @param mrb
* The MRuby state reference.
* @param ary
* The array in which the value will be pushed
* @param value
* The value to be pushed into array
*/
MRB_API void mrb_ary_push(mrb_state *mrb, mrb_value array, mrb_value value);
/**
* Pops the last element from the array.
*
* Equivalent to:
*
* ary.pop
*
* @param mrb
* The MRuby state reference.
* @param ary
* The array from which the value will be poped.
* @returns
* The poped value.
*/
MRB_API mrb_value mrb_ary_pop(mrb_state *mrb, mrb_value ary);
/**
* Returns a reference to an element of the array on the given index.
*
* Equivalent to:
*
* ary[n]
*
* @param mrb
* The MRuby state reference.
* @param ary
* The target array.
* @param n
* The array index being referenced
* @returns
* The referenced value.
*/
MRB_API mrb_value mrb_ary_ref(mrb_state *mrb, mrb_value ary, mrb_int n);
/**
* Sets a value on an array at the given index
*
* Equivalent to:
*
* ary[n] = val
*
* @param mrb
* The MRuby state reference.
* @param ary
* The target array.
* @param n
* The array index being referenced.
* @param val
* The value being setted.
*/
MRB_API void mrb_ary_set(mrb_state *mrb, mrb_value ary, mrb_int n, mrb_value val);
MRB_API void mrb_ary_replace(mrb_state *mrb, mrb_value a, mrb_value b);
MRB_API mrb_value mrb_check_array_type(mrb_state *mrb, mrb_value self);
MRB_API mrb_value mrb_ary_unshift(mrb_state *mrb, mrb_value self, mrb_value item);
@@ -67,8 +152,7 @@ mrb_ary_len(mrb_state *mrb, mrb_value ary)
return RARRAY_LEN(ary);
}
#if defined(__cplusplus)
} /* extern "C" { */
#endif
/** @} */
MRB_END_DECL
#endif /* MRUBY_ARRAY_H */
+11 -6
View File
@@ -7,9 +7,15 @@
#ifndef MRUBY_CLASS_H
#define MRUBY_CLASS_H
#if defined(__cplusplus)
extern "C" {
#endif
#include "mruby/common.h"
/**
* @file mruby/class.h
* @defgroup mruby_class Class class
* @ingroup mruby
* @{
*/
MRB_BEGIN_DECL
struct RClass {
MRB_OBJECT_HEADER;
@@ -81,8 +87,7 @@ void mrb_gc_mark_mt(mrb_state*, struct RClass*);
size_t mrb_gc_mark_mt_size(mrb_state*, struct RClass*);
void mrb_gc_free_mt(mrb_state*, struct RClass*);
#if defined(__cplusplus)
} /* extern "C" { */
#endif
/** @} */
MRB_END_DECL
#endif /* MRUBY_CLASS_H */
+68
View File
@@ -0,0 +1,68 @@
/*
** mruby/common.h - mruby common platform definitions
**
** See Copyright Notice in mruby.h
*/
#ifndef MRUBY_COMMON_H
#define MRUBY_COMMON_H
/**
* @file mruby/common.h
* @defgroup mruby_common Shared compiler macros
* @ingroup mruby
* @{
*/
#ifdef __cplusplus
# define MRB_BEGIN_DECL extern "C" {
# define MRB_END_DECL }
#else
/** Start declarations in C mode */
# define MRB_BEGIN_DECL
/** End declarations in C mode */
# define MRB_END_DECL
#endif
/** Declare a function that never returns. */
#if __STDC_VERSION__ >= 201112L
# define mrb_noreturn _Noreturn
#elif defined __GNUC__ && !defined __STRICT_ANSI__
# define mrb_noreturn __attribute__((noreturn))
#elif defined _MSC_VER
# define mrb_noreturn __declspec(noreturn)
#else
# define mrb_noreturn
#endif
/** Mark a function as deprecated. */
#if defined __GNUC__ && !defined __STRICT_ANSI__
# define mrb_deprecated __attribute__((deprecated))
#elif defined _MSC_VER
# define mrb_deprecated __declspec(deprecated)
#else
# define mrb_deprecated
#endif
/** Declare a function as always inlined. */
#if defined(_MSC_VER)
# define MRB_INLINE static __inline
#else
# define MRB_INLINE static inline
#endif
/** Declare a public MRuby API function. */
#if defined(MRB_BUILD_AS_DLL)
#if defined(MRB_CORE) || defined(MRB_LIB)
# define MRB_API __declspec(dllexport)
#else
# define MRB_API __declspec(dllimport)
#endif
#else
# define MRB_API extern
#endif
/** @} */
#endif /* MRUBY_COMMON_H */
+11 -6
View File
@@ -7,9 +7,15 @@
#ifndef MRUBY_COMPILE_H
#define MRUBY_COMPILE_H
#if defined(__cplusplus)
extern "C" {
#endif
#include "mruby/common.h"
/**
* @file mruby/compile.h
* @defgroup mruby_compile Compiler
* @ingroup mruby
* @{
*/
MRB_BEGIN_DECL
#include "mruby.h"
@@ -183,8 +189,7 @@ MRB_API mrb_value mrb_load_file_cxt(mrb_state*,FILE*, mrbc_context *cxt);
MRB_API mrb_value mrb_load_string_cxt(mrb_state *mrb, const char *s, mrbc_context *cxt);
MRB_API mrb_value mrb_load_nstring_cxt(mrb_state *mrb, const char *s, int len, mrbc_context *cxt);
#if defined(__cplusplus)
} /* extern "C" { */
#endif
/** @} */
MRB_END_DECL
#endif /* MRUBY_COMPILE_H */
+20 -6
View File
@@ -7,12 +7,27 @@
#ifndef MRUBY_DATA_H
#define MRUBY_DATA_H
#if defined(__cplusplus)
extern "C" {
#endif
#include "mruby/common.h"
/**
* @file mruby/data.h
* @defgroup mruby_data Custom C wrapped data.
*
* Defining Ruby wrappers around native objects.
*
* @ingroup mruby
* @{
*/
MRB_BEGIN_DECL
/**
* Custom data type description.
*/
typedef struct mrb_data_type {
/** data type name */
const char *struct_name;
/** data type release function pointer */
void (*dfree)(mrb_state *mrb, void*);
} mrb_data_type;
@@ -59,8 +74,7 @@ mrb_data_init(mrb_value v, void *ptr, const mrb_data_type *type)
DATA_TYPE(v) = type;
}
#if defined(__cplusplus)
} /* extern "C" { */
#endif
/** @} */
MRB_END_DECL
#endif /* MRUBY_DATA_H */
+11 -6
View File
@@ -7,9 +7,15 @@
#ifndef MRUBY_DEBUG_H
#define MRUBY_DEBUG_H
#if defined(__cplusplus)
extern "C" {
#endif
#include "mruby/common.h"
/**
* @file mruby/debug.h
* @defgroup mruby_debug Debugging.
* @ingroup mruby
* @{
*/
MRB_BEGIN_DECL
typedef enum mrb_debug_line_type {
mrb_debug_line_ary = 0,
@@ -58,8 +64,7 @@ MRB_API mrb_irep_debug_info_file *mrb_debug_info_append_file(
MRB_API mrb_irep_debug_info *mrb_debug_info_alloc(mrb_state *mrb, mrb_irep *irep);
MRB_API void mrb_debug_info_free(mrb_state *mrb, mrb_irep_debug_info *d);
#if defined(__cplusplus)
} /* extern "C" { */
#endif
/** @} */
MRB_END_DECL
#endif /* MRUBY_DEBUG_H */
+12 -8
View File
@@ -7,12 +7,17 @@
#ifndef MRUBY_DUMP_H
#define MRUBY_DUMP_H
#if defined(__cplusplus)
extern "C" {
#endif
#include "mruby.h"
#include "mruby/irep.h"
#include "mruby/common.h"
/**
* @file mruby/dump.h
* @defgroup mruby_dump Dumping compiled mruby script.
* @ingroup mruby
* @{
*/
MRB_BEGIN_DECL
#define DUMP_DEBUG_INFO 1
#define DUMP_ENDIAN_BIG 2
@@ -185,11 +190,10 @@ bin_to_uint8(const uint8_t *bin)
return (uint8_t)bin[0];
}
#if defined(__cplusplus)
} /* extern "C" { */
#endif
/** @} */
MRB_END_DECL
/* crc.c */
/** @internal crc.c */
uint16_t
calc_crc_16_ccitt(const uint8_t *src, size_t nbytes, uint16_t crc);
+11 -6
View File
@@ -7,9 +7,15 @@
#ifndef MRUBY_ERROR_H
#define MRUBY_ERROR_H
#if defined(__cplusplus)
extern "C" {
#endif
#include "mruby/common.h"
/**
* @file mruby/error.h
* @defgroup mruby_error Error handling.
* @ingroup mruby
* @{
*/
MRB_BEGIN_DECL
struct RException {
MRB_OBJECT_HEADER;
@@ -39,8 +45,7 @@ MRB_API mrb_value mrb_rescue_exceptions(mrb_state *mrb, mrb_func_t body, mrb_val
mrb_func_t rescue, mrb_value r_data,
mrb_int len, struct RClass **classes);
#if defined(__cplusplus)
} /* extern "C" { */
#endif
/** @} */
MRB_END_DECL
#endif /* MRUBY_ERROR_H */
+11 -6
View File
@@ -7,16 +7,21 @@
#ifndef MRUBY_GC_H
#define MRUBY_GC_H
#if defined(__cplusplus)
extern "C" {
#endif
#include "mruby/common.h"
/**
* @file mruby/gc.h
* @defgroup mruby_gc Uncommon memory management stuffs.
* @ingroup mruby
* @{
*/
MRB_BEGIN_DECL
typedef void (mrb_each_object_callback)(mrb_state *mrb, struct RBasic *obj, void *data);
void mrb_objspace_each_objects(mrb_state *mrb, mrb_each_object_callback *callback, void *data);
MRB_API void mrb_free_context(mrb_state *mrb, struct mrb_context *c);
#if defined(__cplusplus)
} /* extern "C" { */
#endif
/** @} */
MRB_END_DECL
#endif /* MRUBY_GC_H */
+11 -6
View File
@@ -7,9 +7,15 @@
#ifndef MRUBY_HASH_H
#define MRUBY_HASH_H
#if defined(__cplusplus)
extern "C" {
#endif
#include "mruby/common.h"
/**
* @file mruby/hash.h
* @defgroup mruby_hash Hash class
* @ingroup mruby
* @{
*/
MRB_BEGIN_DECL
struct RHash {
MRB_OBJECT_HEADER;
@@ -47,8 +53,7 @@ void mrb_gc_mark_hash(mrb_state*, struct RHash*);
size_t mrb_gc_mark_hash_size(mrb_state*, struct RHash*);
void mrb_gc_free_hash(mrb_state*, struct RHash*);
#if defined(__cplusplus)
} /* extern "C" { */
#endif
/** @} */
MRB_END_DECL
#endif /* MRUBY_HASH_H */
+11 -7
View File
@@ -7,12 +7,17 @@
#ifndef MRUBY_IREP_H
#define MRUBY_IREP_H
#if defined(__cplusplus)
extern "C" {
#endif
#include "mruby/common.h"
#include "mruby/compile.h"
/**
* @file mruby/irep.h
* @defgroup mruby_irep Compiled mruby scripts.
* @ingroup mruby
* @{
*/
MRB_BEGIN_DECL
enum irep_pool_type {
IREP_TT_STRING,
IREP_TT_FIXNUM,
@@ -53,8 +58,7 @@ void mrb_irep_free(mrb_state*, struct mrb_irep*);
void mrb_irep_incref(mrb_state*, struct mrb_irep*);
void mrb_irep_decref(mrb_state*, struct mrb_irep*);
#if defined(__cplusplus)
} /* extern "C" { */
#endif
/** @} */
MRB_END_DECL
#endif /* MRUBY_IREP_H */
+12 -7
View File
@@ -7,12 +7,18 @@
#ifndef MRUBY_KHASH_H
#define MRUBY_KHASH_H
#if defined(__cplusplus)
extern "C" {
#endif
#include <string.h>
#include "mruby.h"
#include <string.h>
#include "mruby/common.h"
/**
* @file mruby/khash.h
* @defgroup mruby_khash khash definitions used in mruby's hash table.
* @ingroup mruby
* @{
*/
MRB_BEGIN_DECL
typedef uint32_t khint_t;
typedef khint_t khiter_t;
@@ -266,8 +272,7 @@ static inline khint_t __ac_X31_hash_string(const char *s)
typedef const char *kh_cstr_t;
#if defined(__cplusplus)
} /* extern "C" { */
#endif
/** @} */
MRB_END_DECL
#endif /* MRUBY_KHASH_H */
+14 -6
View File
@@ -7,9 +7,18 @@
#ifndef MRUBY_NUMERIC_H
#define MRUBY_NUMERIC_H
#if defined(__cplusplus)
extern "C" {
#endif
#include "mruby/common.h"
/**
* @file mruby/numeric.h
* @defgroup mruby_numeric Numeric class and it's sub-classes.
*
* Numeric, Integer, Float, Fixnum classes
*
* @ingroup mruby
* @{
*/
MRB_BEGIN_DECL
#define POSFIXABLE(f) ((f) <= MRB_INT_MAX)
#define NEGFIXABLE(f) ((f) >= MRB_INT_MIN)
@@ -104,8 +113,7 @@ mrb_int_sub_overflow(mrb_int minuend, mrb_int subtrahend, mrb_int *difference)
#undef MRB_UINT_MAKE
#undef MRB_UINT_MAKE2
#if defined(__cplusplus)
} /* extern "C" { */
#endif
/** @} */
MRB_END_DECL
#endif /* MRUBY_NUMERIC_H */
+10 -6
View File
@@ -7,11 +7,16 @@
#ifndef MRUBY_PROC_H
#define MRUBY_PROC_H
#include "mruby/common.h"
#include "mruby/irep.h"
#if defined(__cplusplus)
extern "C" {
#endif
/**
* @file mruby/proc.h
* @defgroup mruby_proc Proc class
* @ingroup mruby
* @{
*/
MRB_BEGIN_DECL
struct REnv {
MRB_OBJECT_HEADER;
@@ -69,8 +74,7 @@ MRB_API mrb_value mrb_proc_cfunc_env_get(mrb_state*, mrb_int);
#include "mruby/khash.h"
KHASH_DECLARE(mt, mrb_sym, struct RProc*, TRUE)
#if defined(__cplusplus)
} /* extern "C" { */
#endif
/** @} */
MRB_END_DECL
#endif /* MRUBY_PROC_H */
+11 -6
View File
@@ -7,9 +7,15 @@
#ifndef MRUBY_RANGE_H
#define MRUBY_RANGE_H
#if defined(__cplusplus)
extern "C" {
#endif
#include "mruby/common.h"
/**
* @file mruby/range.h
* @defgroup mruby_range Range class
* @ingroup mruby
* @{
*/
MRB_BEGIN_DECL
typedef struct mrb_range_edges {
mrb_value beg;
@@ -29,8 +35,7 @@ MRB_API mrb_value mrb_range_new(mrb_state*, mrb_value, mrb_value, mrb_bool);
MRB_API mrb_bool mrb_range_beg_len(mrb_state *mrb, mrb_value range, mrb_int *begp, mrb_int *lenp, mrb_int len);
mrb_value mrb_get_values_at(mrb_state *mrb, mrb_value obj, mrb_int olen, mrb_int argc, const mrb_value *argv, mrb_value (*func)(mrb_state*, mrb_value, mrb_int));
#if defined(__cplusplus)
} /* extern "C" { */
#endif
/** @} */
MRB_END_DECL
#endif /* MRUBY_RANGE_H */
+12 -7
View File
@@ -7,9 +7,15 @@
#ifndef MRUBY_STRING_H
#define MRUBY_STRING_H
#if defined(__cplusplus)
extern "C" {
#endif
#include "mruby/common.h"
/**
* @file mruby/string.h
* @defgroup mrb_string String class
* @ingroup mruby
* @{
*/
MRB_BEGIN_DECL
extern const char mrb_digitmap[];
@@ -67,7 +73,7 @@ struct RString {
#define RSTRING(s) mrb_str_ptr(s)
#define RSTRING_PTR(s) RSTR_PTR(RSTRING(s))
#define RSTRING_EMBED_LEN(s) RSTR_ENBED_LEN(RSTRING(s))
#define RSTRING_LEN(s) RSTR_LEN(RSTRING(s))
#define RSTRING_LEN(s) RSTR_LEN(RSTRING(s))
#define RSTRING_CAPA(s) RSTR_CAPA(RSTRING(s))
#define RSTRING_END(s) (RSTRING_PTR(s) + RSTRING_LEN(s))
mrb_int mrb_str_strlen(mrb_state*, struct RString*);
@@ -120,8 +126,7 @@ void mrb_regexp_check(mrb_state *mrb, mrb_value obj);
#define mrb_str_buf_cat(mrb, str, ptr, len) mrb_str_cat(mrb, str, ptr, len)
#define mrb_str_buf_append(mrb, str, str2) mrb_str_cat_str(mrb, str, str2)
#if defined(__cplusplus)
} /* extern "C" { */
#endif
/** @} */
MRB_END_DECL
#endif /* MRUBY_STRING_H */
+24 -2
View File
@@ -7,6 +7,19 @@
#ifndef MRUBY_VALUE_H
#define MRUBY_VALUE_H
#include "mruby/common.h"
/**
* @file mruby/value.h
* @defgroup mruby_value Value definitions
*
* @ref mrb_value functions and macros.
*
* @ingroup mruby
* @{
*/
MRB_BEGIN_DECL
typedef uint32_t mrb_sym;
typedef uint8_t mrb_bool;
struct mrb_state;
@@ -163,8 +176,14 @@ mrb_obj_value(void *p)
return v;
}
static inline mrb_value
mrb_nil_value(void)
/**
* Get a nil mrb_value object.
*
* @return
* nil mrb_value object reference.
*/
MRB_INLINE mrb_value mrb_nil_value(void)
{
mrb_value v;
SET_NIL_VALUE(v);
@@ -226,4 +245,7 @@ mrb_ro_data_p(const char *p)
# define mrb_ro_data_p(p) FALSE
#endif
/** @} */
MRB_END_DECL
#endif /* MRUBY_VALUE_H */
+11 -6
View File
@@ -7,9 +7,15 @@
#ifndef MRUBY_VARIABLE_H
#define MRUBY_VARIABLE_H
#if defined(__cplusplus)
extern "C" {
#endif
#include "mruby/common.h"
/**
* @file mruby/variable.h
* @defgroup mruby_variable Functions to access to mruby variables.
* @ingroup mruby
* @{
*/
MRB_BEGIN_DECL
typedef struct global_variable {
int counter;
@@ -74,8 +80,7 @@ void mrb_gc_mark_iv(mrb_state*, struct RObject*);
size_t mrb_gc_mark_iv_size(mrb_state*, struct RObject*);
void mrb_gc_free_iv(mrb_state*, struct RObject*);
#if defined(__cplusplus)
} /* extern "C" { */
#endif
/** @} */
MRB_END_DECL
#endif /* MRUBY_VARIABLE_H */
+14
View File
@@ -7,6 +7,17 @@
#ifndef MRUBY_VERSION_H
#define MRUBY_VERSION_H
#include "mruby/common.h"
/**
* @file mruby/version.h
* @brief MRuby version macros
* @defgroup mrb_string MRuby version macros
* @ingroup MRuby
* @{
*/
MRB_BEGIN_DECL
#define MRB_STRINGIZE0(expr) #expr
#define MRB_STRINGIZE(expr) MRB_STRINGIZE0(expr)
@@ -39,4 +50,7 @@
MRB_STRINGIZE(MRUBY_RELEASE_YEAR)" " \
MRUBY_AUTHOR \
/** @} */
MRB_END_DECL
#endif /* MRUBY_VERSION_H */