diff options
author | why <why@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-06-17 16:55:54 +0000 |
---|---|---|
committer | why <why@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-06-17 16:55:54 +0000 |
commit | ae28f1b6b3b22afb529f599385d1f2af258624e9 (patch) | |
tree | 718fc605c85aa7d3c2b05fbfbc46c41320b74db9 /ext/syck/syck.h | |
parent | 77e941269fcddc8f5af6e553592fc3ef0132727c (diff) | |
download | ruby-ae28f1b6b3b22afb529f599385d1f2af258624e9.tar.gz |
* 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.h | 11 |
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 ); |