Commit Graph

235 Commits

Author SHA1 Message Date
beder
0d8abd563a Removed the (unimplemented) operator <, and added operator == (in place of is()) for nodes 2011-09-11 22:56:04 -05:00
beder
d22c547d7e Added mutable operator[] for integral types (you can only grow the sequence if you specify the *next* element) 2011-09-11 22:51:49 -05:00
beder
1b8535c52e Implemented operator[] specialization, but only const (should the sequence be mutable?) 2011-09-11 21:51:04 -05:00
beder
e3491a5ad8 Started specialization for operator[] for integers 2011-09-11 21:32:47 -05:00
beder
02d73a8d40 Set the map iterator to filter over undefined items 2011-09-11 19:44:27 -05:00
beder
01f3c7342c Implemented the map size computation 2011-09-11 17:16:26 -05:00
beder
3f0796bef1 Switched the implementation of maps from list<pair> to map (but just pointer comparison) 2011-09-11 16:56:38 -05:00
beder
8efde57f3f Added computing and caching the sequence size 2011-09-11 16:21:36 -05:00
beder
40c6e63ec3 Added dependency management (to cause nodes to become defined if their children do) 2011-09-11 15:59:53 -05:00
beder
8bc95ce0ce Fixed up the old API stuff, and removed the util/value (since it's no longer needed) 2011-09-10 23:11:28 -05:00
beder
ad817d94fd Fixed minor things that used the old API, compiles/links/runs\! 2011-09-10 22:59:27 -05:00
beder
9388bbd098 Major switch from Value -> Node. The library compiles with the new API, but tests are still oldies, and don't compile 2011-09-10 17:57:23 -05:00
beder
f806a4ec98 Start of moving Value -> Node and Node -> old API Node (with a #define toggle) 2011-09-10 17:18:15 -05:00
beder
2adb8e2b59 Added helper emitter functions, but we have a problem: YAML::Value is already a manipulator 2011-09-10 16:50:44 -05:00
beder
dd2099cacf Fixed node iterator 2011-09-10 14:36:10 -05:00
beder
48f73def9e New iterators work\! 2011-09-10 14:16:50 -05:00
beder
9bd46b6cd0 Updated the node/value classes with the new iterators, they compile until we try to instantiate anything 2011-09-10 14:11:42 -05:00
beder
6fd3ee75b0 Finished the main iterator stuff, now have to hook it to the nodes/values 2011-09-10 14:06:49 -05:00
beder
c2f37961d3 Halfway towards factoring out a node_iterator, and then building iterator on top of it 2011-09-10 13:20:22 -05:00
beder
dc52117083 Started emitting events for Values 2011-09-10 12:42:42 -05:00
beder
ca58193832 Implemented sugar Parse() functions 2011-09-09 23:40:19 -05:00
beder
20c6bd516d Implemented (untested) the value builder 2011-09-09 23:28:21 -05:00
beder
91701f31a6 Sequence iterator works\! 2011-09-09 19:22:17 -05:00
beder
1aa7125ba1 Switched iterators to typedef's, with a bit of finagling so we can forward-declare them 2011-09-09 19:07:37 -05:00
beder
74b6de85b8 Base iterator stuff compiles :) 2011-09-09 18:46:37 -05:00
beder
df6a7eb91d Started writing new iterators 2011-09-09 16:17:59 -05:00
beder
56ee6e370a Made the 'data' member optional in node_ref - it's only created on-demand, so we don't waste extra memory every time we do Value tmp = v; 2011-09-09 14:26:55 -05:00
beder
effbfd26b8 Switched value = otherValue to assign the actual nodes after setting the reference (so that tmp = foo['bar']; tmp = other; is the same as foo['bar'] = other;) 2011-09-09 14:02:18 -05:00
beder
804cdb9364 Added append() 2011-09-09 02:51:35 -05:00
beder
27616e65cd Switched memory to using shared nodes, and node_data to keep only naked node pointers, not shared nodes (to break the cycle, and we don't need weak pointers because their memory is guaranteed to exist, via 'memory') 2011-09-09 02:29:17 -05:00
beder
570f97d303 Added half of the std::map conversion (we don't have reading from Values yet) 2011-09-08 02:10:04 -05:00
beder
5e58d778db Added back the streamable conversions 2011-09-08 02:05:03 -05:00
beder
43058e86a4 Switched convert to a templated struct that can be specialized (so we can partially specialize it) 2011-09-08 02:02:15 -05:00
beder
b9ad65a739 Implemented conversion for std::string, including a bypass-accessor to the scalar value 2011-09-07 15:49:01 -05:00
beder
5349dfa31c Set the 'memory' to only store node_refs, not nodes 2011-09-07 14:56:04 -05:00
beder
907868b67d Implemented is() 2011-09-07 14:46:25 -05:00
beder
81097ebbc0 Added (another) layer - now 'node_ref' is between node and node_data, and it decrees whether nodes are identical 2011-09-07 14:44:18 -05:00
beder
9add3a5947 Implemented map get(), and it would work (I think) if we implemented convert() for strings 2011-09-07 03:36:50 -05:00
beder
9ac003cb61 Set up map searching by templated key 2011-09-07 03:21:24 -05:00
beder
563b789cfb Reorganized so that we don't have cyclic include problems 2011-09-07 02:59:58 -05:00
beder
e6ca3f3e69 Implemented map access by already-existing node 2011-09-07 02:39:59 -05:00
beder
327ad93dc6 Started implementing node_data 2011-09-07 00:45:28 -05:00
beder
5ec459c31d Compiles/links assignment to string 2011-09-07 00:20:23 -05:00
beder
33a1d25c73 Value stuff compiles/links with lots of placeholder functions 2011-09-07 00:12:24 -05:00
beder
659e8207a0 Sketched more of the implementation 2011-09-06 23:11:38 -05:00
beder
f027c5a0ba Moved the value header to its own subfolder 2011-09-06 16:06:46 -05:00
beder
33b630dc71 Sketched out interface for YAML::Value 2011-09-06 01:43:15 -05:00
beder
2e59a9d721 Switched YAML::Binary interface to use unsigned chars, not chars 2011-09-06 00:39:31 -05:00
beder
ed4431d584 Added overload for operator [] for char * (non-const version) 2011-09-06 00:32:53 -05:00
beder
bf3d1f00c8 Switched the 'pragma once' to only happen on MSVC, or gcc >= 3.4 (it was causing trouble on the sun compiler) 2011-09-06 00:16:03 -05:00
jbeder
d7a8e41338 Removed ATOMIC_TYPE, an old enum that wasn't used any more 2011-08-22 21:37:51 +00:00
jbeder
bd60bdb227 Fixed negative infinity parsing 2011-07-10 18:29:44 +00:00
jbeder
207b719966 Added parsing .inf and .nan (and friend) 2011-07-10 16:27:40 +00:00
jbeder
4b522aaf4c Added emitting std::set (and refactored the stl emitters a bit) 2011-05-18 21:07:25 +00:00
jbeder
ad63662bd9 Fixed mixed line endings 2011-03-17 02:04:34 +00:00
jbeder
88b9ea7067 Marked Parser, Emitter, Node, Iterator, Mark, and Null for exporting to a DLL. It appears to work properly, although VS gives me lots of warning C4251 since I didn't export all data members of each of the above classes.
It seems that it's not necessary to export those members (as long as you can't access them), and most of them are STL instances, which apparently cause lots of problems for DLLs. (For example, you simply can't export instances of std::map; see http://support.microsoft.com/kb/168958.)
2011-03-16 02:31:30 +00:00
jbeder
afa6cf2b68 Removed comparison/implicit conversion operators for Node, and renamed Node::Read<T>() to Node::to<T>() 2011-03-15 05:49:56 +00:00
jbeder
a19be21c60 Added explicit doc start/end tokens for the emitter, and set it so that if you try to write after you've already written a full doc, it writes a doc start and continues 2011-03-03 09:26:12 +00:00
jbeder
8186058a7f Set the precision of emitting float/double to 15 2011-03-03 02:38:35 +00:00
jbeder
1f3cf8639a Merged r444:449 from the node refactoring branch to the trunk 2011-03-03 00:19:26 +00:00
jbeder
067bd9866f Refactored bool emitting to make it 1) correct for the short bool form and 2) not barf on early versions of VS 2011-03-02 20:55:05 +00:00
jbeder
cd80b759c8 Included 'mark.h' in the graphbuilder so that its method for removing the unused param warning (casting to void) compiles on VS 2011-03-02 20:30:54 +00:00
jbeder
e227456982 Flipped the include guard and the pragma, and don't use the pragma for early versions of gcc (< 3.4) 2011-03-02 06:11:41 +00:00
jbeder
3fc93080f3 Fixed 'long long' error in VS 2002, issue 90 2011-03-02 05:15:36 +00:00
jbeder
faeb0425d8 Merged contrib folders from the graphbuilder-api branch, including the recursive search in CMakeLists.txt 2011-03-02 04:48:04 +00:00
jbeder
9a1ffcad7c Switched exception constants to const char * const (from const std::string) so we don't have to construct them all in every translation unit, and switched the exception class to derive from std::runtime_error (so it handles what() for us) 2011-03-02 04:12:57 +00:00
jbeder
d2e6c81a78 Added long long types to the emitter 2010-11-15 01:46:33 +00:00
jbeder
2410cc6e9e Refactored tags so we can emit secondary tags (and named local tags) 2010-10-28 23:06:16 +00:00
jbeder
b44e529d75 Implemented binary emitting without the binary tag 2010-10-28 21:53:54 +00:00
jbeder
48e70e464a Added more tests for the newline, and disallowed newlines after implicit block keys 2010-10-22 03:53:33 +00:00
jbeder
467eb4931b Added YAML::Newline manipulator for the emitter 2010-10-21 22:02:29 +00:00
jbeder
2a46b5d0eb Merged the other-tags branch into the trunk (this wasn't an rX:Y merge, since the branch wasn't branched directly from the head of the trunk) 2010-10-19 06:46:55 +00:00
jbeder
f78892ee4d Made emitter noncopyable, which should fix any auto_ptr warnings 2010-10-18 07:24:42 +00:00
jbeder
1b5dda963a Fixed the rest of the includes to explicitly state yaml-cpp/ 2010-10-18 07:22:53 +00:00
jbeder
3aafbdac96 Moved all the includes to a subfolder yaml-cpp so they don't interfere with other libraries' includes 2010-10-18 07:05:53 +00:00
jbeder
3ffcfb3a83 Merged r366:387 from the jbeder-event-api branch 2010-10-18 06:45:03 +00:00
jbeder
264c0c67c3 Added overloads for parsing stl maps and vectors 2010-03-15 04:25:17 +00:00
jbeder
514d0a90e9 Set alias nodes to return the tag of their anchor 2010-03-15 04:10:36 +00:00
jbeder
79fbaa6a33 Updated to remove most of the warnings in Visual Studio. (There's still the one about all control paths returning a value left.) Fixed one warning (when an istream converts to void * to then convert to bool), and disabled three. 2010-03-03 05:30:06 +00:00
jbeder
52a1a2f32f Refactored emitter operator << overloads to not template them, so it's easier to overload for pointer types 2009-11-17 20:21:22 +00:00
jbeder
24e3129a71 Refactored the traits a bit, and added displaying the key to string and numeric key not found errors 2009-11-12 17:00:12 +00:00
jbeder
dc6253863d Replaced conversion macros with SFINAE 2009-11-10 21:23:52 +00:00
jbeder
4f71ae3c72 Overloaded more integral types for emitting 2009-11-06 03:24:12 +00:00
jbeder
6c504ceae9 Fixed the return value of the integral conversion functions, and also unset the dec flag so it reads other bases (just a temporary fix, since we're officially supposed to read binary too) 2009-11-06 03:13:54 +00:00
jbeder
00225fc1c7 Fixed bug with block maps with null value (the next key was being read as the value) 2009-10-30 01:06:19 +00:00
jbeder
b8a2c396a3 Merged r295:305 from the tags branch to the trunk 2009-10-29 15:48:06 +00:00
jbeder
189e7e1a93 Removed crt stuff (we can do memory leak checking in Linux easier) 2009-10-27 14:55:01 +00:00
jbeder
7f0427a8b2 Merged r270:HEAD of the emitting-unicode branch 2009-10-19 23:31:11 +00:00
jbeder
1a3afd2438 Added default constructor to Parser, and cleaned it up a bit 2009-10-19 22:40:46 +00:00
jbeder
3f0cbb563d Updated signature of Parser::GetNextDocument (issue 45) 2009-09-29 18:25:11 +00:00
jbeder
564b0d4d52 Modified old gcc version patch so it still uses the new Node::Read in Visual Studio. Also broke up the \uNNNN characters in the spec tests into \xNN-type strings. 2009-09-16 05:31:28 +00:00
jbeder
bbc05e6457 Patched for gcc version <= 3.3 (just fall back to original version of Node::Read) 2009-09-16 04:01:40 +00:00
jbeder
f5bca50ff8 Cleaned up the read template overloads (per litb's update); it seems the old version didn't compile in VS2008. Also updated the VS project files. 2009-09-08 20:57:18 +00:00
jbeder
a258030d6d Refactored the operator >> and Node::Read default functions, as well as the conversion functions, to more easily read new types as keys (this uncovered an error, in example 2.11 of the spec) 2009-09-06 20:52:45 +00:00
jbeder
6b70894903 Added templated casting to nodes, as well as operator == and != (for quick checks, especially to help in testing). Implemented size() on a map node to return the number of key/value pairs (as in std::map) 2009-09-06 15:54:11 +00:00
jbeder
7118305ecd Added Node::Clone function 2009-08-24 20:10:42 +00:00
jbeder
7a80ac787d Cleaned up 2009-08-24 18:23:20 +00:00
jbeder
8cc5826a55 Removed the std::wstring conversion 2009-08-22 00:25:37 +00:00
jbeder
903b2d6d5a Converted indexing to std::size_t, and fixed the Node templated overloads to properly index any index type (determining what is an index type is a bit of a hack - it should be is_convertible<T, std::size_t> (I think), but I just explicitly wrote down a list) 2009-08-19 20:58:07 +00:00
jbeder
72bcc006de Added 'yaml-cpp: ' to the exception messages 2009-08-19 05:09:12 +00:00
jbeder
51f5e012bb Added templated Read() function that creates the output variable itself (so you don't need to have a temp variable) 2009-08-19 03:37:19 +00:00
jbeder
fa57f215c0 Added IsNull function 2009-07-31 05:07:21 +00:00
jbeder
49b1921be1 Fixed null key/value bug, added tests 2009-07-30 06:49:09 +00:00
jbeder
f521c89bee Added support for emitting and represeting null 2009-07-30 04:42:27 +00:00
jbeder
543d9f9730 Added header file inclusion guards 2009-07-29 22:27:20 +00:00
jbeder
9a000a5ca9 Forgot to add mark.h 2009-07-27 04:14:19 +00:00
jbeder
f69bd13b0f Collected pos, line, and column into a Mark struct 2009-07-27 02:56:18 +00:00
jbeder
c7a4386dc8 Fixed the Exception::what() function 2009-07-26 01:37:21 +00:00
jbeder
f4cdc68a38 Patched to read into std::wstring 2009-07-15 20:47:51 +00:00
jbeder
b520b5a8b2 Added FindValue to more easily read optional keys in a map 2009-07-12 02:59:23 +00:00
jbeder
520240527f Added emitting for a YAML::Node (instead of the ad-hoc std::ostream overload) so it'll actually emit valid YAML always 2009-07-10 23:39:14 +00:00
jbeder
79cc0c36be (Finally) overrode Exception::what()\n 2009-07-10 04:17:30 +00:00
jbeder
b5d7cef103 Fixed warnings to compile on gcc with -Wall -pedantic -Wextra 2009-07-10 03:30:04 +00:00
jbeder
3615e8cb4b Set eol-style to native on all of the new files 2009-05-30 02:29:47 +00:00
jbeder
a50c88ac17 Changed the way we read different types of scalars.
It's better organized now, I think - nodes only offer a single main way of getting the fundamental scalar (as a string), and now we can specialize a single template to read specific types.
2009-05-23 23:51:01 +00:00
jbeder
f1e36c18ae Added emitter headers to yaml.h 2009-05-22 22:23:57 +00:00
jbeder
d7c3e06443 Replaced direct emitter writing with an accessor to a C-string 2009-05-22 22:21:01 +00:00
jbeder
de96fd8c4c Merged emitter branch into trunk, changes r105:r151 2009-05-22 21:52:31 +00:00
jbeder
070ee1dc99 Merged aliases branch into trunk, changes r100:150 2009-05-22 21:48:05 +00:00
jbeder
4c265fa3a9 Re-added the throw() specification to ~Exception(), and also to ~TypedKeyNotFound(); I suppose this'll fix the gcc compiler error. 2009-01-01 23:59:37 +00:00
jbeder
f07a2f7c64 Removed throw() specifier in Exception (I don't remember putting it in). This may solve a gcc error (I haven't tested it yet) or it may break it further. 2009-01-01 20:14:32 +00:00
jbeder
964144d05f Added a templated derived exception to KeyNotFound so that you can figure out *which* key wasn't found. 2009-01-01 02:40:18 +00:00
jbeder
4cc186774d Added line/column data for nodes so they can give better invalid scalar exceptions. 2008-11-18 04:20:07 +00:00
jbeder
c307970397 Added more natural ways to parse boolean values (based on the YAML spec).
(Thanks to Vadim Zeitlin)
2008-09-25 00:15:40 +00:00
jbeder
454ff4cd8c Added Read() functions for Node that return true/false, so we can easily check if a read is successful without throwing.
But we still have operator >> that throws on failure.
2008-09-24 23:29:00 +00:00
jbeder
3234589b92 Made Node non-copyable. 2008-09-19 02:44:49 +00:00
jbeder
0c384260a4 Set the eol style to native for all files. 2008-09-03 22:20:39 +00:00
jbeder
58bb38b8cd Fixed some gcc warnings. 2008-09-03 22:19:27 +00:00
jbeder
d4cc7a07f8 Unified line endings. 2008-09-03 22:17:17 +00:00
jbeder
113193209e Added CMake scripts for other platforms\nFixed some bugs that gcc complained about\nFixed CR/LF vs LF bug 2008-08-07 03:30:56 +00:00
beder
05f24705c5 2008-07-31 19:41:11 +00:00
beder
963e7abbfd Small changes in the iterator code.
Changed the public interface of Scanner to resemble an STL container.
2008-07-23 04:38:18 +00:00
beder
9f04e6e157 Switched the Iterator implementation to a dedicated helper class (to hide the specific implementation, since it's pretty messy and may change). 2008-07-21 02:54:39 +00:00
beder
7e47a0b754 Replaced the queue of Token pointers with values.
We were getting memory leaks (as told by the CRT detectors, which I also added), and there's really no reason (as long as we're careful) to use pointers there.
2008-07-20 05:02:01 +00:00
beder
68793e425e Moved all code to src/ and include/ directories. 2008-07-14 04:33:30 +00:00