remove data.h

This commit is contained in:
Yuichi Nishiwaki 2016-02-19 00:50:13 +09:00
parent 0243c52b14
commit 8979b65b0c
8 changed files with 56 additions and 64 deletions

View File

@ -224,7 +224,7 @@ cont_call(pic_state *pic)
pic_get_args(pic, "*", &argc, &argv);
cont = pic_data_ptr(pic_closure_ref(pic, 0))->data;
cont = pic_data(pic, pic_closure_ref(pic, 0));
cont->results = pic_list_by_array(pic, argc, argv);
/* execute guard handlers */

View File

@ -20,7 +20,7 @@ regexp_dtor(pic_state *pic, void *data)
static const pic_data_type regexp_type = { "regexp", regexp_dtor, NULL };
#define pic_regexp_p(pic, o) (pic_data_type_p(pic, (o), &regexp_type))
#define pic_regexp_data_ptr(o) ((struct pic_regexp_t *)pic_data_ptr(o)->data)
#define pic_regexp_data(pic, v) ((struct pic_regexp_t *)pic_data(pic, v))
static pic_value
pic_regexp_regexp(pic_state *pic)
@ -92,11 +92,11 @@ pic_regexp_regexp_match(pic_state *pic)
matches = pic_nil_value(pic);
positions = pic_nil_value(pic);
if (strchr(pic_regexp_data_ptr(reg)->flags, 'g') != NULL) {
if (strchr(pic_regexp_data(pic, reg)->flags, 'g') != NULL) {
/* global search */
offset = 0;
while (regexec(&pic_regexp_data_ptr(reg)->reg, input, 1, match, 0) != REG_NOMATCH) {
while (regexec(&pic_regexp_data(pic, reg)->reg, input, 1, match, 0) != REG_NOMATCH) {
pic_push(pic, pic_obj_value(pic_str_value(pic, input, match[0].rm_eo - match[0].rm_so)), matches);
pic_push(pic, pic_int_value(pic, offset), positions);
@ -106,7 +106,7 @@ pic_regexp_regexp_match(pic_state *pic)
} else {
/* local search */
if (regexec(&pic_regexp_data_ptr(reg)->reg, input, 100, match, 0) == 0) {
if (regexec(&pic_regexp_data(pic, reg)->reg, input, 100, match, 0) == 0) {
for (i = 0; i < 100; ++i) {
if (match[i].rm_so == -1) {
break;
@ -140,7 +140,7 @@ pic_regexp_regexp_split(pic_state *pic)
pic_assert_type(pic, reg, regexp);
while (regexec(&pic_regexp_data_ptr(reg)->reg, input, 1, &match, 0) != REG_NOMATCH) {
while (regexec(&pic_regexp_data(pic, reg)->reg, input, 1, &match, 0) != REG_NOMATCH) {
pic_push(pic, pic_obj_value(pic_str_value(pic, input, match.rm_so)), output);
input += match.rm_eo;
@ -163,7 +163,7 @@ pic_regexp_regexp_replace(pic_state *pic)
pic_assert_type(pic, reg, regexp);
while (regexec(&pic_regexp_data_ptr(reg)->reg, input, 1, &match, 0) != REG_NOMATCH) {
while (regexec(&pic_regexp_data(pic, reg)->reg, input, 1, &match, 0) != REG_NOMATCH) {
output = pic_str_cat(pic, output, pic_str_value(pic, input, match.rm_so));
output = pic_str_cat(pic, output, txt);

View File

@ -47,7 +47,7 @@ socket_dtor(pic_state *pic, void *data)
static const pic_data_type socket_type = { "socket", socket_dtor, NULL };
#define pic_socket_p(pic, o) (pic_data_type_p(pic, (o), &socket_type))
#define pic_socket_data_ptr(o) ((struct pic_socket_t *)pic_data_ptr(o)->data)
#define pic_socket_data(pic, o) ((struct pic_socket_t *)pic_data(pic, o))
PIC_INLINE void
validate_socket_object(pic_state *pic, pic_value v)
@ -154,7 +154,7 @@ pic_socket_socket_accept(pic_state *pic)
pic_get_args(pic, "o", &obj);
validate_socket_object(pic, obj);
sock = pic_socket_data_ptr(obj);
sock = pic_socket_data(pic, obj);
ensure_socket_is_open(pic, sock);
errno = 0;
@ -194,7 +194,7 @@ pic_socket_socket_send(pic_state *pic)
pic_get_args(pic, "ob|i", &obj, &bv, &flags);
validate_socket_object(pic, obj);
sock = pic_socket_data_ptr(obj);
sock = pic_socket_data(pic, obj);
ensure_socket_is_open(pic, sock);
cursor = pic_blob(pic, bv, &remain);
@ -236,7 +236,7 @@ pic_socket_socket_recv(pic_state *pic)
pic_errorf(pic, "size must not be negative");
}
sock = pic_socket_data_ptr(obj);
sock = pic_socket_data(pic, obj);
ensure_socket_is_open(pic, sock);
buf = malloc(size);
@ -271,7 +271,7 @@ pic_socket_socket_shutdown(pic_state *pic)
pic_get_args(pic, "oi", &obj, &how);
validate_socket_object(pic, obj);
sock = pic_socket_data_ptr(obj);
sock = pic_socket_data(pic, obj);
if (sock->fd != -1) {
shutdown(sock->fd, how);
sock->fd = -1;
@ -288,7 +288,7 @@ pic_socket_socket_close(pic_state *pic)
pic_get_args(pic, "o", &obj);
validate_socket_object(pic, obj);
socket_close(pic_socket_data_ptr(obj));
socket_close(pic_socket_data(pic, obj));
return pic_undef_value(pic);
}
@ -346,7 +346,7 @@ pic_socket_socket_input_port(pic_state *pic)
pic_get_args(pic, "o", &obj);
validate_socket_object(pic, obj);
sock = pic_socket_data_ptr(obj);
sock = pic_socket_data(pic, obj);
ensure_socket_is_open(pic, sock);
return pic_obj_value(make_socket_port(pic, sock, PIC_PORT_IN));
@ -361,7 +361,7 @@ pic_socket_socket_output_port(pic_state *pic)
pic_get_args(pic, "o", &obj);
validate_socket_object(pic, obj);
sock = pic_socket_data_ptr(obj);
sock = pic_socket_data(pic, obj);
ensure_socket_is_open(pic, sock);
return pic_obj_value(make_socket_port(pic, sock, PIC_PORT_OUT));
@ -377,7 +377,7 @@ pic_socket_call_with_socket(pic_state *pic)
pic_get_args(pic, "ol", &obj, &proc);
validate_socket_object(pic, obj);
sock = pic_socket_data_ptr(obj);
sock = pic_socket_data(pic, obj);
ensure_socket_is_open(pic, sock);
result = pic_call(pic, proc, 1, obj);

View File

@ -1,2 +1,28 @@
#include "picrin.h"
#include "picrin/object.h"
bool
pic_data_type_p(pic_state *pic, pic_value obj, const pic_data_type *type)
{
return pic_data_p(pic, obj) && pic_data_ptr(obj)->type == type;
}
void *
pic_data(pic_state *pic, pic_value data)
{
pic_assert_type(pic, data, data);
return pic_data_ptr(data)->data;
}
struct pic_data *
pic_data_value(pic_state *pic, void *userdata, const pic_data_type *type)
{
struct pic_data *data;
data = (struct pic_data *)pic_obj_alloc(pic, sizeof(struct pic_data), PIC_TYPE_DATA);
data->type = type;
data->data = userdata;
return data;
}

View File

@ -123,7 +123,7 @@ PIC_INLINE char pic_char(pic_state *, pic_value);
#define pic_bool(pic,v) (! pic_false_p(pic, v))
const char *pic_str(pic_state *, struct pic_string *);
unsigned char *pic_blob(pic_state *, struct pic_blob *, int *len);
void *pic_data(pic_state *, struct pic_data *);
void *pic_data(pic_state *, pic_value);
typedef struct {
const char *type_name;
@ -260,7 +260,6 @@ int pic_str_hash(pic_state *, struct pic_string *);
#include "picrin/state.h"
#include "picrin/cont.h"
#include "picrin/data.h"
#include "picrin/error.h"
#include "picrin/macro.h"
#include "picrin/pair.h"
@ -296,6 +295,8 @@ pic_value pic_eval(pic_state *, pic_value, const char *);
struct pic_proc *pic_make_var(pic_state *, pic_value, struct pic_proc *);
bool pic_data_type_p(pic_state *, pic_value, const pic_data_type *);
#define pic_deflibrary(pic, lib) do { \
if (! pic_find_library(pic, lib)) { \
pic_make_library(pic, lib); \

View File

@ -1,28 +0,0 @@
/**
* See Copyright Notice in picrin.h
*/
#ifndef PICRIN_DATA_H
#define PICRIN_DATA_H
#if defined(__cplusplus)
extern "C" {
#endif
struct pic_data {
PIC_OBJECT_HEADER
const pic_data_type *type;
void *data;
};
#define pic_data_ptr(o) ((struct pic_data *)pic_obj_ptr(o))
PIC_INLINE bool pic_data_type_p(pic_state *pic, const pic_value obj, const pic_data_type *type) {
return pic_data_p(pic, obj) && pic_data_ptr(obj)->type == type;
}
#if defined(__cplusplus)
}
#endif
#endif

View File

@ -69,6 +69,17 @@ struct pic_weak {
#define pic_weak_ptr(v) ((struct pic_weak *)pic_obj_ptr(v))
/* data */
struct pic_data {
PIC_OBJECT_HEADER
const pic_data_type *type;
void *data;
};
#define pic_data_ptr(o) ((struct pic_data *)pic_obj_ptr(o))
#if defined(__cplusplus)
}
#endif

View File

@ -72,21 +72,3 @@ pic_typename(pic_state *pic, int type)
pic_errorf(pic, "pic_typename: invalid type given %d", type);
}
}
void *
pic_data(pic_state PIC_UNUSED(*pic), struct pic_data *data)
{
return data->data;
}
struct pic_data *
pic_data_value(pic_state *pic, void *userdata, const pic_data_type *type)
{
struct pic_data *data;
data = (struct pic_data *)pic_obj_alloc(pic, sizeof(struct pic_data), PIC_TYPE_DATA);
data->type = type;
data->data = userdata;
return data;
}