summaryrefslogtreecommitdiff
path: root/ext/syck/syck.h
diff options
context:
space:
mode:
authorwhy <why@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-06-17 16:55:54 +0000
committerwhy <why@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-06-17 16:55:54 +0000
commitae28f1b6b3b22afb529f599385d1f2af258624e9 (patch)
tree718fc605c85aa7d3c2b05fbfbc46c41320b74db9 /ext/syck/syck.h
parent77e941269fcddc8f5af6e553592fc3ef0132727c (diff)
* ext/syck/gram.c: added grammar for certain empty sequence entries.
* ext/syck/handler.c, ext/syck/syck.c, ext/syck/syck.h: track bad anchors. * ext/syck/token.c: added pause token, tag possible circular references. * lib/yaml/rubytypes.rb: parsing YMD time as Date instance. * ext/syck/rubyext.c: ditto. DomainType, PrivateType, BadAlias classes. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3954 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/syck/syck.h')
-rw-r--r--ext/syck/syck.h11
1 files changed, 8 insertions, 3 deletions
diff --git a/ext/syck/syck.h b/ext/syck/syck.h
index f4512cfea8..ef9c05471c 100644
--- a/ext/syck/syck.h
+++ b/ext/syck/syck.h
@@ -121,6 +121,7 @@ struct _syck_node {
*/
typedef SYMID (*SyckNodeHandler)(SyckParser *, SyckNode *);
typedef void (*SyckErrorHandler)(SyckParser *, char *);
+typedef SyckNode * (*SyckBadAnchorHandler)(SyckParser *, char *);
typedef long (*SyckIoFileRead)(char *, SyckIoFile *, long, long);
typedef long (*SyckIoStrRead)(char *, SyckIoStr *, long, long);
@@ -150,6 +151,8 @@ struct _syck_parser {
SyckNodeHandler handler;
// Error handler
SyckErrorHandler error_handler;
+ // InvalidAnchor handler
+ SyckBadAnchorHandler bad_anchor_handler;
// IO type
enum syck_io_type io_type;
// Custom buffer size
@@ -174,8 +177,8 @@ struct _syck_parser {
SyckIoStrRead read;
} *str;
} io;
- // Symbol table
- st_table *anchors;
+ // Symbol table for anchors
+ st_table *anchors, *bad_anchors;
// Optional symbol table for SYMIDs
st_table *syms;
// Levels of indentation
@@ -194,7 +197,8 @@ struct _syck_parser {
*/
SYMID syck_hdlr_add_node( SyckParser *, SyckNode * );
SyckNode *syck_hdlr_add_anchor( SyckParser *, char *, SyckNode * );
-SyckNode *syck_hdlr_add_alias( SyckParser *, char * );
+void syck_hdlr_remove_anchor( SyckParser *, char * );
+SyckNode *syck_hdlr_get_anchor( SyckParser *, char * );
void syck_add_transfer( char *, SyckNode *, int );
char *syck_xprivate( char *, int );
char *syck_taguri( char *, char *, int );
@@ -218,6 +222,7 @@ void syck_parser_implicit_typing( SyckParser *, int );
void syck_parser_taguri_expansion( SyckParser *, int );
void syck_parser_handler( SyckParser *, SyckNodeHandler );
void syck_parser_error_handler( SyckParser *, SyckErrorHandler );
+void syck_parser_bad_anchor_handler( SyckParser *, SyckBadAnchorHandler );
void syck_parser_file( SyckParser *, FILE *, SyckIoFileRead );
void syck_parser_str( SyckParser *, char *, long, SyckIoStrRead );
void syck_parser_str_auto( SyckParser *, char *, SyckIoStrRead );