s11n-cvs Mailing List for s11n: easy object serialization in C++ (Page 2)
Brought to you by:
sgbeal
You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
(95) |
Apr
(43) |
May
(47) |
Jun
(81) |
Jul
(33) |
Aug
(241) |
Sep
(121) |
Oct
(65) |
Nov
(32) |
Dec
(77) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
(2) |
Feb
(28) |
Mar
(95) |
Apr
(1) |
May
(38) |
Jun
(112) |
Jul
(89) |
Aug
(23) |
Sep
(28) |
Oct
(7) |
Nov
(66) |
Dec
(112) |
2006 |
Jan
(1) |
Feb
(2) |
Mar
(64) |
Apr
|
May
(9) |
Jun
(5) |
Jul
(2) |
Aug
(16) |
Sep
(20) |
Oct
|
Nov
|
Dec
(9) |
2007 |
Jan
(41) |
Feb
(227) |
Mar
(12) |
Apr
(3) |
May
(3) |
Jun
(63) |
Jul
(14) |
Aug
(1) |
Sep
(3) |
Oct
(9) |
Nov
|
Dec
|
2008 |
Jan
(8) |
Feb
|
Mar
|
Apr
(42) |
May
(65) |
Jun
(20) |
Jul
|
Aug
(16) |
Sep
(6) |
Oct
(8) |
Nov
(38) |
Dec
|
2009 |
Jan
|
Feb
(18) |
Mar
(1) |
Apr
(4) |
May
|
Jun
(7) |
Jul
(6) |
Aug
|
Sep
|
Oct
|
Nov
(10) |
Dec
(1) |
2010 |
Jan
|
Feb
|
Mar
(5) |
Apr
(8) |
May
(3) |
Jun
(5) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(2) |
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
2012 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: stephan b. <sg...@us...> - 2010-03-20 11:05:59
|
Update of /cvsroot/s11n/1.1/s11n In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv5042 Modified Files: postconfig.libs11n Log Message: replaced list email address with my own. Index: postconfig.libs11n =================================================================== RCS file: /cvsroot/s11n/1.1/s11n/postconfig.libs11n,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- postconfig.libs11n 28 Sep 2005 20:22:09 -0000 1.2 +++ postconfig.libs11n 20 Mar 2010 11:05:50 -0000 1.3 @@ -26,7 +26,8 @@ and all feedback, fixes, etc., so we can keep making s11n better: http://s11n.net - s11...@li... + st...@s1... + (please do not use the mailing list: it is overrun by spammbots) EOF # /helpful notes |
From: stephan b. <sg...@us...> - 2009-12-15 10:32:57
|
Update of /cvsroot/s11n/1.1/s11n/doc/doxygen In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv19298 Modified Files: Makefile Log Message: s/mkdirhier/mkdir -p/. No idea where that came from. Index: Makefile =================================================================== RCS file: /cvsroot/s11n/1.1/s11n/doc/doxygen/Makefile,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- Makefile 26 Dec 2005 15:22:51 -0000 1.7 +++ Makefile 15 Dec 2009 10:32:46 -0000 1.8 @@ -68,7 +68,7 @@ SYMLINK = libs11n-doxygen INSTALL_ABS = $(INSTALL_DEST)/$(INSTALL_SUBDIR) install: html - test -d $(INSTALL_DEST) || mkdirhier $(INSTALL_DEST); \ + test -d $(INSTALL_DEST) || mkdir -p $(INSTALL_DEST); \ test -d $(INSTALL_DEST) || exit test -d $(INSTALL_ABS) && rm -fr $(INSTALL_ABS); \ cp -r html $(INSTALL_ABS) |
From: <sg...@us...> - 2009-11-12 18:12:20
|
Revision: 280 http://s11n.svn.sourceforge.net/s11n/?rev=280&view=rev Author: sgbeal Date: 2009-11-12 18:12:10 +0000 (Thu, 12 Nov 2009) Log Message: ----------- doh - fixed broken #include Modified Paths: -------------- c11n/src/detail/whhash.c Modified: c11n/src/detail/whhash.c =================================================================== --- c11n/src/detail/whhash.c 2009-11-12 18:08:31 UTC (rev 279) +++ c11n/src/detail/whhash.c 2009-11-12 18:12:10 UTC (rev 280) @@ -47,7 +47,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ======================================================================== - + */ #include "s11n.net/c11n/detail/whhash.h" #include <stdlib.h> //#include <stdio.h> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sg...@us...> - 2009-11-12 18:08:37
|
Revision: 279 http://s11n.svn.sourceforge.net/s11n/?rev=279&view=rev Author: sgbeal Date: 2009-11-12 18:08:31 +0000 (Thu, 12 Nov 2009) Log Message: ----------- fixed a minor telemetry-counting bug in whhash Modified Paths: -------------- c11n/src/detail/whhash.c Modified: c11n/src/detail/whhash.c =================================================================== --- c11n/src/detail/whhash.c 2009-11-03 18:24:48 UTC (rev 278) +++ c11n/src/detail/whhash.c 2009-11-12 18:08:31 UTC (rev 279) @@ -225,8 +225,8 @@ } h = (whhash_table *)malloc(sizeof(whhash_table)); if (NULL == h) return NULL; /*oom*/ + *h = whhash_init; h->stats.alloced = sizeof(whhash_table); - *h = whhash_init; h->freeKey = 0; h->freeVal = 0; #if 0 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: stephan b. <sg...@us...> - 2009-11-04 22:12:52
|
Update of /cvsroot/s11n/1.1/s11n/src/plugin In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv6165 Modified Files: plugin.hpp Log Message: undid one of the Win32 patches, replacing it with a workaround. See the comments code. Index: plugin.hpp =================================================================== RCS file: /cvsroot/s11n/1.1/s11n/src/plugin/plugin.hpp,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- plugin.hpp 21 Feb 2009 13:41:23 -0000 1.6 +++ plugin.hpp 4 Nov 2009 22:12:42 -0000 1.7 @@ -5,7 +5,24 @@ #include <s11n.net/s11n/plugin/plugin_config.hpp> //Added by Damien to make Windows compile work -#include <s11n.net/s11n/export.hpp> // S11N_EXPORT_API +//#include <s11n.net/s11n/export.hpp> // S11N_EXPORT_API +// ^^^ removed by stephan because it breaks the build tree on Unix +// platforms because the plugins dir must be built before the s11n +// dir, but export.hpp is not put in place until the s11n subdir is +// built. The reason for that structure is to cause circular deps like +// this one to explicitly break the build, so at least it did what it +// was supposed to. :) +#if !defined(S11N_EXPORT_API) +#ifdef WIN32 +# ifdef S11N_EXPORTS +# define S11N_EXPORT_API __declspec(dllexport) +# else +# define S11N_EXPORT_API __declspec(dllimport) +# endif +#else +# define S11N_EXPORT_API +#endif +#endif namespace s11n { /** |
From: <sg...@us...> - 2009-11-03 18:24:56
|
Revision: 278 http://s11n.svn.sourceforge.net/s11n/?rev=278&view=rev Author: sgbeal Date: 2009-11-03 18:24:48 +0000 (Tue, 03 Nov 2009) Log Message: ----------- fixed a compile error for gcc 4.4.1, though the error defies the API described in the man pages :/ Modified Paths: -------------- trunk/src/io/strtool.cpp Modified: trunk/src/io/strtool.cpp =================================================================== --- trunk/src/io/strtool.cpp 2009-07-17 17:48:26 UTC (rev 277) +++ trunk/src/io/strtool.cpp 2009-11-03 18:24:48 UTC (rev 278) @@ -403,7 +403,7 @@ for ( ; *src != '\0'; src++ ) { - char *x = strchr( _separators, *src ); + char const *x = strchr( _separators, *src ); if (( *src == '\"' ) && !quoted) quoted = DOUBLE_QUOTE; else if (( *src == '\'') && !quoted) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: stephan b. <sg...@us...> - 2009-11-03 18:16:09
|
Update of /cvsroot/s11n/1.1/s11n/src/io/funtxt In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv26246/funtxt Modified Files: funtxt.flex funtxt.flex.cpp Log Message: added #include stdio.h for EOF definion Index: funtxt.flex =================================================================== RCS file: /cvsroot/s11n/1.1/s11n/src/io/funtxt/funtxt.flex,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- funtxt.flex 3 Oct 2008 12:53:25 -0000 1.5 +++ funtxt.flex 3 Nov 2009 18:15:59 -0000 1.6 @@ -1,7 +1,6 @@ %option c++ %{ - namespace { // to get doxygen to ignore these comments :/ /** my first lex :) @@ -66,6 +65,7 @@ #include <string> #include <deque> #include <cassert> +#include <stdio.h> // only for EOF definition #include <s11n.net/s11n/io/strtool.hpp> // translate_entities() Index: funtxt.flex.cpp =================================================================== RCS file: /cvsroot/s11n/1.1/s11n/src/io/funtxt/funtxt.flex.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- funtxt.flex.cpp 21 Feb 2009 13:41:22 -0000 1.4 +++ funtxt.flex.cpp 3 Nov 2009 18:15:59 -0000 1.5 @@ -478,7 +478,6 @@ #define INITIAL 0 #line 3 "funtxt.flex" - namespace { // to get doxygen to ignore these comments :/ /** my first lex :) @@ -543,6 +542,7 @@ #include <string> #include <deque> #include <cassert> +#include <stdio.h> // only for EOF definition #include <s11n.net/s11n/io/strtool.hpp> // translate_entities() |
From: stephan b. <sg...@us...> - 2009-11-03 18:16:09
|
Update of /cvsroot/s11n/1.1/s11n/src/io/parens In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv26246/parens Modified Files: parens.flex parens.flex.cpp Log Message: added #include stdio.h for EOF definion Index: parens.flex =================================================================== RCS file: /cvsroot/s11n/1.1/s11n/src/io/parens/parens.flex,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- parens.flex 13 Jul 2005 16:56:14 -0000 1.3 +++ parens.flex 3 Nov 2009 18:15:59 -0000 1.4 @@ -28,6 +28,7 @@ #define YY_SKIP_YYWRAP 1 int yywrap() { return 1; } +#include <stdio.h> // only for EOF definition #include <iostream> #include <string> #include <stdexcept> Index: parens.flex.cpp =================================================================== RCS file: /cvsroot/s11n/1.1/s11n/src/io/parens/parens.flex.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- parens.flex.cpp 21 Feb 2009 13:41:22 -0000 1.4 +++ parens.flex.cpp 3 Nov 2009 18:15:59 -0000 1.5 @@ -511,6 +511,7 @@ #define YY_SKIP_YYWRAP 1 int yywrap() { return 1; } +#include <stdio.h> // only for EOF definition #include <iostream> #include <string> #include <stdexcept> @@ -697,7 +698,7 @@ register char *yy_cp, *yy_bp; register int yy_act; -#line 136 "parens.flex" +#line 137 "parens.flex" @@ -781,14 +782,14 @@ case 1: YY_RULE_SETUP -#line 138 "parens.flex" +#line 139 "parens.flex" { // (* comment blocks *) BEGIN IN_COMMENT_BLOCK; } YY_BREAK case 2: YY_RULE_SETUP -#line 142 "parens.flex" +#line 143 "parens.flex" { PCERR << "hit EOF in a (*comment block*)." << std::endl; throw std::runtime_error( "hit EOF in a (*comment block*)" ); @@ -797,17 +798,17 @@ YY_BREAK case 3: YY_RULE_SETUP -#line 147 "parens.flex" +#line 148 "parens.flex" { /* this match isn't 100% correct.*/ BEGIN 0; } YY_BREAK case 4: YY_RULE_SETUP -#line 148 "parens.flex" +#line 149 "parens.flex" { continue;} YY_BREAK case 5: YY_RULE_SETUP -#line 149 "parens.flex" +#line 150 "parens.flex" { continue;} YY_BREAK case 6: @@ -815,19 +816,19 @@ yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 151 "parens.flex" +#line 152 "parens.flex" {;} // comment lines YY_BREAK case 7: YY_RULE_SETUP -#line 155 "parens.flex" +#line 156 "parens.flex" { BEGIN IN_PROPERTY; } YY_BREAK case 8: YY_RULE_SETUP -#line 159 "parens.flex" +#line 160 "parens.flex" { // key name of property std::string propname = YYText(); @@ -879,7 +880,7 @@ YY_BREAK case 9: YY_RULE_SETUP -#line 208 "parens.flex" +#line 209 "parens.flex" { std::string tmpstr = YYText(); METADATA(nodename) = tmpstr.substr( 0, tmpstr.find( "=" ) ); @@ -889,12 +890,12 @@ YY_BREAK case 10: YY_RULE_SETUP -#line 216 "parens.flex" +#line 217 "parens.flex" {;} YY_BREAK case 11: YY_RULE_SETUP -#line 218 "parens.flex" +#line 219 "parens.flex" { // special case: empty node: --METADATA(internaldepth); BEGIN 0; @@ -902,12 +903,12 @@ YY_BREAK case 12: YY_RULE_SETUP -#line 222 "parens.flex" +#line 223 "parens.flex" {;} YY_BREAK case 13: YY_RULE_SETUP -#line 224 "parens.flex" +#line 225 "parens.flex" { std::string & nodename = METADATA(nodename); std::string & nodeclass = METADATA(nodeclass); @@ -939,7 +940,7 @@ YY_BREAK case 14: YY_RULE_SETUP -#line 253 "parens.flex" +#line 254 "parens.flex" { std::string & nodename = METADATA(nodename); std::string errmsg = "did not find class name after '" + nodename + "'."; @@ -950,7 +951,7 @@ YY_BREAK case 15: YY_RULE_SETUP -#line 261 "parens.flex" +#line 262 "parens.flex" { PCERR << METADATA(internaldepth)<< " Closing node" << std::endl; BuilderContext::close_node( this ); @@ -965,22 +966,22 @@ YY_BREAK case 16: YY_RULE_SETUP -#line 274 "parens.flex" +#line 275 "parens.flex" { continue;} // magic cookie YY_BREAK case 17: YY_RULE_SETUP -#line 276 "parens.flex" +#line 277 "parens.flex" {;} YY_BREAK case 18: YY_RULE_SETUP -#line 278 "parens.flex" +#line 279 "parens.flex" { PCERR << "Unexpected token: [" << YYText()<<"]"<<std::endl;} YY_BREAK case 19: YY_RULE_SETUP -#line 281 "parens.flex" +#line 282 "parens.flex" ECHO; YY_BREAK case YY_STATE_EOF(INITIAL): @@ -1796,7 +1797,7 @@ return 0; } #endif -#line 281 "parens.flex" +#line 282 "parens.flex" // ^{SPACE}*[#;].*$ {;} // comment lines // [#;][^{OPENER}]* {;} // comments trailing after node closures |
From: stephan b. <sg...@us...> - 2009-11-03 18:16:09
|
Update of /cvsroot/s11n/1.1/s11n/src/io/simplexml In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv26246/simplexml Modified Files: simplexml.flex simplexml.flex.cpp Log Message: added #include stdio.h for EOF definion Index: simplexml.flex =================================================================== RCS file: /cvsroot/s11n/1.1/s11n/src/io/simplexml/simplexml.flex,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- simplexml.flex 27 Aug 2005 17:07:36 -0000 1.4 +++ simplexml.flex 3 Nov 2009 18:15:59 -0000 1.5 @@ -14,7 +14,7 @@ #define YY_SKIP_YYWRAP 1 int yywrap() { return 1; } -// #include <stdio.h> +#include <stdio.h> // only for EOF definition #include <cassert> #include <iostream> #include <string> Index: simplexml.flex.cpp =================================================================== RCS file: /cvsroot/s11n/1.1/s11n/src/io/simplexml/simplexml.flex.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- simplexml.flex.cpp 21 Feb 2009 13:41:22 -0000 1.4 +++ simplexml.flex.cpp 3 Nov 2009 18:15:59 -0000 1.5 @@ -752,7 +752,7 @@ #define YY_SKIP_YYWRAP 1 int yywrap() { return 1; } -// #include <stdio.h> +#include <stdio.h> // only for EOF definition #include <cassert> #include <iostream> #include <string> |
From: stephan b. <sg...@us...> - 2009-11-03 18:16:08
|
Update of /cvsroot/s11n/1.1/s11n/src/io/wesnoth In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv26246/wesnoth Modified Files: wesnoth.flex wesnoth.flex.cpp Log Message: added #include stdio.h for EOF definion Index: wesnoth.flex.cpp =================================================================== RCS file: /cvsroot/s11n/1.1/s11n/src/io/wesnoth/wesnoth.flex.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- wesnoth.flex.cpp 21 Feb 2009 13:41:22 -0000 1.4 +++ wesnoth.flex.cpp 3 Nov 2009 18:15:59 -0000 1.5 @@ -413,6 +413,7 @@ # undef NDEBUG // force assert() #endif +#include <stdio.h> // only for EOF definition #include <iostream> #include <string> #include <deque> @@ -624,7 +625,7 @@ register char *yy_cp, *yy_bp; register int yy_act; -#line 140 "wesnoth.flex" +#line 141 "wesnoth.flex" @@ -708,12 +709,12 @@ case 1: YY_RULE_SETUP -#line 142 "wesnoth.flex" +#line 143 "wesnoth.flex" { continue; /* single-line comment */ } YY_BREAK case 2: YY_RULE_SETUP -#line 144 "wesnoth.flex" +#line 145 "wesnoth.flex" { // node opener std::string foo = YYText(); @@ -739,7 +740,7 @@ YY_BREAK case 3: YY_RULE_SETUP -#line 167 "wesnoth.flex" +#line 168 "wesnoth.flex" { size_t & bracedepth = METADATA(internaldepth); if( bracedepth == BuilderContext::node_depth(this) ) @@ -760,24 +761,24 @@ YY_BREAK case 4: YY_RULE_SETUP -#line 186 "wesnoth.flex" +#line 187 "wesnoth.flex" {;} YY_BREAK case 5: YY_RULE_SETUP -#line 187 "wesnoth.flex" +#line 188 "wesnoth.flex" { METADATA(property) += YYText(); } YY_BREAK case 6: YY_RULE_SETUP -#line 190 "wesnoth.flex" +#line 191 "wesnoth.flex" {;} // swallow it YY_BREAK case 7: YY_RULE_SETUP -#line 191 "wesnoth.flex" +#line 192 "wesnoth.flex" { // end of line std::string pname; std::string pval; @@ -798,7 +799,7 @@ YY_BREAK case 8: YY_RULE_SETUP -#line 210 "wesnoth.flex" +#line 211 "wesnoth.flex" { // read property if( METADATA(internaldepth) != BuilderContext::node_depth(this) ) { return 1; } @@ -808,12 +809,12 @@ YY_BREAK case 9: YY_RULE_SETUP -#line 218 "wesnoth.flex" +#line 219 "wesnoth.flex" {;} YY_BREAK case 10: YY_RULE_SETUP -#line 220 "wesnoth.flex" +#line 221 "wesnoth.flex" ECHO; YY_BREAK case YY_STATE_EOF(INITIAL): @@ -1626,7 +1627,7 @@ return 0; } #endif -#line 220 "wesnoth.flex" +#line 221 "wesnoth.flex" #undef METADATA Index: wesnoth.flex =================================================================== RCS file: /cvsroot/s11n/1.1/s11n/src/io/wesnoth/wesnoth.flex,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- wesnoth.flex 3 Oct 2008 12:53:25 -0000 1.5 +++ wesnoth.flex 3 Nov 2009 18:15:59 -0000 1.6 @@ -11,6 +11,7 @@ # undef NDEBUG // force assert() #endif +#include <stdio.h> // only for EOF definition #include <iostream> #include <string> #include <deque> |
From: stephan b. <sg...@us...> - 2009-11-03 18:16:08
|
Update of /cvsroot/s11n/1.1/s11n/src/io/funxml In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv26246/funxml Modified Files: funxml.flex funxml.flex.cpp Log Message: added #include stdio.h for EOF definion Index: funxml.flex =================================================================== RCS file: /cvsroot/s11n/1.1/s11n/src/io/funxml/funxml.flex,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- funxml.flex 13 Jul 2005 16:56:13 -0000 1.3 +++ funxml.flex 3 Nov 2009 18:15:59 -0000 1.4 @@ -3,7 +3,7 @@ #define YY_SKIP_YYWRAP 1 int yywrap() { return 1; } -// #include <stdio.h> +#include <stdio.h> // only for EOF definition #include <cassert> #include <iostream> #include <string> Index: funxml.flex.cpp =================================================================== RCS file: /cvsroot/s11n/1.1/s11n/src/io/funxml/funxml.flex.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- funxml.flex.cpp 21 Feb 2009 13:41:22 -0000 1.4 +++ funxml.flex.cpp 3 Nov 2009 18:15:59 -0000 1.5 @@ -379,7 +379,7 @@ #define YY_SKIP_YYWRAP 1 int yywrap() { return 1; } -// #include <stdio.h> +#include <stdio.h> // only for EOF definition #include <cassert> #include <iostream> #include <string> |
From: stephan b. <sg...@us...> - 2009-11-03 18:13:59
|
Update of /cvsroot/s11n/1.1/s11n/src/io/compact In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv25846 Modified Files: compact.flex compact.flex.cpp Log Message: added #include to get EOF definition (fix for gcc 4.4.1) Index: compact.flex.cpp =================================================================== RCS file: /cvsroot/s11n/1.1/s11n/src/io/compact/compact.flex.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- compact.flex.cpp 21 Feb 2009 13:41:22 -0000 1.7 +++ compact.flex.cpp 3 Nov 2009 18:13:48 -0000 1.8 @@ -345,7 +345,7 @@ #include <iostream> #include <string> #include <deque> - +#include <stdio.h> // only for EOF definition #include <s11n.net/s11n/s11n_debuggering_macros.hpp> // CERR #define PCERR if( 0 ) CERR << "compact.flex error:" Index: compact.flex =================================================================== RCS file: /cvsroot/s11n/1.1/s11n/src/io/compact/compact.flex,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- compact.flex 17 May 2007 11:57:56 -0000 1.9 +++ compact.flex 3 Nov 2009 18:13:48 -0000 1.10 @@ -13,7 +13,7 @@ #include <iostream> #include <string> #include <deque> - +#include <stdio.h> // only for EOF definition #include <s11n.net/s11n/s11n_debuggering_macros.hpp> // CERR #define PCERR if( 0 ) CERR << "compact.flex error:" |
From: <sg...@us...> - 2009-07-17 17:48:34
|
Revision: 277 http://s11n.svn.sourceforge.net/s11n/?rev=277&view=rev Author: sgbeal Date: 2009-07-17 17:48:26 +0000 (Fri, 17 Jul 2009) Log Message: ----------- minor doc corrections Modified Paths: -------------- c11n/include/s11n.net/c11n/detail/whgc.h Modified: c11n/include/s11n.net/c11n/detail/whgc.h =================================================================== --- c11n/include/s11n.net/c11n/detail/whgc.h 2009-07-17 17:30:43 UTC (rev 276) +++ c11n/include/s11n.net/c11n/detail/whgc.h 2009-07-17 17:48:26 UTC (rev 277) @@ -225,7 +225,7 @@ the dtor function which was assigned to them via whgc_add(). Note that the destruction order is in reverse order of the - registration (FIFO). + registration (LIFO). */ void whgc_destroy_context( whgc_context * ); @@ -262,7 +262,7 @@ /** A type for storing some telemetry for a whgc_context. Use whgc_get_stats() to collect the current stats of - a parser. + a context. */ struct whgc_stats { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sg...@us...> - 2009-07-17 17:30:45
|
Revision: 276 http://s11n.svn.sourceforge.net/s11n/?rev=276&view=rev Author: sgbeal Date: 2009-07-17 17:30:43 +0000 (Fri, 17 Jul 2009) Log Message: ----------- minor doc touch-ups Modified Paths: -------------- c11n/include/s11n.net/c11n/c11n.h Modified: c11n/include/s11n.net/c11n/c11n.h =================================================================== --- c11n/include/s11n.net/c11n/c11n.h 2009-07-17 16:46:57 UTC (rev 275) +++ c11n/include/s11n.net/c11n/c11n.h 2009-07-17 17:30:43 UTC (rev 276) @@ -1035,7 +1035,7 @@ bool (*serialize)( struct c11n_marshaller const * self, c11n_node * dest, void const * src ); /** - A function to serialize CT objects. Results are undefined + A function to deserialize CT objects. Results are undefined if src is-not-a CT. This function should restore dest from src's serialized data @@ -1308,7 +1308,7 @@ conversion. If any parameters are null then false is returned. dest's class name is set to that of the marshaller object and the - result of marshaller->api->serialize( dest, src ) is returned. + result of marshaller->api->serialize( marshaller, dest, src ) is returned. */ bool c11n_serialize( c11n_marshaller const * marshaller, c11n_node * dest, void const * src ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sg...@us...> - 2009-07-17 16:47:01
|
Revision: 275 http://s11n.svn.sourceforge.net/s11n/?rev=275&view=rev Author: sgbeal Date: 2009-07-17 16:46:57 +0000 (Fri, 17 Jul 2009) Log Message: ----------- updated whhash license text for dual license. Modified Paths: -------------- c11n/include/s11n.net/c11n/detail/whhash.h c11n/src/detail/whhash.c Modified: c11n/include/s11n.net/c11n/detail/whhash.h =================================================================== --- c11n/include/s11n.net/c11n/detail/whhash.h 2009-07-16 21:18:46 UTC (rev 274) +++ c11n/include/s11n.net/c11n/detail/whhash.h 2009-07-17 16:46:57 UTC (rev 275) @@ -1,6 +1,62 @@ -/* Copyright (C) 2002 Christopher Clark <fir...@cl...> */ -/* Copyright (C) 2008 Stephan Beal (http://wanderinghorse.net/home/stephan/) */ +/* Copyright (C) 2002, 2004 Christopher Clark <fir...@cl...> */ +/* Copyright (C) 2008, 2009 Stephan Beal (http://wanderinghorse.net/home/stephan/) */ /* Code originally taken from: http://www.cl.cam.ac.uk/~cwc22/hashtable/ */ + /* + On 17 June 2009, i (Stephan Beal) got permission from the original author + (Christopher Clark) to dual-license this code under the following terms: + + - If the code is used in a jurisdiction where Public Domain + property is regonized, then this code may be considered to be + in the Public Domain. Its author expressly disclaims copyright + in jurisdictions where such a disclaimer is allowed. + + - If the code is used in a jurisdiction which does not recognize + Public Domain, the code must be used in terms with the MIT license, + as described clearly and concisely at: + + http://en.wikipedia.org/wiki/MIT_License + + and reproduced in full below. + + - If the code is used in a jurisdiction which recognizes Public + Domain, the user may use the code without limits, as for Public + Domain property, or may instead opt to use the code under the terms + of the MIT license. + + The MIT licensing terms follow: + ======================================================================== + Copyright (C) 2002, 2004 Christopher Clark <fir...@cl...> + Copyright (c) 2008, 2009 Stephan Beal (http://wanderinghorse.net/home/stephan/) + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation + files (the "Software"), to deal in the Software without + restriction, including without limitation the rights to use, copy, + modify, merge, publish, distribute, sublicense, and/or sell copies + of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + ======================================================================== + (END LICENSE TEXT) + + The MIT license is compatible with both the GPL and commercial + software, affording one all of the rights of Public Domain with the + minor nuisance of being required to keep the above copyright notice + and license text in the source code. Note also that by accepting the + Public Domain "license" you can re-license your copy using whatever + license you like. + */ #ifndef WANDERINGHORSE_NET_WHHASH_H_INCLUDED #define WANDERINGHORSE_NET_WHHASH_H_INCLUDED #include <stddef.h> /* size_t */ @@ -15,7 +71,8 @@ implementation based on code by Christopher Clark, adopted, extended, and changed somewhat by yours truly. - License: New BSD License + License: Dual: Public Domain in jurisdictions which allow it, + or optionally the MIT license. Maintainer: Stephan Beal (http://wanderinghorse.net/home/stephan) Modified: c11n/src/detail/whhash.c =================================================================== --- c11n/src/detail/whhash.c 2009-07-16 21:18:46 UTC (rev 274) +++ c11n/src/detail/whhash.c 2009-07-17 16:46:57 UTC (rev 275) @@ -1,6 +1,53 @@ -/* Copyright (C) 2004 Christopher Clark <fir...@cl...> */ -/* Copyright (C) 2008 Stephan Beal (http://wanderinghorse.net/home/stephan/) */ +/* Copyright (C) 2002, 2004 Christopher Clark <fir...@cl...> */ +/* Copyright (C) 2008, 2009 Stephan Beal (http://wanderinghorse.net/home/stephan/) */ + /* + On 17 June 2009, i (Stephan Beal) got permission from the original author + (Christopher Clark) to dual-license this code under the following terms: + - If the code is used in a jurisdiction where Public Domain + property is regonized, then this code may be considered to be + in the Public Domain. Its author expressly disclaims copyright + in jurisdictions where such a disclaimer is allowed. + + - If the code is used in a jurisdiction which does not recognize + Public Domain, the code must be used in terms with the MIT license, + as described clearly and concisely at: + + http://en.wikipedia.org/wiki/MIT_License + + and reproduced in full below. + + - If the code is used in a jurisdiction which recognizes Public + Domain, the user may use the code without limits, as for Public + Domain property, or may instead opt to use the code under the terms + of the MIT license. + + The MIT licensing terms follow: + ======================================================================== + Copyright (C) 2002, 2004 Christopher Clark <fir...@cl...> + Copyright (c) 2008, 2009 Stephan Beal (http://wanderinghorse.net/home/stephan/) + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation + files (the "Software"), to deal in the Software without + restriction, including without limitation the rights to use, copy, + modify, merge, publish, distribute, sublicense, and/or sell copies + of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + ======================================================================== + #include "s11n.net/c11n/detail/whhash.h" #include <stdlib.h> //#include <stdio.h> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sg...@us...> - 2009-07-16 21:18:50
|
Revision: 274 http://s11n.svn.sourceforge.net/s11n/?rev=274&view=rev Author: sgbeal Date: 2009-07-16 21:18:46 +0000 (Thu, 16 Jul 2009) Log Message: ----------- More API renaming, for consistency with naming conventions. Modified Paths: -------------- c11n/include/s11n.net/c11n/c11n.h c11n/include/s11n.net/c11n/io/c11n_io.h c11n/src/client/c11nconvert/c11nconvert.c c11n/src/client/test/test.c c11n/src/io/c11n_io.c Modified: c11n/include/s11n.net/c11n/c11n.h =================================================================== --- c11n/include/s11n.net/c11n/c11n.h 2009-07-16 17:27:48 UTC (rev 273) +++ c11n/include/s11n.net/c11n/c11n.h 2009-07-16 21:18:46 UTC (rev 274) @@ -153,7 +153,7 @@ ... populate list ... c11n_stream * str = c11n_stream_for_filename( "myfile.c11n", true );//true==write mode -c11n_save_serializable( str, MyList_c11n, &list, 0 ); +c11n_serializable_save( str, MyList_c11n, &list, 0 ); str->api->destroy(str); @endcode @@ -162,7 +162,7 @@ @code c11n_stream * str = c11n_stream_for_filename( "myfile.c11n", false );//false==read mode -MyList * list = c11n_load_serializable( str, MyList_c11n ); +MyList * list = c11n_serializable_load( str, MyList_c11n ); str->api->destroy(str); @endcode @@ -1969,7 +1969,7 @@ c11n_deserialize_new() because this object requires that deserialization take a pointer to a pointer, which c11n_deserialize_new() cannot generically handle. It also - cannot work with c11n_load_serializable() because it cannot + cannot work with c11n_serializable_load() because it cannot know how big of a string to allocate (and then cannot generically handle the pointer-to-pointer part). */ Modified: c11n/include/s11n.net/c11n/io/c11n_io.h =================================================================== --- c11n/include/s11n.net/c11n/io/c11n_io.h 2009-07-16 17:27:48 UTC (rev 273) +++ c11n/include/s11n.net/c11n/io/c11n_io.h 2009-07-16 21:18:46 UTC (rev 274) @@ -650,7 +650,7 @@ friends for loading i/o handlers based on a name or magic cookie. - Normally such a factory is called from c11n_load_node(), which + Normally such a factory is called from c11n_node_load(), which treats the first line of the input stream as a cookie. If it finds a factory for that cookie, it calls the factory (passing it the cookie) to create the object. @@ -746,7 +746,7 @@ - Registered i/o handlers should be designed to be able to parse their input both with and without a leading magic cookie. */ -c11n_node * c11n_load_node( c11n_stream * src ); +c11n_node * c11n_node_load( c11n_stream * src ); /** Tries to save the given node to the given stream using the givne format handler. @@ -759,16 +759,16 @@ node per stream. Subnodes will be written out as part of the src tree. */ -bool c11n_save_node( c11n_stream * dest, c11n_node const * src, c11n_io_handler * h ); +bool c11n_node_save( c11n_stream * dest, c11n_node const * src, c11n_io_handler * h ); /** - Works similarly to c11n_load_node(), except that it goes one step further and tries to + Works similarly to c11n_node_load(), except that it goes one step further and tries to deserialize that node into a new object. If a node can be loaded (as described for - c11n_load_node()) then a new object is created via m->api->create(m). That object + c11n_node_load()) then a new object is created via m->api->create(m). That object is passed to c11n_deserialize(). If the deserialize succeeds then that object is returned, otherwise everything is cleaned up and 0 is returned. */ -void * c11n_load_serializable( c11n_stream * src, c11n_marshaller const * m ); +void * c11n_serializable_load( c11n_stream * src, c11n_marshaller const * m ); /** @@ -776,15 +776,15 @@ Tries to serialize the given src serializable object using the given marshaller. If that succeeds then the resulting node tree is - sent to c11n_save_node(). + sent to c11n_node_save(). - h may be 0; see c11n_save_node() for the behaviour in this case. + h may be 0; see c11n_node_save() for the behaviour in this case. Note that this routine is ONLY for saving top-level objects. That is, one object per stream. Children of src will be written out as part of the serialization of src. */ -bool c11n_save_serializable( c11n_stream * dest, c11n_marshaller const * marshaller, void const * src, c11n_io_handler * h ); +bool c11n_serializable_save( c11n_stream * dest, c11n_marshaller const * marshaller, void const * src, c11n_io_handler * h ); /** Modified: c11n/src/client/c11nconvert/c11nconvert.c =================================================================== --- c11n/src/client/c11nconvert/c11nconvert.c 2009-07-16 17:27:48 UTC (rev 273) +++ c11n/src/client/c11nconvert/c11nconvert.c 2009-07-16 21:18:46 UTC (rev 274) @@ -163,7 +163,7 @@ } whgc_add( ThisApp.gc, writer, gc_c11n_io_handler ); - c11n_node * nodeIn = c11n_load_node( inStream ); + c11n_node * nodeIn = c11n_node_load( inStream ); if( ! nodeIn ) { ERROR("Could not read c11n_node from stdin!"); Modified: c11n/src/client/test/test.c =================================================================== --- c11n/src/client/test/test.c 2009-07-16 17:27:48 UTC (rev 273) +++ c11n/src/client/test/test.c 2009-07-16 21:18:46 UTC (rev 274) @@ -204,7 +204,7 @@ c11n_node * de = c11n_node_create( "deserialized" ); c11n_serialize( TR, de, my2 ); MARKER("c11n_deserialize_new() got:\n"); - c11n_save_node( ThisApp.cout, de, 0 ); + c11n_node_save( ThisApp.cout, de, 0 ); c11n_node_destroy(de); TR->api->destroy(TR,my2); } @@ -220,7 +220,7 @@ c11n_node * de = c11n_node_create( "cloned" ); c11n_serialize( TR, de, my2 ); MARKER("c11n_clone_new() got:\n"); - c11n_save_node( ThisApp.cout, de, 0 ); + c11n_node_save( ThisApp.cout, de, 0 ); c11n_node_destroy(de); TR->api->destroy(TR,my2); } @@ -232,7 +232,7 @@ //c11n_dump_node( N, true ); c11n_stream * o1t = c11n_stream_for_FILE( stdout ); - if( ! c11n_save_node( o1t, N, 0 ) || !c11n_save_node( o1t, MY, 0 )) + if( ! c11n_node_save( o1t, N, 0 ) || !c11n_node_save( o1t, MY, 0 )) { MARKER("test save failed\n"); o1t->api->destroy(o1t); @@ -375,7 +375,7 @@ char const * ofile = "saveload.out"; c11n_stream * ostr = c11n_stream_for_filename( ofile, true ); MARKER("ostr @%p, implData @%p\n",ostr,ostr->implData); - bool rv = c11n_save_node( ostr, bob.root_node, 0 ); + bool rv = c11n_node_save( ostr, bob.root_node, 0 ); ostr->api->destroy(ostr); #if 1 if( ! rv ) @@ -384,16 +384,16 @@ bob.clear(&bob); return -1; } - c11n_save_node( ThisApp.cout, bob.root_node, 0 ); + c11n_node_save( ThisApp.cout, bob.root_node, 0 ); bob.clear(&bob); ostr = c11n_stream_for_filename( ofile, false ); - c11n_node * x = c11n_load_node( ostr ); // + c11n_node * x = c11n_node_load( ostr ); // ostr->api->destroy(ostr); MARKER("x=%p\n",x); if( x ) { MARKER("Loaded x @%p from file %s.\n",x,ofile); - c11n_save_node( ThisApp.cout, x, 0 ); + c11n_node_save( ThisApp.cout, x, 0 ); c11n_node_destroy(x); MARKER("(end of loaded data)\n"); } @@ -472,7 +472,7 @@ c11n_node_destroy( n ); return 1; } - c11n_save_node( ThisApp.cout, n, 0 ); + c11n_node_save( ThisApp.cout, n, 0 ); MyType my2; c11n_binary_data bin; @@ -534,7 +534,7 @@ #if 1 ioh->api->load_node( ioh, strm ) #else - c11n_load_node( strm ) + c11n_node_load( strm ) #endif ; strm->api->destroy(strm); @@ -576,14 +576,14 @@ char const * filename = "MyList.c11n"; c11n_stream * str = c11n_stream_for_filename( filename, true ); c11n_io_handler * h = c11n_io_handler_by_name( "expat" ); - c11n_save_serializable( str, MyList_c11n, head, h ); + c11n_serializable_save( str, MyList_c11n, head, h ); str->api->destroy(str); str = c11n_stream_for_filename( filename, false ); - c11n_node * n = c11n_load_node( str ); + c11n_node * n = c11n_node_load( str ); str->api->destroy(str); assert( n && "Load node failed :("); MARKER("Loaded MyList node tree:\n"); - c11n_save_node( ThisApp.cout, n, 0 ); + c11n_node_save( ThisApp.cout, n, 0 ); MyList_c11n->api->destroy(MyList_c11n,head); head = 0; @@ -591,12 +591,12 @@ c11n_node_destroy(n); assert(head && "deserialize failed :("); MARKER("Deserialized MyList list:\n"); - c11n_save_serializable( ThisApp.cout, MyList_c11n, head, h ); + c11n_serializable_save( ThisApp.cout, MyList_c11n, head, h ); MyList * clone = c11n_clone( MyList_c11n, head ); MyList_c11n->api->destroy(MyList_c11n,head); assert( clone && "Cloning failed :(" ); MARKER("Cloned MyList:\n"); - c11n_save_serializable( ThisApp.cout, MyList_c11n, clone, h ); + c11n_serializable_save( ThisApp.cout, MyList_c11n, clone, h ); MyList_c11n->api->destroy( MyList_c11n, clone ); if( h ) h->api->destroy(h); MARKER("Done testing MyList.\n"); @@ -616,7 +616,7 @@ } c11n_node * n = c11n_node_create( "MyArray" ); c11n_serialize_array( n, MyType_c11n, count, sizeof(MyType), mine ); - c11n_save_node( ThisApp.cout, n, 0 ); + c11n_node_save( ThisApp.cout, n, 0 ); void * ar = 0; size_t decount = c11n_deserialize_array( n, MyType_c11n, sizeof(MyType), &ar ); Modified: c11n/src/io/c11n_io.c =================================================================== --- c11n/src/io/c11n_io.c 2009-07-16 17:27:48 UTC (rev 273) +++ c11n/src/io/c11n_io.c 2009-07-16 21:18:46 UTC (rev 274) @@ -308,7 +308,7 @@ -c11n_node * c11n_load_node( c11n_stream * src ) +c11n_node * c11n_node_load( c11n_stream * src ) { if( ! src ) return 0; c11n_node * n = 0; @@ -364,7 +364,7 @@ return n; } -bool c11n_save_node( c11n_stream * dest, c11n_node const * src, c11n_io_handler * h ) +bool c11n_node_save( c11n_stream * dest, c11n_node const * src, c11n_io_handler * h ) { if( ! src || !dest || !dest->api->isgood(dest) ) return false; bool ownHandler = (h==0); @@ -381,23 +381,23 @@ return rc; } -bool c11n_save_serializable( c11n_stream * dest, c11n_marshaller const * marshaller, void const * src, c11n_io_handler * h ) +bool c11n_serializable_save( c11n_stream * dest, c11n_marshaller const * marshaller, void const * src, c11n_io_handler * h ) { c11n_node * n = c11n_node_create("c11n_root_node"); bool rc = (n!=0); if( rc ) { rc = c11n_serialize( marshaller, n, src ) - && c11n_save_node( dest, n, h ); + && c11n_node_save( dest, n, h ); c11n_node_destroy(n); } return rc; } -void * c11n_load_serializable( c11n_stream * src, c11n_marshaller const * m ) +void * c11n_serializable_load( c11n_stream * src, c11n_marshaller const * m ) { if( ! src || !m ) return 0; - c11n_node * n = c11n_load_node( src ); + c11n_node * n = c11n_node_load( src ); if( ! n ) return 0; void * obj = m->api->create(m); if( !obj || !c11n_deserialize( m, n, obj ) ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sg...@us...> - 2009-07-16 17:27:51
|
Revision: 273 http://s11n.svn.sourceforge.net/s11n/?rev=273&view=rev Author: sgbeal Date: 2009-07-16 17:27:48 +0000 (Thu, 16 Jul 2009) Log Message: ----------- Some API renaming, for consistency with naming conventions. Modified Paths: -------------- c11n/include/s11n.net/c11n/c11n.h c11n/src/c11n/c11n_array.c c11n/src/c11n/c11n_core.c c11n/src/c11n/c11n_pod.c c11n/src/client/test/MyList.c c11n/src/client/test/MyType.c c11n/src/io/c11n_io.c c11n/src/io/c11n_io_handler_binarish.c c11n/src/io/c11n_io_handler_expat.c c11n/src/io/c11n_io_handler_sql.c c11n/tools/createMarshaller.sh Modified: c11n/include/s11n.net/c11n/c11n.h =================================================================== --- c11n/include/s11n.net/c11n/c11n.h 2009-07-16 17:26:29 UTC (rev 272) +++ c11n/include/s11n.net/c11n/c11n.h 2009-07-16 17:27:48 UTC (rev 273) @@ -28,16 +28,16 @@ c11n_nodes (conceptually identical to an XML DOM, though the core library is ignorant of any specific file format). When saving, those nodes are sent to i/o handlers which convert their serialized data -into a specific data format (e.g. XML is a possibility, though no -format handler for XML exists yet). For loading, a format handler -creates a tree of c11n_nodes from an input source then passes it on to -a client-specified marshaller which will then try to interpret the -input tree as an object of the marshaller's supported type. +into a specific data format (e.g. XML is a possibility). For loading, +a format handler creates a tree of c11n_nodes from an input source +then passes it on to a client-specified marshaller which will then try +to interpret the input tree as an object of the marshaller's supported +type. The libs11n (that's S11n, not C11n) library manual covers a number of serialization-related topics in much greater detail than we will go into here, and that manual may be of interest to potential -c11n clients. While the s11n is much different (because C++ allows +c11n clients. While the s11n API is much different (because C++ allows it to be simpler than C does), c11n is conceptually very much a C version of s11n, and 90% of the concepts in that library (and its documentation) apply to this library as well. The s11n library @@ -60,13 +60,14 @@ - De/serialization of any C object for which we can reasonably serialize all relevant data. This includes, e.g., typical client data holder types and tree/list types. This excludes opaque types and -transient data (like socket connections). +transient data (like socket connections, though we can of course +serialize the connection information). - The core library is ignorant of any data format, and client-side serializable objects do not need to know (or care) what format -they're using. (They may not be using a format at all - it might +they're using. They may not be using a format at all - it might be in-memory serialization, which can be used for cloning objects, -clipboard-like features, and such.) +clipboard-like features, and such. - It doesn't do anything tricky with your objects - YOU teach it how to de/serialize them (see the c11n_marshaller class) and then @@ -74,10 +75,10 @@ it can be serialized in any context (a tree or list of such objects, for example). -- The i/o API uses a custom stream class which "should" be capable -of wrapping most common stream types. Implementations exist for -FILE-handle and in-memory streams, and others aren't much work -to integrate as long as the underlying stream implementation supports +- The i/o API uses a custom stream class which "should" be capable of +wrapping most common stream types. Implementations exist for +FILE-handle and in-memory streams, and adding new wrappers isn't much +work as long as the underlying stream implementation supports operations equivalent to fread(), fwrite(), and (optionally) ferror(). - The last time i checked, valgrind (http://valgrind.org) said c11n @@ -139,12 +140,12 @@ } MyList; @endcode -MyList objects represent a singly-linked list. In this case +MyList objects represent a linked list. In this case each list entry contains two values, though for the general case that is irrelevant. With a bit of code in place for converting MyList objects -to/from c11n (we won't show that here), we can sae +to/from c11n (we won't show that here), we can save a MyList list with: @code @@ -228,7 +229,8 @@ marshaller). Instead, they are normally saved as c11n_node properties. Properties are internally stored as strings, and it is trivial to create and parse such strings for any POD type which printf()/scanf() and -friends support [exception: %%s for deserialization is problematic]. +friends support (exception: %%s is problematic during deserialization, and +should not be used). @section c11n_sec_api_patterns API patterns @@ -242,7 +244,7 @@ conventions (e.g. the <tt>vappendf()</tt> family of functions and the <tt>memblob</tt> API.). -- Functions which related to a specific data type normally have that +- Functions which relate to a specific data type normally have that type's name as a prefix and take an object of that type as the first argument. e.g. The functions related to c11n_node are called c11n_node_something(). @@ -424,18 +426,18 @@ /** Returns n's name, or 0 if n is 0 or has no name. - @see c11n_node_set_name() + @see c11n_node_name_set() */ -c11n_const_string_t c11n_node_get_name( c11n_node const * n ); +c11n_const_string_t c11n_node_name_get( c11n_node const * n ); /** Sets the name of n to k. k should follow the same naming conventions as node properties. The string k is copied for internal use. - @see c11n_node_get_name() + @see c11n_node_name_get() */ -void c11n_node_set_name( c11n_node * n, c11n_key_type k ); +void c11n_node_name_set( c11n_node * n, c11n_key_type k ); /** Sets the logical classname of n to k. k should follow the same @@ -443,14 +445,14 @@ as we cannot assume it comes from a static location (and it won't during deserialization). */ -void c11n_node_set_class( c11n_node * n, c11n_key_type k ); +void c11n_node_class_set( c11n_node * n, c11n_key_type k ); /** Returns n's logical class name, as set by - c11n_node_set_class(). The ownership of the returned string is - as described for c11n_node_set_class(). + c11n_node_class_set(). The ownership of the returned string is + as described for c11n_node_class_set(). */ -c11n_const_string_t c11n_node_get_class( c11n_node const * n ); +c11n_const_string_t c11n_node_class_get( c11n_node const * n ); /** Creates a new, empty cerialization context, or 0 if allocation fails. @@ -516,7 +518,7 @@ /** A c11n_node_predicate_f implementation which returns true only if - c11n_node_get_name(n) is lexically equal to the str parameter, + c11n_node_name_get(n) is lexically equal to the str parameter, which MUST be a null-terminated c11n_const_string_t. */ bool c11n_node_predicate_name_is( c11n_node const * n, void const * str ); @@ -1046,24 +1048,30 @@ is subject to the specific deserialization requirements of CT. If this routine allocates any dynamic memory and does not - succeed, it is responsible for freeing that memory. The - function MUST NOT free the dest object, however, as it is owned - by whomever calls this routine in the first place. + succeed at deserializing, it is responsible for freeing that + memory before it returns. The function MUST NOT free the dest + object, however, as it is owned by whomever calls this routine + in the first place. For types which dynamically allocate memory during deserialization, the following guidelines should *really* be followed: - Before starting deserialization, clean up any existing data. This avoids, e.g., leaking memory by overwriting a dynamically - allocated object's pointer, or duplicating list entries or - some such. + allocated object's pointer, or duplicating list entries or some + such. In most use cases, deserialize is never called more than + once for any given object, but it is possible to call it + multiple times (e.g. populating a message object which + deserializes from a stream in a loop), so it is prudent to + clean up before deserialization starts. - If the deserialization fails then the object should clean up as much as humanly/computerly possible before returning. When deserialized is called from c11n_deserialize(), destroy() will be called and passed the dest object, but if client code calls this routine directly there is no guaranty that the destructor - will be called after a failed deserialization. + will be called after a failed deserialization. Thus this routine + should clean up when it can. */ bool (*deserialize)( struct c11n_marshaller const * self, c11n_node const *src, void * dest ); @@ -1082,6 +1090,13 @@ depending on what they're dealing with (e.g. the various c11n_marshaller_pod_xxx marshallers use a single back end which allocates depending on the type of pod). + + When returning structs, it is considered good practice to return + one which has been initialized to some valid (though probably + semantically empty) state. This is especially important if + the struct contains pointers, as those pointers may otherwise + contain uninitialized values which may be confused as pointer + addresses by downstream code. */ void * (*create)( struct c11n_marshaller const * self); @@ -1095,10 +1110,8 @@ function must be properly implemented or leaks may result if serialization fails. - For POD CT types the default implementation - (c11n_marshaller_api_clear()) does nothing, though a "real" - implementation would probably set the POD to some default value - (probably 0). + For POD CT types, an implementation should probably set the POD + to some default value (probably 0). Additionally, deserialize() implementations may wish to call this function to do any pre-deserialization cleanup (see @@ -1114,16 +1127,17 @@ The default implementation is c11n_marshaller_api_destroy(), which is fine for POD types but not for, e.g.: - - many structs (which may own child objects) + - any structs which hold child objects or pointers. - linked list entries (which may need to unlink themselves from neighbors when they are destroyed). */ void (*destroy)( struct c11n_marshaller const * self, void * obj ); /** - Returns true this marshaller can handle de/serialization of + Returns true if this marshaller can handle de/serialization of objects with the given class name. In other words, if the - marshall can (at least conceptually) treat CT as-a classname type. + marshall can (at least conceptually) treat CT as-a classname + type. The default implementation (c11n_marshaller_api_is_a()) is suitable for most purposes. @@ -1137,18 +1151,6 @@ implData can be used to store private data required by the implementation functions. - The reason for this member is because C99's "strict aliasing" - rules won't let us legally treat a (c11n_marshaller*) as-a - (c11n_marshaller_some_subclass*) - even if we know that they're - the same object (at the same address), C99 explicitly specifies - that the addresses of the "base" and the "subclass" MAY be the - same or MAY be different. For implementations which don't mind - that legality, it is normally simpler to store private data in - implementation-specific variables. For those who do mind it, - this member can be pointed to some data required by the - implementation. In any case, client-side usage of the library - doesn't change either way. - For an example of how this can be used, see c11n.c and grep for "c11n_marshaller_pod_api". */ Modified: c11n/src/c11n/c11n_array.c =================================================================== --- c11n/src/c11n/c11n_array.c 2009-07-16 17:26:29 UTC (rev 272) +++ c11n/src/c11n/c11n_array.c 2009-07-16 17:27:48 UTC (rev 273) @@ -89,7 +89,7 @@ METADECLC(false); if( ! dest || !meta->count || !meta->sizeOf || !src ) return false; c11n_marshaller const * m = meta->marshaller; - c11n_node_set_class( dest, "array" ); + c11n_node_class_set( dest, "array" ); c11n_node_prop_set( dest, "type", m->api->classname ); c11n_node_prop_set_fe( dest, "sizeof", "%u", meta->sizeOf ); size_t at = 0; @@ -114,12 +114,12 @@ METADECL(false); c11n_marshaller const * m = meta->marshaller; if( ! m ) return false; - c11n_const_string_t cn = c11n_node_get_class(src); + c11n_const_string_t cn = c11n_node_class_get(src); if( !c11n_compare_str( "array", cn ) ) { C11N_LOG(C11N_LOG_ERROR)("Deserialize of (%s array) from (c11n_node@%p[class=%s, name=%s]) failed because " "it was apparently not serialized using c11n_serialize_array() :(.", - m->api->classname, src, c11n_node_get_class(src), c11n_node_get_name(src) ); + m->api->classname, src, c11n_node_class_get(src), c11n_node_name_get(src) ); return 0; } c11n_const_string_t implClass = 0; @@ -129,7 +129,7 @@ { C11N_LOG(C11N_LOG_ERROR)("Deserialize of (%s array) from (c11n_node@%p[class=%s, name=%s]) failed because " "its stored stored type name (%s) does not match the marshaller :(.", - m->api->classname, src, c11n_node_get_class(src), c11n_node_get_name(src), + m->api->classname, src, c11n_node_class_get(src), c11n_node_name_get(src), implClass ); return 0; } @@ -139,14 +139,14 @@ { C11N_LOG(C11N_LOG_ERROR)("Deserialize of (%s array) from (c11n_node@%p[class=%s, name=%s]) failed because " "the sizeof property was not set :(.", - m->api->classname, src, c11n_node_get_class(src), c11n_node_get_name(src) ); + m->api->classname, src, c11n_node_class_get(src), c11n_node_name_get(src) ); return 0; } if( sizeCheck != meta->sizeOf ) { C11N_LOG(C11N_LOG_WARNING)("Deserialize of (%s array) from (c11n_node@%p[class=%s, name=%s]): " "sizeof(%s) has changed since the data was serialized (old=%u, new=%u).", - m->api->classname, src, c11n_node_get_class(src), c11n_node_get_name(src), + m->api->classname, src, c11n_node_class_get(src), c11n_node_name_get(src), m->api->classname, sizeCheck, meta->sizeOf ); /* keep going... */ } @@ -163,7 +163,7 @@ { C11N_LOG(C11N_LOG_ERROR)("Deserialize of (%s array) from (c11n_node@%p[class=%s, name=%s]) failed because " "the c11n_node contains no children to deserialize :(.", - m->api->classname, src, c11n_node_get_class(src), c11n_node_get_name(src) ); + m->api->classname, src, c11n_node_class_get(src), c11n_node_name_get(src) ); return 0; } void * mal = calloc( count, meta->sizeOf ); @@ -192,7 +192,7 @@ { C11N_LOG(C11N_LOG_ERROR)("Deserialize of (%s array)[#%u] from (c11n_node@%p[class=%s, name=%s]) failed :(.", implClass, decount, iter.node, - c11n_node_get_class( iter.node ), c11n_node_get_name( iter.node ) + c11n_node_class_get( iter.node ), c11n_node_name_get( iter.node ) ); isokay = false; break; @@ -292,7 +292,7 @@ c11n_array_info inf = c11n_array_info_s( m, count, sizeOf, src ); return c11n_serialize( &c11n_array_info_marshaller, dest, &inf ); #else - c11n_node_set_class( dest, "array" ); + c11n_node_class_set( dest, "array" ); c11n_node_prop_set( dest, "type", m->api->classname ); c11n_node_prop_set_fe( dest, "sizeof", "%u", sizeOf ); size_t at = 0; @@ -331,12 +331,12 @@ } return inf.count; #else - c11n_const_string_t cn = c11n_node_get_class(src); + c11n_const_string_t cn = c11n_node_class_get(src); if( !c11n_compare_str( "array", cn ) ) { C11N_LOG(C11N_LOG_ERROR)("Deserialize of (%s array) from (c11n_node@%p[class=%s, name=%s]) failed because " "it was apparently not serialized using c11n_serialize_array() :(.", - m->api->classname, src, c11n_node_get_class(src), c11n_node_get_name(src) ); + m->api->classname, src, c11n_node_class_get(src), c11n_node_name_get(src) ); return 0; } c11n_const_string_t implClass = 0; @@ -346,7 +346,7 @@ { C11N_LOG(C11N_LOG_ERROR)("Deserialize of (%s array) from (c11n_node@%p[class=%s, name=%s]) failed because " "its stored stored type name (%s) does not match the marshaller :(.", - m->api->classname, src, c11n_node_get_class(src), c11n_node_get_name(src), + m->api->classname, src, c11n_node_class_get(src), c11n_node_name_get(src), implClass ); return 0; } @@ -356,14 +356,14 @@ { C11N_LOG(C11N_LOG_ERROR)("Deserialize of (%s array) from (c11n_node@%p[class=%s, name=%s]) failed because " "the sizeof property was not set :(.", - m->api->classname, src, c11n_node_get_class(src), c11n_node_get_name(src) ); + m->api->classname, src, c11n_node_class_get(src), c11n_node_name_get(src) ); return 0; // FIXME: log a message } if( sizeCheck != sizeOf ) { C11N_LOG(C11N_LOG_WARNING)("Deserialize of (%s array) from (c11n_node@%p[class=%s, name=%s]): " "sizeof(%s) has changed since the data was serialized (old=%u, new=%u).", - m->api->classname, src, c11n_node_get_class(src), c11n_node_get_name(src), + m->api->classname, src, c11n_node_class_get(src), c11n_node_name_get(src), m->api->classname, sizeCheck, sizeOf ); /* keep going... */ } @@ -380,7 +380,7 @@ { C11N_LOG(C11N_LOG_ERROR)("Deserialize of (%s array) from (c11n_node@%p[class=%s, name=%s]) failed because " "the c11n_node contains no children to deserialize :(.", - m->api->classname, src, c11n_node_get_class(src), c11n_node_get_name(src) ); + m->api->classname, src, c11n_node_class_get(src), c11n_node_name_get(src) ); return 0; } @@ -410,7 +410,7 @@ { C11N_LOG(C11N_LOG_ERROR)("Deserialize of (%s array)[#%u] from (c11n_node@%p[class=%s, name=%s]) failed :(.", implClass, decount, iter.node, - c11n_node_get_class( iter.node ), c11n_node_get_name( iter.node ) + c11n_node_class_get( iter.node ), c11n_node_name_get( iter.node ) ); isokay = false; break; Modified: c11n/src/c11n/c11n_core.c =================================================================== --- c11n/src/c11n/c11n_core.c 2009-07-16 17:26:29 UTC (rev 272) +++ c11n/src/c11n/c11n_core.c 2009-07-16 17:27:48 UTC (rev 273) @@ -12,10 +12,10 @@ c11n_node_prop_get, c11n_node_prop_get_fv, c11n_node_prop_get_fe, - c11n_node_set_name, - c11n_node_get_name, - c11n_node_set_class, - c11n_node_get_class + c11n_node_name_set, + c11n_node_name_get, + c11n_node_class_set, + c11n_node_class_get }; struct c11n_context @@ -641,7 +641,7 @@ bool c11n_serialize( c11n_marshaller const * traits, c11n_node * dest, void const * src ) { if( !dest || !traits || !src ) return false; - c11n_node_set_class( dest, traits->api->classname ); + c11n_node_class_set( dest, traits->api->classname ); return traits->api->serialize( traits, dest, src ); } @@ -670,7 +670,7 @@ bool c11n_node_predicate_name_is( c11n_node const * n1, void const * str ) { - return c11n_compare_str( c11n_node_get_name(n1), (c11n_const_string_t)str ); + return c11n_compare_str( c11n_node_name_get(n1), (c11n_const_string_t)str ); } c11n_node * c11n_node_children_search( c11n_node * p, c11n_node_predicate_f f, void const * fArg ) @@ -701,10 +701,10 @@ if ( !dest || !traits || !src ) return false; #if 1 // This is highly arguable: - if( ! traits->api->is_a( traits, c11n_node_get_class(src) ) ) + if( ! traits->api->is_a( traits, c11n_node_class_get(src) ) ) { C11N_LOG(C11N_LOG_WARNING)("Type mismatch: node of type [%s] vs marshaller for type [%s]", - c11n_node_get_class(src), traits->api->classname ); + c11n_node_class_get(src), traits->api->classname ); return false; } #endif @@ -801,11 +801,11 @@ } #endif -c11n_const_string_t c11n_node_get_name( c11n_node const * n ) +c11n_const_string_t c11n_node_name_get( c11n_node const * n ) { return n ? n->name : 0; } -void c11n_node_set_name( c11n_node * n, c11n_key_type k ) +void c11n_node_name_set( c11n_node * n, c11n_key_type k ) { if( n ) { @@ -814,12 +814,12 @@ } } -c11n_const_string_t c11n_node_get_class( c11n_node const * n ) +c11n_const_string_t c11n_node_class_get( c11n_node const * n ) { return n ? n->classname : 0; } -void c11n_node_set_class( c11n_node * n, c11n_key_type k ) +void c11n_node_class_set( c11n_node * n, c11n_key_type k ) { if( n ) { @@ -892,7 +892,7 @@ if( n ) { *n = c11n_node_init; - c11n_node_set_name( n, name ); + c11n_node_name_set( n, name ); } return n; } @@ -1048,8 +1048,8 @@ if( ! c ) return; if(1) printf("c11n_node[@%p]: name=[%s] classname=[%s] (\n", (void*)c, /* the cast is for gcc -std=c99 -pedantic */ - c11n_node_get_name(c), - c11n_node_get_class(c) ); + c11n_node_name_get(c), + c11n_node_class_get(c) ); if( c->kvp.count ) { puts("properties=("); @@ -1085,8 +1085,8 @@ //MARKER; printf(") end c11n_node[@%p]: name=[%s] classname=[%s]\n", (void*)c, /* the cast is for gcc -std=c99 -pedantic */ - c11n_node_get_name(c), - c11n_node_get_class(c) ); + c11n_node_name_get(c), + c11n_node_class_get(c) ); } } Modified: c11n/src/c11n/c11n_pod.c =================================================================== --- c11n/src/c11n/c11n_pod.c 2009-07-16 17:26:29 UTC (rev 272) +++ c11n/src/c11n/c11n_pod.c 2009-07-16 17:27:48 UTC (rev 273) @@ -84,7 +84,7 @@ { if( ! src || !dest ) return false; POD_CHECK(false); - c11n_node_set_class( dest, POD_INFO->name ); + c11n_node_class_set( dest, POD_INFO->name ); #define DOPOD(PT,T) if(POD_ISA(PT)){ \ T * v = (T *)src;\ @@ -112,17 +112,17 @@ { if( ! self || !src || !dest ) return false; POD_CHECK(false); - if( ! self->api->is_a( self, c11n_node_get_class(src) ) ) + if( ! self->api->is_a( self, c11n_node_class_get(src) ) ) { c11n_log(C11N_LOG_FLAGS(C11N_LOG_WARNING), "Classname doesn't match: [%s] != [%s]", - c11n_node_get_class(src), self->api->classname ); + c11n_node_class_get(src), self->api->classname ); return false; } c11n_const_string_t dv = 0; if( !c11n_node_prop_get( src, "val", &dv ) || !dv ) return false; - if( ! self->api->is_a(self,c11n_node_get_class(src)) ) return false; + if( ! self->api->is_a(self,c11n_node_class_get(src)) ) return false; #define DOPOD(PT,T) if(POD_ISA(PT)){ \ T tmp = 0;\ Modified: c11n/src/client/test/MyList.c =================================================================== --- c11n/src/client/test/MyList.c 2009-07-16 17:26:29 UTC (rev 272) +++ c11n/src/client/test/MyList.c 2009-07-16 17:27:48 UTC (rev 273) @@ -23,7 +23,7 @@ */ static bool MyList_serialize_one( MyList const * g, c11n_node * dest ) { - c11n_node_set_class( dest, "MyListItem" ); + c11n_node_class_set( dest, "MyListItem" ); c11n_node_prop_set_fe( dest, "xy", "%d %d", g->x, g->y ); return true; } @@ -35,14 +35,14 @@ */ static bool MyList_serialize( struct c11n_marshaller const * self, c11n_node * dest, void const * src ) { - c11n_node_set_class( dest, self->api->classname ); + c11n_node_class_set( dest, self->api->classname ); MyList const * me = (MyList const *)src; MyList const * h = me; while( h->left ) h = h->left; MyList const * at = h; c11n_node * nlist = c11n_node_create_child( dest, "items" ); - c11n_node_set_class( nlist, "MyListList" ); + c11n_node_class_set( nlist, "MyListList" ); while( at ) { MARKER("Serializing MyList item @%p...\n",(void const *)at); Modified: c11n/src/client/test/MyType.c =================================================================== --- c11n/src/client/test/MyType.c 2009-07-16 17:26:29 UTC (rev 272) +++ c11n/src/client/test/MyType.c 2009-07-16 17:27:48 UTC (rev 273) @@ -1,3 +1,6 @@ +/** + Demonstration c11n_marshaller implementation. +*/ #include "MyType.h" #include <stdlib.h> #include <stdio.h> @@ -8,37 +11,53 @@ #define if(0) printf #endif +/** + MyType_use_fat_properties determines how the x/y properties of MyType + objects are stored. "fat" mode uses one property entry each for x and y, + whereas "non-fat" encodes x/y into a single property. +*/ +static const bool MyType_use_fat_properties = false; static bool MyType_serialize( struct c11n_marshaller const * self, c11n_node * dest, void const * src ) { MyType const * me = (MyType const *)src; - c11n_node_set_class( dest, self->api->classname ); + c11n_node_class_set( dest, self->api->classname ); //c11n_marshaller const * TR = c11n_marshaller_pod_int; -#if 0 - return c11n_node_prop_set_fe( dest, "x", "%d", me->x ) - && c11n_node_prop_set_fe( dest, "y", "%d", me->y ); -#else - return c11n_node_prop_set_fe( dest, "xy", "%d %d", me->x, me->y ); -#endif + if( MyType_use_fat_properties ) + { + return c11n_node_prop_set_fe( dest, "x", "%d", me->x ) + && c11n_node_prop_set_fe( dest, "y", "%d", me->y ); + } + else + { + return c11n_node_prop_set_fe( dest, "xy", "%d %d", me->x, me->y ); + } } + static bool MyType_deserialize( struct c11n_marshaller const * self, c11n_node const *src, void * dest ) { MyType * me = (MyType *)dest; me->x = -42; me->y = -24; -#if 0 - bool rc = (0 < c11n_node_prop_get_fe( src, "x", "%d", &me->x )) - && - (0 < c11n_node_prop_get_fe( src, "y", "%d", &me->y )); -#else - bool rc = 0 < c11n_node_prop_get_fe( src, "xy", "%d%d", &me->x, &me->y ); -#endif + bool rc; + if( MyType_use_fat_properties ) + { + rc = (0 < c11n_node_prop_get_fe( src, "x", "%d", &me->x )) + && + (0 < c11n_node_prop_get_fe( src, "y", "%d", &me->y )); + } + else + { + rc = 0 < c11n_node_prop_get_fe( src, "xy", "%d%d", &me->x, &me->y ); + } MARKER("me->x=%d me->y=%d\n",me->x,me->y); return rc; } + static void * MyType_create( struct c11n_marshaller const * self) { return malloc(sizeof(MyType)); } + static void MyType_clear( struct c11n_marshaller const * self, void * obj ) { if( !self || !obj ) return; Modified: c11n/src/io/c11n_io.c =================================================================== --- c11n/src/io/c11n_io.c 2009-07-16 17:26:29 UTC (rev 272) +++ c11n/src/io/c11n_io.c 2009-07-16 17:27:48 UTC (rev 273) @@ -123,7 +123,7 @@ { c11n_node * n = c11n_node_create_child( self->current_node, nodename ); if( !n ) return false; - if( classname ) c11n_node_set_class( n, classname ); + if( classname ) c11n_node_class_set( n, classname ); if( 1 == ++self->current_depth ) { self->root_node = self->current_node = n; Modified: c11n/src/io/c11n_io_handler_binarish.c =================================================================== --- c11n/src/io/c11n_io_handler_binarish.c 2009-07-16 17:26:29 UTC (rev 272) +++ c11n/src/io/c11n_io_handler_binarish.c 2009-07-16 17:27:48 UTC (rev 273) @@ -191,9 +191,9 @@ WF( dest, lenfmt, (int) len ); \ WF( dest, key, len ) - key = c11n_node_get_name( src ); + key = c11n_node_name_get( src ); WLV(impl->keySizeLen); - key = c11n_node_get_class( src ); + key = c11n_node_class_get( src ); WLV(impl->keySizeLen); #if 1 @@ -421,12 +421,12 @@ // Get node name: if( ! binarish_read_sized_token( self, impl->keySizeLen ) ) return false; - c11n_node_set_name( impl->bld.current_node, TOKEN ); + c11n_node_name_set( impl->bld.current_node, TOKEN ); SHOWTOKEN; // Get node classname: if( ! binarish_read_sized_token( self, impl->keySizeLen ) ) return false; - c11n_node_set_class( impl->bld.current_node, TOKEN ); + c11n_node_class_set( impl->bld.current_node, TOKEN ); SHOWTOKEN; // Look for an opener of some sort or a node closer: Modified: c11n/src/io/c11n_io_handler_expat.c =================================================================== --- c11n/src/io/c11n_io_handler_expat.c 2009-07-16 17:26:29 UTC (rev 272) +++ c11n/src/io/c11n_io_handler_expat.c 2009-07-16 17:27:48 UTC (rev 273) @@ -89,7 +89,7 @@ #define WF c11n_stream_writef c11n_stream * dest = impl->stream; char const * tabs = memblob_size(impl->tabs) ? memblob_bufferc( impl->tabs ) : ""; - WF( dest, "%s<%s class='%s'>\n", tabs, c11n_node_get_name( src ), c11n_node_get_class(src), impl->indentLevel ); + WF( dest, "%s<%s class='%s'>\n", tabs, c11n_node_name_get( src ), c11n_node_class_get(src), impl->indentLevel ); #if 1 c11n_prop_iter piter = c11n_node_prop_iter(src); if( c11n_prop_iter_isvalid( &piter ) ) @@ -126,7 +126,7 @@ tabs = memblob_size(impl->tabs) ? memblob_bufferc( impl->tabs ) : ""; /* might have been invalidated. */ } #endif - WF( dest, "%s</%s>\n", tabs, c11n_node_get_name( src ) ); + WF( dest, "%s</%s>\n", tabs, c11n_node_name_get( src ) ); #undef WF #undef W //memblob_null_terminate( impl->tabs ); Modified: c11n/src/io/c11n_io_handler_sql.c =================================================================== --- c11n/src/io/c11n_io_handler_sql.c 2009-07-16 17:26:29 UTC (rev 272) +++ c11n/src/io/c11n_io_handler_sql.c 2009-07-16 17:27:48 UTC (rev 273) @@ -110,9 +110,9 @@ k = (char const *) sqlite3_column_text(stmt,1); c11n_node_prop_set( n, ".pid", k ); k = (char const *) sqlite3_column_text(stmt,2); - c11n_node_set_name( n, k ); + c11n_node_name_set( n, k ); k = (char const *) sqlite3_column_text(stmt,3); - c11n_node_set_class( n, k ); + c11n_node_class_set( n, k ); rc = sqlite3_step(stmt); } sqlite3_finalize(stmt); @@ -294,8 +294,8 @@ "VALUES (%u,%u,%Q,%Q);\n", PUL(src), PUL((par?par:0)), - c11n_node_get_name(src), - c11n_node_get_class(src) ); + c11n_node_name_get(src), + c11n_node_class_get(src) ); c11n_prop_iter piter = c11n_node_prop_iter(src); while( c11n_prop_iter_isvalid( &piter ) ) Modified: c11n/tools/createMarshaller.sh =================================================================== --- c11n/tools/createMarshaller.sh 2009-07-16 17:26:29 UTC (rev 272) +++ c11n/tools/createMarshaller.sh 2009-07-16 17:27:48 UTC (rev 273) @@ -30,7 +30,7 @@ #if !defined(${guard}) #define ${guard} 1 -#include "c11n.h" +#include <s11n.net/c11n/c11n.h> #ifdef __cplusplus extern "C" { @@ -61,8 +61,8 @@ cat <<END_OF_SOURCE /* This is generated code for use in serializing ${class} objects -using the c11n API. Search this file for TODO and OPTIONAL to find -the places which need to be filled out. +using the c11n API. Search this file for TODO to find the +places which need to be implemented by the client. */ #include <stdlib.h> /* malloc()/free() */ #include "${ofh}" @@ -73,16 +73,17 @@ /** Serialization implementation for ${class} objects. - No arguments may be 0. v must be-a pointer to a ${class} object. + No arguments may be 0. src must be-a pointer to a ${class} object. */ static bool ${marshaller}_serialize( c11n_marshaller const * self, c11n_node * dest, void const * src ) { if( !self || !dest || !src ) return false; - c11n_node_set_class( dest, self->api->classname ); + c11n_node_class_set( dest, self->api->classname ); + ${class} const * Src = (${class} const *)src; /** TODO: - Store whatever data from src you want into dest. Return true + Store whatever data from Src you want into dest. Return true on success, false on error. */ return false; @@ -91,17 +92,19 @@ /** Deserialization implementation for ${class} objects. - No arguments may be 0. v must be-a pointer to a ${class} object. + No arguments may be 0. dest must be-a pointer to a ${class} object. */ static bool ${marshaller}_deserialize( c11n_marshaller const * self, c11n_node const * src, void * dest ) { if( !self || !dest || !src ) return false; - if( ! c11n_compare_str( self->api->classname, c11n_node_get_class(src) ) ) + if( ! c11n_compare_str( self->api->classname, c11n_node_class_get(src) ) ) { /* type mismatch? */ return false; } + ${class} * Dest = (${class} *)dest; + self->api->clear( self, dest ); /** - TODO: Restore whatever data from src you want into dest. + TODO: Restore whatever data from src you want into Dest. Be sure to: @@ -122,6 +125,7 @@ { if( self && v ) { + ${class} * src = (${class} *)v; /** TODO: @@ -140,6 +144,7 @@ if( self ) { self->api->clear( self, v ); + ${class} * src = (${class} *)v; /** TODO: @@ -155,7 +160,7 @@ */ static void * ${marshaller}_create( c11n_marshaller const * self ) { - ${class} * m = self ? ((${class}*)malloc(sizeof(${class}))) : 0; + ${class} * m = self ? ((${class}*)malloc(sizeof(${class}))) : NULL; if( m ) { self->api->clear( self, m ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sg...@us...> - 2009-07-16 17:26:33
|
Revision: 272 http://s11n.svn.sourceforge.net/s11n/?rev=272&view=rev Author: sgbeal Date: 2009-07-16 17:26:29 +0000 (Thu, 16 Jul 2009) Log Message: ----------- Minor typo fix. Modified Paths: -------------- c11n/configure.libc11n Modified: c11n/configure.libc11n =================================================================== --- c11n/configure.libc11n 2009-06-02 21:10:18 UTC (rev 271) +++ c11n/configure.libc11n 2009-07-16 17:26:29 UTC (rev 272) @@ -19,7 +19,7 @@ toc2_export C11N_IO_USE_SQLITE3=1 toc2_export_make C11N_IO_SQLITE3_LDFLAGS="-lsqlite3" else - echo "Found sqlite3.h. Disabling sql support." + echo "Didn't find sqlite3.h. Disabling sql support." toc2_export C11N_IO_USE_SQLITE3=0 fi else This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: stephan b. <sg...@us...> - 2009-06-04 10:01:52
|
Update of /cvsroot/s11n/1.1/s11n/contrib/build/scons In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv23858/contrib/build/scons Added Files: SConscripts.py SConstruct Log Message: added SCons build files from Damien. --- NEW FILE: SConstruct --- import os import sys import platform projdir = os.getcwd() baseenv = Environment(ENV = os.environ) baseenv['PROJDIR'] = projdir baseenv['BUILDDIR'] = '#bld' baseenv['LIBDIR'] = '#lib' baseenv['BINDIR'] = '#bin' Export('baseenv') SConscript('SConscripts.py', build_dir = baseenv['BUILDDIR'], duplicate = 0) --- NEW FILE: SConscripts.py --- import os Import('baseenv') #cppinclude = ['#s11n'] #baseenv.Append(CPPPATH = cppinclude) SConscript('s11n.net/src/SConscriptS11dynlib.py', build_dir = 's11n.net/bld', duplicate = 0) SConscript('serialise_test/SConscriptRadford.py', build_dir = 'serialise_test/bld', duplicate = 0) |
From: stephan b. <sg...@us...> - 2009-06-04 10:01:47
|
Update of /cvsroot/s11n/1.1/s11n/contrib/build/scons/s11n.net/src In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv23858/contrib/build/scons/s11n.net/src Added Files: SConscriptS11Convert.py SConscriptS11dynlib.py Log Message: added SCons build files from Damien. --- NEW FILE: SConscriptS11dynlib.py --- #SConscript file Import('baseenv') #This loops over and prints all the environment variables #dict = env.Dictionary() #keys = dict.keys() #keys.sort() #for key in keys: # print "construction variable = '%s', value = '%s'" % (key, dict[key]) s11env = baseenv.Clone() s11env.Append(CPPPATH = '#s11n.net/include') if s11env['PLATFORM'] == 'win32': s11env.Append(CPPDEFINES = ['WIN32', 'S11N_EXPORTS']) s11env.Append(CXXFLAGS = ['/EHsc', '/Zi']) s11env.Append(LINKFLAGS = ['/DEBUG']) sources = Split(''' exception.cpp s11n.cpp s11n_node.cpp compact.flex.cpp compact_serializer.cpp data_node_io.cpp funtxt.flex.cpp funtxt_serializer.cpp funxml.flex.cpp funxml_serializer.cpp parens.flex.cpp parens_serializer.cpp path_finder.cpp plugin.cpp s11nlite.cpp simplexml.flex.cpp simplexml_serializer.cpp strtool.cpp wesnoth.flex.cpp wesnoth_serializer.cpp ''') s11ndll = s11env.SharedLibrary('s11n', sources) s11ndllinstall = s11env.Install(baseenv['LIBDIR'], s11ndll) s11ndllinstall2 = s11env.Install(baseenv['BINDIR'], s11ndll) Default(s11ndllinstall + s11ndllinstall2) # #sources = Split(''' #exception.cpp #s11n.cpp #s11n_node.cpp #data_node_io.cpp #parens.flex.cpp #parens_serializer.cpp #path_finder.cpp #plugin.cpp #s11nlite.cpp #strtool.cpp #''') # #sources2 = Split(''' #compact.flex.cpp #compact_serializer.cpp #''') # #sources3 = Split(''' #funtxt.flex.cpp #funtxt_serializer.cpp #''') # #sources4 = Split(''' #funxml.flex.cpp #funxml_serializer.cpp #''') # #sources5 = Split(''' #simplexml.flex.cpp #simplexml_serializer.cpp #''') # #sources6 = Split(''' #wesnoth.flex.cpp #wesnoth_serializer.cpp #''') # #s11ndll = s11env.SharedLibrary('s11n', sources) #s11ndllinstall = s11env.Install(baseenv['LIBDIR'], s11ndll) #s11ndllinstall2 = s11env.Install(baseenv['BINDIR'], s11ndll) # #compactdll = s11env.SharedLibrary('s11n', sources2) #compactdllinstall = s11env.Install(baseenv['LIBDIR'], s11ndll) #compactdllinstall2 = s11env.Install(baseenv['BINDIR'], s11ndll) # #funtxtdll = s11env.SharedLibrary('s11n', sources3) #funtxtdllinstall = s11env.Install(baseenv['LIBDIR'], s11ndll) #funtxtdllinstall2 = s11env.Install(baseenv['BINDIR'], s11ndll) # #funxmldll = s11env.SharedLibrary('s11n', sources4) #funxmldllinstall = s11env.Install(baseenv['LIBDIR'], s11ndll) #funxmldllinstall2 = s11env.Install(baseenv['BINDIR'], s11ndll) # #simpxmldll = s11env.SharedLibrary('s11n', sources5) #simpxmldllinstall = s11env.Install(baseenv['LIBDIR'], s11ndll) #s11ndllinstall2 = s11env.Install(baseenv['BINDIR'], s11ndll) # #wesnothdll = s11env.SharedLibrary('s11n', source6) #wesnothdllinstall = s11env.Install(baseenv['LIBDIR'], s11ndll) #wesnothdllinstall2 = s11env.Install(baseenv['BINDIR'], s11ndll) # #Default(s11ndllinstall + s11ndllinstall2 + # compactdllinstall + compactdllinstall2 + # funtxtdllinstall + funtxtdllinstall2 + # funxmldllinstall + funxmldllinstall2 + # simpxmldllinstall + simpxmldllinstall2 + # wesnothdllinstall + wesnothdllinstall2) # --- NEW FILE: SConscriptS11Convert.py --- #SConscript file Import('baseenv') #This loops over and prints all the environment variables #dict = env.Dictionary() #keys = dict.keys() #keys.sort() #for key in keys: # print "construction variable = '%s', value = '%s'" % (key, dict[key]) s11env = baseenv.Clone() s11env.Append(CPPPATH = r'#3rdparty/s11n.net/include') s11env.Append(CPPDEFINES = 'WIN32') convertsources = Split(''' argv_parser.cpp main.cpp ''') s11env['LIBS'] = s11env['LIBS'] + ['s11n'] s11convertexe = s11env.Program('s11convert', convertsources) s11convertexeinstall = s11env.Install(baseenv['BINDIR'], s11convertexe) Default(s11convertexeinstall) |
From: stephan b. <sg...@us...> - 2009-06-04 10:01:47
|
Update of /cvsroot/s11n/1.1/s11n In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv23858 Added Files: create_scons.sh Log Message: added SCons build files from Damien. --- NEW FILE: create_scons.sh --- #!/bin/bash # Creates a FreeBSD source tree. gen1=./create_generated_tree.sh oldtgtdir=nobuildfiles # must be the same as in $gen1 test -d ${oldtgtdir} || { $gen1 || exit } test -d ${oldtgtdir} || { echo "Missing required directory (output from $gen1): $oldtgtdir" exit 127 } version="$(./libs11n-config --version)" tgtname="libs11n-${version}-src-scons" tgtdir=${tgtname} test -d $tgtdir && rm -fr $tgtdir cp -rp $oldtgtdir $tgtdir rm $tgtdir/src/Makefile* stgt=$tgtdir/s11n.net mkdir -p $stgt mv $tgtdir/src $stgt mv $tgtdir/include $stgt cp -vp contrib/build/scons/SC* $tgtdir/. cp -vp contrib/build/scons/s11n.net/src/SC* $stgt/src/. tarball=${tgtname}.tar.bz2 tar cjf ${tarball} ${tgtdir} echo "Done. Tarball=" ls -la ${tarball} |
From: stephan b. <sg...@us...> - 2009-06-04 10:00:44
|
Update of /cvsroot/s11n/1.1/s11n/contrib/build/scons/s11n.net/src In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv23530/src Log Message: Directory /cvsroot/s11n/1.1/s11n/contrib/build/scons/s11n.net/src added to the repository |
From: stephan b. <sg...@us...> - 2009-06-04 10:00:25
|
Update of /cvsroot/s11n/1.1/s11n/contrib/build/scons/s11n.net In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv23327/s11n.net Log Message: Directory /cvsroot/s11n/1.1/s11n/contrib/build/scons/s11n.net added to the repository |
From: stephan b. <sg...@us...> - 2009-06-04 10:00:15
|
Update of /cvsroot/s11n/1.1/s11n/contrib/build/scons In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv23226/scons Log Message: Directory /cvsroot/s11n/1.1/s11n/contrib/build/scons added to the repository |
From: <sg...@us...> - 2009-06-02 21:10:31
|
Revision: 271 http://s11n.svn.sourceforge.net/s11n/?rev=271&view=rev Author: sgbeal Date: 2009-06-02 21:10:18 +0000 (Tue, 02 Jun 2009) Log Message: ----------- Very minor typo and cross-reference corrections. Modified Paths: -------------- trunk/doc/manual/libs11n.odt Modified: trunk/doc/manual/libs11n.odt =================================================================== (Binary files differ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |