ext/ox/ox.h in ox-2.14.6 vs ext/ox/ox.h in ox-2.14.7
- old
+ new
@@ -14,262 +14,240 @@
#endif
#define RSTRING_NOT_MODIFIED
#include "ruby.h"
-#if HAVE_RB_ENC_ASSOCIATE
#include "ruby/encoding.h"
-#endif
#if HAVE_RUBY_ST_H
#include "ruby/st.h"
#else
// Only on travis, local is where it is for all others. Seems to vary depending on the travis machine picked up.
#include "st.h"
#endif
-#include "cache.h"
-
-#include "err.h"
-#include "type.h"
#include "attr.h"
+#include "err.h"
#include "helper.h"
+#include "oxcache.h"
+#include "type.h"
#define raise_error(msg, xml, current) _ox_raise_error(msg, xml, current, __FILE__, __LINE__)
-#define MAX_TEXT_LEN 4096
+#define MAX_TEXT_LEN 4096
-#define SILENT 0
-#define TRACE 1
-#define DEBUG 2
+#define SILENT 0
+#define TRACE 1
+#define DEBUG 2
-#define XSD_DATE 0x0001
-#define WITH_XML 0x0002
-#define WITH_INST 0x0004
-#define WITH_DTD 0x0008
-#define CIRCULAR 0x0010
+#define XSD_DATE 0x0001
+#define WITH_XML 0x0002
+#define WITH_INST 0x0004
+#define WITH_DTD 0x0008
+#define CIRCULAR 0x0010
-#define XSD_DATE_SET 0x0100
-#define WITH_XML_SET 0x0200
-#define WITH_INST_SET 0x0400
-#define WITH_DTD_SET 0x0800
-#define CIRCULAR_SET 0x1000
+#define XSD_DATE_SET 0x0100
+#define WITH_XML_SET 0x0200
+#define WITH_INST_SET 0x0400
+#define WITH_DTD_SET 0x0800
+#define CIRCULAR_SET 0x1000
typedef enum {
- UseObj = 1,
- UseAttr = 2,
- UseAttrSet = 3,
- UseArray = 4,
- UseAMember = 5,
- UseHash = 6,
- UseHashKey = 7,
- UseHashVal = 8,
- UseRange = 9,
- UseRangeAttr= 10,
- UseRaw = 11,
+ UseObj = 1,
+ UseAttr = 2,
+ UseAttrSet = 3,
+ UseArray = 4,
+ UseAMember = 5,
+ UseHash = 6,
+ UseHashKey = 7,
+ UseHashVal = 8,
+ UseRange = 9,
+ UseRangeAttr = 10,
+ UseRaw = 11,
} Use;
typedef enum {
- StrictEffort = 's',
- TolerantEffort = 't',
- AutoEffort = 'a',
- NoEffort = 0,
+ StrictEffort = 's',
+ TolerantEffort = 't',
+ AutoEffort = 'a',
+ NoEffort = 0,
} Effort;
-typedef enum {
- Yes = 'y',
- No = 'n',
- NotSet = 0
-} YesNo;
+typedef enum { Yes = 'y', No = 'n', NotSet = 0 } YesNo;
-typedef enum {
- ObjMode = 'o',
- GenMode = 'g',
- LimMode = 'l',
- HashMode = 'h',
- HashNoAttrMode = 'n',
- NoMode = 0
-} LoadMode;
+typedef enum { ObjMode = 'o', GenMode = 'g', LimMode = 'l', HashMode = 'h', HashNoAttrMode = 'n', NoMode = 0 } LoadMode;
typedef enum {
- OffSkip = 'o',
- NoSkip = 'n',
- CrSkip = 'r',
- SpcSkip = 's',
+ OffSkip = 'o',
+ NoSkip = 'n',
+ CrSkip = 'r',
+ SpcSkip = 's',
} SkipMode;
-typedef struct _pInfo *PInfo;
+typedef struct _pInfo *PInfo;
typedef struct _parseCallbacks {
- void (*instruct)(PInfo pi, const char *target, Attr attrs, const char *content);
- void (*add_doctype)(PInfo pi, const char *docType);
- void (*add_comment)(PInfo pi, const char *comment);
- void (*add_cdata)(PInfo pi, const char *cdata, size_t len);
- void (*add_text)(PInfo pi, char *text, int closed);
- void (*add_element)(PInfo pi, const char *ename, Attr attrs, int hasChildren);
- void (*end_element)(PInfo pi, const char *ename);
- void (*finish)(PInfo pi);
-} *ParseCallbacks;
+ void (*instruct)(PInfo pi, const char *target, Attr attrs, const char *content);
+ void (*add_doctype)(PInfo pi, const char *docType);
+ void (*add_comment)(PInfo pi, const char *comment);
+ void (*add_cdata)(PInfo pi, const char *cdata, size_t len);
+ void (*add_text)(PInfo pi, char *text, int closed);
+ void (*add_element)(PInfo pi, const char *ename, Attr attrs, int hasChildren);
+ void (*end_element)(PInfo pi, const char *ename);
+ void (*finish)(PInfo pi);
+} * ParseCallbacks;
typedef struct _circArray {
- VALUE obj_array[1024];
- VALUE *objs;
- unsigned long size; /* allocated size or initial array size */
- unsigned long cnt;
-} *CircArray;
+ VALUE obj_array[1024];
+ VALUE *objs;
+ unsigned long size; /* allocated size or initial array size */
+ unsigned long cnt;
+} * CircArray;
typedef struct _options {
- char encoding[64]; // encoding, stored in the option to avoid GC invalidation in default values
- char margin[128]; // left margin for dumping
- int indent; // indention for dump, default 2
- int trace; // trace level
- char margin_len; // margin length
- char with_dtd; // YesNo
- char with_xml; // YesNo
- char with_instruct; // YesNo
- char circular; // YesNo
- char xsd_date; // YesNo
- char mode; // LoadMode
- char effort; // Effort
- char sym_keys; // symbolize keys
- char skip; // skip mode
- char smart; // YesNo sax smart mode
- char convert_special;// boolean true or false
- char allow_invalid; // YesNo
- char no_empty; // boolean - no empty elements when dumping
- char with_cdata; // boolean - hash_load should include cdata
- char inv_repl[12]; // max 10 valid characters, first character is the length
- char strip_ns[64]; // namespace to strip, \0 is no-strip, \* is all, else only matches
- struct _hints *html_hints; // html hints
- VALUE attr_key_mod;
- VALUE element_key_mod;
-#if HAVE_RB_ENC_ASSOCIATE
- rb_encoding *rb_enc;
-#else
- void *rb_enc;
-#endif
-} *Options;
+ char encoding[64]; // encoding, stored in the option to avoid GC invalidation in default values
+ char margin[128]; // left margin for dumping
+ int indent; // indention for dump, default 2
+ int trace; // trace level
+ char margin_len; // margin length
+ char with_dtd; // YesNo
+ char with_xml; // YesNo
+ char with_instruct; // YesNo
+ char circular; // YesNo
+ char xsd_date; // YesNo
+ char mode; // LoadMode
+ char effort; // Effort
+ char sym_keys; // symbolize keys
+ char skip; // skip mode
+ char smart; // YesNo sax smart mode
+ char convert_special; // boolean true or false
+ char allow_invalid; // YesNo
+ char no_empty; // boolean - no empty elements when dumping
+ char with_cdata; // boolean - hash_load should include cdata
+ char inv_repl[12]; // max 10 valid characters, first character is the length
+ char strip_ns[64]; // namespace to strip, \0 is no-strip, \* is all, else only matches
+ struct _hints *html_hints; // html hints
+ VALUE attr_key_mod;
+ VALUE element_key_mod;
+ rb_encoding *rb_enc;
+} * Options;
// parse information structure
struct _pInfo {
- struct _helperStack helpers;
- struct _err err;
- char *str; // buffer being read from
- char *end; // end of original string
- char *s; // current position in buffer
- VALUE obj;
- ParseCallbacks pcb;
- CircArray circ_array;
- unsigned long id; // set for text types when cirs_array is set
- Options options;
- VALUE *marked;
- int mark_size; // allocated size
- int mark_cnt;
- char last; // last character read, rarely set
+ struct _helperStack helpers;
+ struct _err err;
+ char *str; // buffer being read from
+ char *end; // end of original string
+ char *s; // current position in buffer
+ VALUE obj;
+ ParseCallbacks pcb;
+ CircArray circ_array;
+ unsigned long id; // set for text types when cirs_array is set
+ Options options;
+ VALUE *marked;
+ int mark_size; // allocated size
+ int mark_cnt;
+ char last; // last character read, rarely set
};
-extern VALUE ox_parse(char *xml, size_t len, ParseCallbacks pcb, char **endp, Options options, Err err);
-extern void _ox_raise_error(const char *msg, const char *xml, const char *current, const char* file, int line);
+extern VALUE ox_parse(char *xml, size_t len, ParseCallbacks pcb, char **endp, Options options, Err err);
+extern void _ox_raise_error(const char *msg, const char *xml, const char *current, const char *file, int line);
-extern void ox_sax_define(void);
+extern void ox_sax_define(void);
-extern char* ox_write_obj_to_str(VALUE obj, Options copts);
-extern void ox_write_obj_to_file(VALUE obj, const char *path, Options copts);
+extern char *ox_write_obj_to_str(VALUE obj, Options copts);
+extern void ox_write_obj_to_file(VALUE obj, const char *path, Options copts);
-extern struct _options ox_default_options;
+extern struct _options ox_default_options;
-extern VALUE Ox;
+extern VALUE Ox;
-extern ID ox_abort_id;
-extern ID ox_at_column_id;
-extern ID ox_at_content_id;
-extern ID ox_at_id;
-extern ID ox_at_line_id;
-extern ID ox_at_pos_id;
-extern ID ox_at_value_id;
-extern ID ox_attr_id;
-extern ID ox_attr_value_id;
-extern ID ox_attrs_done_id;
-extern ID ox_attributes_id;
-extern ID ox_beg_id;
-extern ID ox_bigdecimal_id;
-extern ID ox_call_id;
-extern ID ox_cdata_id;
-extern ID ox_comment_id;
-extern ID ox_den_id;
-extern ID ox_doctype_id;
-extern ID ox_end_element_id;
-extern ID ox_end_id;
-extern ID ox_end_instruct_id;
-extern ID ox_error_id;
-extern ID ox_excl_id;
-extern ID ox_external_encoding_id;
-extern ID ox_fileno_id;
-extern ID ox_force_encoding_id;
-extern ID ox_inspect_id;
-extern ID ox_instruct_id;
-extern ID ox_jd_id;
-extern ID ox_keys_id;
-extern ID ox_local_id;
-extern ID ox_mesg_id;
-extern ID ox_message_id;
-extern ID ox_new_id;
-extern ID ox_nodes_id;
-extern ID ox_num_id;
-extern ID ox_parse_id;
-extern ID ox_pos_id;
-extern ID ox_read_id;
-extern ID ox_readpartial_id;
-extern ID ox_start_element_id;
-extern ID ox_string_id;
-extern ID ox_text_id;
-extern ID ox_to_c_id;
-extern ID ox_to_s_id;
-extern ID ox_to_sym_id;
-extern ID ox_tv_sec_id;
-extern ID ox_tv_nsec_id;
-extern ID ox_tv_usec_id;
-extern ID ox_value_id;
+extern ID ox_abort_id;
+extern ID ox_at_column_id;
+extern ID ox_at_content_id;
+extern ID ox_at_id;
+extern ID ox_at_line_id;
+extern ID ox_at_pos_id;
+extern ID ox_at_value_id;
+extern ID ox_attr_id;
+extern ID ox_attr_value_id;
+extern ID ox_attrs_done_id;
+extern ID ox_attributes_id;
+extern ID ox_beg_id;
+extern ID ox_bigdecimal_id;
+extern ID ox_call_id;
+extern ID ox_cdata_id;
+extern ID ox_comment_id;
+extern ID ox_den_id;
+extern ID ox_doctype_id;
+extern ID ox_end_element_id;
+extern ID ox_end_id;
+extern ID ox_end_instruct_id;
+extern ID ox_error_id;
+extern ID ox_excl_id;
+extern ID ox_external_encoding_id;
+extern ID ox_fileno_id;
+extern ID ox_force_encoding_id;
+extern ID ox_inspect_id;
+extern ID ox_instruct_id;
+extern ID ox_jd_id;
+extern ID ox_keys_id;
+extern ID ox_local_id;
+extern ID ox_mesg_id;
+extern ID ox_message_id;
+extern ID ox_new_id;
+extern ID ox_nodes_id;
+extern ID ox_num_id;
+extern ID ox_parse_id;
+extern ID ox_pos_id;
+extern ID ox_read_id;
+extern ID ox_readpartial_id;
+extern ID ox_start_element_id;
+extern ID ox_string_id;
+extern ID ox_text_id;
+extern ID ox_to_c_id;
+extern ID ox_to_s_id;
+extern ID ox_to_sym_id;
+extern ID ox_tv_sec_id;
+extern ID ox_tv_nsec_id;
+extern ID ox_tv_usec_id;
+extern ID ox_value_id;
-#if HAVE_RB_ENC_ASSOCIATE
-extern rb_encoding *ox_utf8_encoding;
-#else
-extern void *ox_utf8_encoding;
-#endif
+extern rb_encoding *ox_utf8_encoding;
-extern VALUE ox_empty_string;
-extern VALUE ox_encoding_sym;
-extern VALUE ox_indent_sym;
-extern VALUE ox_size_sym;
-extern VALUE ox_standalone_sym;
-extern VALUE ox_sym_bank; // Array
-extern VALUE ox_version_sym;
-extern VALUE ox_zero_fixnum;
+extern VALUE ox_empty_string;
+extern VALUE ox_encoding_sym;
+extern VALUE ox_indent_sym;
+extern VALUE ox_size_sym;
+extern VALUE ox_standalone_sym;
+extern VALUE ox_sym_bank; // Array
+extern VALUE ox_version_sym;
+extern VALUE ox_zero_fixnum;
-extern VALUE ox_bigdecimal_class;
-extern VALUE ox_date_class;
-extern VALUE ox_stringio_class;
-extern VALUE ox_struct_class;
-extern VALUE ox_time_class;
+extern VALUE ox_bigdecimal_class;
+extern VALUE ox_date_class;
+extern VALUE ox_stringio_class;
+extern VALUE ox_struct_class;
+extern VALUE ox_time_class;
-extern VALUE ox_document_clas;
-extern VALUE ox_element_clas;
-extern VALUE ox_instruct_clas;
-extern VALUE ox_bag_clas;
-extern VALUE ox_comment_clas;
-extern VALUE ox_raw_clas;
-extern VALUE ox_doctype_clas;
-extern VALUE ox_cdata_clas;
+extern VALUE ox_document_clas;
+extern VALUE ox_element_clas;
+extern VALUE ox_instruct_clas;
+extern VALUE ox_bag_clas;
+extern VALUE ox_comment_clas;
+extern VALUE ox_raw_clas;
+extern VALUE ox_doctype_clas;
+extern VALUE ox_cdata_clas;
-extern Cache ox_symbol_cache;
-extern Cache ox_class_cache;
-extern Cache ox_attr_cache;
+extern Cache ox_symbol_cache;
+extern Cache ox_class_cache;
+extern Cache ox_attr_cache;
-extern void ox_init_builder(VALUE ox);
+extern void ox_init_builder(VALUE ox);
#if defined(__cplusplus)
#if 0
{ /* satisfy cc-mode */
#endif
-} /* extern "C" { */
+} /* extern "C" { */
#endif
#endif /* OX_H */