Repository URL to install this package:
Version:
3.10.1 ▾
|
/* code.h
* Copyright (c) 2017, Peter Ohler
* All rights reserved.
*/
#ifndef OJ_CODE_H
#define OJ_CODE_H
#include <ruby.h>
#include "oj.h"
typedef void (*EncodeFunc)(VALUE obj, int depth, Out out);
typedef VALUE (*DecodeFunc)(VALUE clas, VALUE args);
typedef struct _code {
const char *name;
VALUE clas;
EncodeFunc encode;
DecodeFunc decode;
bool active; // For compat mode.
} *Code;
// Used by encode functions.
typedef struct _attr {
const char *name;
int len;
VALUE value;
long num;
VALUE time;
} *Attr;
extern bool oj_code_dump(Code codes, VALUE obj, int depth, Out out);
extern VALUE oj_code_load(Code codes, VALUE clas, VALUE args);
extern void oj_code_set_active(Code codes, VALUE clas, bool active);
extern bool oj_code_has(Code codes, VALUE clas, bool encode);
extern void oj_code_attrs(VALUE obj, Attr attrs, int depth, Out out, bool with_class);
extern struct _code oj_compat_codes[];
#endif /* OJ_CODE_H */