diff --git a/thirdparty/yaml/AssemblyInfo.cs b/thirdparty/yaml/AssemblyInfo.cs deleted file mode 100644 index 467ce787b3..0000000000 --- a/thirdparty/yaml/AssemblyInfo.cs +++ /dev/null @@ -1,55 +0,0 @@ -// ==================================================================================================== -// YAML Parser for the .NET Framework -// ==================================================================================================== -// -// Copyright (c) 2006 -// Christophe Lambrechts -// Jonathan Slenders -// -// ==================================================================================================== -// This file is part of the .NET YAML Parser. -// -// This .NET YAML parser is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation; either version 2.1 of the License, or -// (at your option) any later version. -// -// The .NET YAML parser is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with Foobar; if not, write to the Free Software -// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USAusing System.Reflection; -// ==================================================================================================== - -using System.Reflection; -using System.Runtime.CompilerServices; - -// -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -// -[assembly: AssemblyTitle("Yaml Parser")] -[assembly: AssemblyDescription("Yaml .NET library")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("UHasselt students")] -[assembly: AssemblyProduct("")] -[assembly: AssemblyCopyright("Christophe Lambrechts and Jonathan Slenders")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Revision and Build Numbers -// by using the '*' as shown below: - -[assembly: AssemblyVersion("1.0.*")] diff --git a/thirdparty/yaml/Binary.cs b/thirdparty/yaml/Binary.cs deleted file mode 100644 index e1bd9bf30d..0000000000 --- a/thirdparty/yaml/Binary.cs +++ /dev/null @@ -1,154 +0,0 @@ -// ==================================================================================================== -// YAML Parser for the .NET Framework -// ==================================================================================================== -// -// Copyright (c) 2006 -// Christophe Lambrechts -// Jonathan Slenders -// -// ==================================================================================================== -// This file is part of the .NET YAML Parser. -// -// This .NET YAML parser is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation; either version 2.1 of the License, or -// (at your option) any later version. -// -// The .NET YAML parser is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with Foobar; if not, write to the Free Software -// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USAusing System.Reflection; -// ==================================================================================================== - -using System; - -namespace Yaml -{ - /// - /// A Yaml Boolean node - /// tag:yaml.org,2002:binary - /// - public class Binary : Scalar - { - private byte [] content; - - /// Binary constructor from byte array - /// This constructor only sets the reference, no new memory is allocated - public Binary (byte[] val) : - base ("tag:yaml.org,2002:binary", NodeType.Binary) - { - content = val; - } - - /// Parse a binary node - public Binary (ParseStream stream) : - base ("tag:yaml.org,2002:binary", NodeType.Binary) - { - try - { - content = Parse (stream); - } - catch (FormatException e) - { - throw new ParseException (stream, e); - } - } - - /// Binary content - /// There is no new memory allocated in the 'set'. - public byte [] Content - { - get { return content; } - set { content = value; } - } - - /// Parses a binairy node. - /// - /// This is not an efficient method. First the stream is placed - /// in a string. And after that the string is converted in a byte[]. - /// If there is a fault in the binairy string then that will only be detected - /// after reading the whole stream and after coneverting. - /// - public static new byte [] Parse (ParseStream stream) - { - bool quoted = false; - bool block = false; - System.Text.StringBuilder input = new System.Text.StringBuilder(); - - if (stream.EOF) - throw new ParseException (stream, "Empty node"); - - // Detect block scalar - stream.SkipSpaces (); - if (stream.Char == '|') - { - block = true; - stream.Next (); - stream.SkipSpaces (); - } - - while ( ! stream.EOF) - { - // Detect quotes - if (stream.Char == '\"') - if (quoted) - break; //End of stream - else - quoted = true; //Start of quoted stream - // Detect and ignore newline char's - else if (!(stream.Char == '\n' && block)) - input.Append( stream.Char ); - - stream.Next (); - } - - //Console.WriteLine("convert [" + input.ToString() + "]"); - - return System.Convert.FromBase64String (input.ToString ()); - } - - /// To String - /// The hexadecimal notation, 20 bytes for each line - public override string ToString () - { - System.Text.StringBuilder output = new System.Text.StringBuilder (); - - output.Append ("[BINARY]\n\t"); - for (uint i = 0; i < content.Length; i++) - { - if ((i%16) == 0) - output.Append( "\n\t" ); - output.AppendFormat ("{0:X2} ", content[i]); - } - output.Append ("\n[/BINARY]"); - - return output.ToString (); - } - - /// - /// Write the base64 content to YAML - /// - /// The lines are splitted in blocks of 20 bytes - protected internal override void Write (WriteStream stream) - { - stream.Append("!!binary |" + "\n" ); - - string bin = System.Convert.ToBase64String(content); - - while (bin.Length > 75) - { - stream.Append(" " + bin.Substring(0, 75) + "\n"); - bin = bin.Substring(75); - } - stream.Append(" " + bin ); - - // Old coden, everything on one line - // stream.Append ("!!binary \"" + System.Convert.ToBase64String (content) + "\""); - } - } - -} diff --git a/thirdparty/yaml/Boolean.cs b/thirdparty/yaml/Boolean.cs deleted file mode 100644 index a87172c0fc..0000000000 --- a/thirdparty/yaml/Boolean.cs +++ /dev/null @@ -1,132 +0,0 @@ -// ==================================================================================================== -// YAML Parser for the .NET Framework -// ==================================================================================================== -// -// Copyright (c) 2006 -// Christophe Lambrechts -// Jonathan Slenders -// -// ==================================================================================================== -// This file is part of the .NET YAML Parser. -// -// This .NET YAML parser is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation; either version 2.1 of the License, or -// (at your option) any later version. -// -// The .NET YAML parser is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with Foobar; if not, write to the Free Software -// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USAusing System.Reflection; -// ==================================================================================================== - -using System; - -namespace Yaml -{ - /// - /// Class for storing a Yaml Boolean node - /// tag:yaml.org,2002:bool - /// - public class Boolean : Scalar - { - private bool content; - - /// New boolean - public Boolean (bool val) : - base ("tag:yaml.org,2002:bool", NodeType.Boolean) - { - content = val; - } - - /// Parse boolean - public Boolean (ParseStream stream) : - base ("tag:yaml.org,2002:bool", NodeType.Boolean) - { - // Read the first 8 chars - char [] chars = new char [8]; - - int length = 0; - for (int i = 0; i < chars.Length && ! stream.EOF; i ++) - { - chars [i] = stream.Char; - length ++; - stream.Next (true); - } - - // Compare - if (length == 1) - { - if (chars[0] == 'Y' || chars[0] == 'y') - { content = true; return; } - - if (chars[0] == 'N' || chars[0] == 'n') - { content = false; return; } - } - if (length == 2) - { - string s = "" + chars [0] + chars [1]; - - if (s == "ON" || s == "On" || s == "on") - { content = true; return; } - - if (s == "NO" || s == "No" || s == "no") - { content = false; return; } - } - if (length == 3) - { - string s = "" + chars [0] + chars [1] + chars [2]; - - if (s == "YES" || s == "Yes" || s == "yes") - { content = true; return; } - - if (s == "OFF" || s == "Off" || s == "off") - { content = false; return; } - } - if (length == 4) - { - string s = "" + chars [0] + chars [1] + chars [2] + chars [3]; - - if (s == "TRUE" || s == "True" || s == "true") - { content = true; return; } - } - if (length == 5) - { - string s = "" + chars [0] + chars [1] + chars [2] + chars [3] + chars[4]; - - if (s == "FALSE" || s == "False" || s == "false") - { content = false; return; } - } - - // No boolean - throw new Exception ("No valid boolean"); - } - - /// Node content - public bool Content - { - get { return content; } - set { content = value; } - } - - /// To String - public override string ToString () - { - return "[BOOLEAN]" + content.ToString () + "[/BOOLEAN]"; - } - - /// Write to YAML - protected internal override void Write (WriteStream stream) - { - if (Content) - stream.Append ("y"); - else - stream.Append ("n"); - } - - } -} diff --git a/thirdparty/yaml/COPYING b/thirdparty/yaml/COPYING deleted file mode 100644 index 5faba9d48c..0000000000 --- a/thirdparty/yaml/COPYING +++ /dev/null @@ -1,504 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - diff --git a/thirdparty/yaml/Float.cs b/thirdparty/yaml/Float.cs deleted file mode 100644 index 4ca857aabd..0000000000 --- a/thirdparty/yaml/Float.cs +++ /dev/null @@ -1,295 +0,0 @@ -// ==================================================================================================== -// YAML Parser for the .NET Framework -// ==================================================================================================== -// -// Copyright (c) 2006 -// Christophe Lambrechts -// Jonathan Slenders -// -// ==================================================================================================== -// This file is part of the .NET YAML Parser. -// -// This .NET YAML parser is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation; either version 2.1 of the License, or -// (at your option) any later version. -// -// The .NET YAML parser is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with Foobar; if not, write to the Free Software -// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USAusing System.Reflection; -// ==================================================================================================== - -using System; - -namespace Yaml -{ - /// - /// Class for storing a Yaml Float node - /// tag:yaml.org,2002:float - /// - public class Float : Scalar - { - private double content; - - /// New float - public Float (float val) : base ("tag:yaml.org,2002:float", NodeType.Float) - { - content = val; - } - - /// Parse float - public Float (ParseStream stream) : - base ("tag:yaml.org,2002:float", NodeType.Float) - { - // NaN - if (stream.Char == '.') - { - stream.Next (true); - ParseNaN (stream); - } - else - { - // By default positief - int sign = 1; - - // Negative sign - if (stream.Char == '-') - { - sign = -1; - stream.Next (true); - } - // Positive sign - else if (stream.Char == '+') - stream.Next (true); - - // Test for inf, Inf and INF - if ( ! stream.EOF && stream.Char == '.') - { - stream.Next (true); - ParseInf (stream, sign); - } - // Parse the numbers - else if (!stream.EOF) - ParseNumber (stream, sign); - - else - throw new ParseException (stream, - "No valid float, no data behind the sign"); - } - } - - #region Parse special formats (NaN and Inf) - /// - /// Test for the value's nan, NaN and NAN in the stream. If - /// found then it is placed inside the content. - /// There is no more data excepted behind it - /// - private void ParseNaN (ParseStream stream) - { - // Read the first 8 chars - char [] chars = new char [8]; - - int length = 0; - for (int i = 0; i < chars.Length && ! stream.EOF; i ++) - { - chars [i] = stream.Char; - length ++; - stream.Next (true); - } - - // Compare - if (length == 3) - { - string s = "" + chars [0] + chars [1] + chars [2]; - - if (s == "NAN" || s == "NaN" || s == "nan") - { - content = double.NaN; - return; - } - } - - throw new ParseException (stream, "No valid NaN"); - } - - /// - /// Test for the value's inf, Inf and INF in the stream. If - /// found then it 'merged' with the sign and placed in the content. - /// There is no more data excepted behind it. - /// - private void ParseInf (ParseStream stream, int sign) - { - // Read the first 8 chars - char [] chars = new char [8]; - - int length = 0; - for (int i = 0; i < chars.Length && ! stream.EOF; i ++) - { - chars [i] = stream.Char; - length ++; - stream.Next (true); - } - - // Compare - if (length == 3) - { - string s = "" + chars [0] + chars [1] + chars [2]; - - if (s == "INF" || s == "Inf" || s == "inf") - { - if (sign < 0) - content = double.NegativeInfinity; - else - content = double.PositiveInfinity; - - return; - } - } - - throw new ParseException (stream, "No valid infinity"); - } - #endregion - - /// - /// If it is not Infinity or NaN, then parse as a number - /// - private void ParseNumber (ParseStream stream, int sign) - { - bool base60 = false; // Base 60 with ':' - bool afterDecimal = false; // Before or after the decimal point - - double factor = 0.1; - double part; // If base60 different parts, else output value - - // Set sign - content = sign >= 0 ? 1 : -1; - - // First char must 0-9 - if (stream.Char >= '0' && stream.Char <= '9') - { - part = (uint) (stream.Char - '0'); - stream.Next (true); - } - else - throw new ParseException (stream, - "No valid float: Invalid first character of float: " + stream.Char); - - while (! stream.EOF) - { - // Decimal - if (stream.Char >= '0' && stream.Char <= '9') - if (afterDecimal) - { - part += (uint) (stream.Char - '0') * factor; - factor *= 0.1; - } - else - part = (part * 10) + (uint) (stream.Char - '0'); - - // Base60 detected - else if (stream.Char == ':') - { - if ( ! base60) // First time - { - content *= part; // Multiply to get sign - part = 0; - base60 = true; // We are now sure base 60 - } - else - { - if (part > 59) - throw new ParseException (stream, - "Part of base 60 can't be larger then 59"); - content = (60 * content) + part; - part = 0; - } - } - // If first '.', then after decimal, else it is ignored if not in Base60 - else if ( (!base60 || (base60 && !afterDecimal)) && stream.Char == '.' ) - afterDecimal = true; - - // Determine scientific notation - else if ( (stream.Char == 'E' || stream.Char == 'e') && ! base60 ) - { - stream.Next (true); - content *= Math.Pow (10, ParseScient (stream)); - } - // Ignore underscores if before the decimal point, special case if base 60 - else if ((!afterDecimal || (afterDecimal && base60)) && stream.Char != '_') - throw new ParseException (stream, "Unknown char"); - - stream.Next (true); - } - - // Add last part of base to content - if (base60) - content = (60 * content) + part; - else - content *= part; // Multiply to get sign - } - - /// Parses the exponential part of the float - private static long ParseScient (ParseStream stream) - { - ulong output = 0; - short sign; - - if (stream.Char == '-') - sign = -1; - else if (stream.Char == '+') - sign = 1; - else - throw new ParseException (stream, - "Excepted + or - for the exponential part"); - - stream.Next (true); - - while (! stream.EOF) - { - if (stream.Char >= '0' && stream.Char <= '9') - output = (10 * output) + (uint) stream.Char - '0'; - else - throw new ParseException (stream, - "Unexepted char in exponential part: >" + - stream.Char + "<"); - - stream.Next (true); - } - - return sign * (long) output; - } - - /// Content - public double Content - { - get { return content; } - set { content = value; } - } - - /// To string - public override string ToString() - { - return "[FLOAT]" + content + "[/FLOAT]"; - } - - /// Write to a YAML node - protected internal override void Write (WriteStream stream) - { - if (content.Equals( double.NaN )) - stream.Append ("!!float .NaN"); - - else if (content.Equals( double.NegativeInfinity )) - stream.Append ("!!float -.Inf"); - - else if (content.Equals( double.PositiveInfinity )) - stream.Append ("!!float +.Inf"); - - else stream.Append ("!!float " + content); - } - } -} diff --git a/thirdparty/yaml/Integer.cs b/thirdparty/yaml/Integer.cs deleted file mode 100644 index 948984e983..0000000000 --- a/thirdparty/yaml/Integer.cs +++ /dev/null @@ -1,266 +0,0 @@ -// ==================================================================================================== -// YAML Parser for the .NET Framework -// ==================================================================================================== -// -// Copyright (c) 2006 -// Christophe Lambrechts -// Jonathan Slenders -// -// ==================================================================================================== -// This file is part of the .NET YAML Parser. -// -// This .NET YAML parser is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation; either version 2.1 of the License, or -// (at your option) any later version. -// -// The .NET YAML parser is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with Foobar; if not, write to the Free Software -// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USAusing System.Reflection; -// ==================================================================================================== - -using System; - -namespace Yaml -{ - /// - /// Class for storing a Yaml Integer node - /// uri: tag:yaml.org,2002:int - /// - public class Integer : Scalar - { - private long content; - - /// New Integer - public Integer (long val) : - base ("tag:yaml.org,2002:int", NodeType.Integer) - { - content = val; - } - - /// Content - public long Content - { - get { return content; } - set { content = value; } - } - - /// Parse an integer - public Integer (ParseStream stream) : - base ("tag:yaml.org,2002:int", NodeType.Integer) - { - short sign = 1; // Positive sign by default - - // Negative sign - if (stream.Char == '-') - { - sign = -1; - stream.Next (); - } - // Positive sign - else if (stream.Char == '+') - stream.Next (); - - try - { - // Determine base - if (stream.Char == '0') - { - stream.Next (); - - // Base 2 - if (stream.Char == 'b') - { - stream.Next (); - content = ParseBase (stream, 2, sign); - return; - } - // Base 16 - else if (stream.Char == 'x') - { - stream.Next (); - content = Parse16 (stream, sign); - return; - } - // Base 8 - else - { - content = ParseBase (stream, 8, sign); - return; - } - } - - // Other base - stream.BuildLookaheadBuffer (); - - // First, try to parse with base 10 - try - { - content = ParseBase (stream, 10, sign); - stream.DestroyLookaheadBuffer (); - return; - } - catch { } - - // If not parseable with base 10, then try base 60 - stream.RewindLookaheadBuffer (); - stream.DestroyLookaheadBuffer (); - - content = Parse60 (stream, sign); - } - catch (Exception ex) - { - throw new ParseException (stream, ex.ToString ()); - } - } - - /// Hexadecimal string - private static long Parse16 (ParseStream stream, short sign) - { - uint output = 0; - - while (! stream.EOF) - { - // 0 .. 9 - if (stream.Char >= '0' && stream.Char <= '9') - { - output = (output * 16) + (uint) (stream.Char - '0'); - OverflowTest (output, sign); - } - // a .. f - else if (stream.Char >= 'a' && stream.Char <= 'f') - { - output = (output * 16) + (uint) (stream.Char - 'a') + 10; - OverflowTest (output, sign); - } - // A .. F - else if (stream.Char >= 'A' && stream.Char <= 'F') - { - output = (output * 16) + (uint) (stream.Char - 'A') + 10; - OverflowTest(output, sign); - } - // Ignore underscores, other chars are not allowed - else if (stream.Char != '_') - throw new Exception ("Unknown char in base 16"); - - stream.Next (); - } - - return (long) (sign * output); - } - - /// Parses a string with a given base (maximum 10) - /// - /// This is not completly correct. For base10 the first char may not be a '_' - /// The other bases allow this... - /// - private static long ParseBase (ParseStream stream, uint basis, short sign) - { - // Base must be <= 10 - if (basis > 10) - throw new Exception ("Base to large. Maximum 10"); - - ulong output = 0; - char max = (char) ((basis - 1) + (int) '0'); - - // Parse - while (! stream.EOF) - { - // Decimal - if (stream.Char >= '0' && stream.Char <= max) - { - output = (output * basis) + (uint) (stream.Char - '0'); - OverflowTest (output, sign); - } - // Ignore underscores, but other chars are not allowed - // see remarks - else if (stream.Char != '_') - throw new Exception ("Unknown char in base " + basis); - - stream.Next (); - } - return sign * (long) output; - } - - /// Parses a string with base 60, without sign - private static long Parse60 (ParseStream stream, short sign) - { - ulong output = 0; - - // Parse - ulong part = 0; - bool firstPart = true; // Only the first part can be larger then 59 - - while (! stream.EOF) - { - // Decimal - if (stream.Char >= '0' && stream.Char <= '9') - part = (part * 10) + (uint) (stream.Char - '0'); - - // New part - else if (stream.Char == ':') - { - // Only the first part can be largen then 60 - if ( ! firstPart) - if (part >= 60) - throw new - Exception ("Part of base 60 scalar is too large (max. 59)"); - else - firstPart = false; - - output = (output * 60) + part; - OverflowTest(output, sign); - part = 0; - } - - // Ignore underscores, other chars are not allowed - else if (stream.Char != '_') - throw new Exception ("Unknown char in base 16"); - - stream.Next (); - } - - // Add last part to the output - if (!firstPart) - if (part >= 60) - throw new Exception ( - "Part of base 60 scalar is too large (max. 59)"); - else - firstPart = false; - - output = (output * 60) + part; - OverflowTest (output, sign); - - return sign * (long) output; - } - - /// Test that the unsigned int fits in a signed int - /// Value to test - /// Sign of the int where it must fit in - private static void OverflowTest (ulong number, short sign) - { - // NOTE: Negatif numbers can be one larger - if ((sign >= 0 && number > System.Int64.MaxValue) || - (sign < 0 && number > (ulong) System.Int64.MaxValue + 1) ) - - throw new Exception ("YAML overflow exception"); - } - - /// To String - public override string ToString () - { - return "[INTEGER]" + content.ToString () + "[/INTEGER]"; - } - - /// Write to YAML - protected internal override void Write (WriteStream stream) - { - stream.Append (content.ToString ()); - } - } -} diff --git a/thirdparty/yaml/Mapping.cs b/thirdparty/yaml/Mapping.cs deleted file mode 100644 index c91133cfab..0000000000 --- a/thirdparty/yaml/Mapping.cs +++ /dev/null @@ -1,292 +0,0 @@ -// ==================================================================================================== -// YAML Parser for the .NET Framework -// ==================================================================================================== -// -// Copyright (c) 2006 -// Christophe Lambrechts -// Jonathan Slenders -// -// ==================================================================================================== -// This file is part of the .NET YAML Parser. -// -// This .NET YAML parser is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation; either version 2.1 of the License, or -// (at your option) any later version. -// -// The .NET YAML parser is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with Foobar; if not, write to the Free Software -// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USAusing System.Reflection; -// ==================================================================================================== - -using System; -using System.Collections; - - -// TODO Access to nodes via the [] overload - -namespace Yaml -{ - /// - /// Yaml Mapping - /// - public class Mapping : Node - { - private ArrayList childNodes = new ArrayList (); - - /// New empty mapping - public Mapping () : base ("tag:yaml.org,2002:map", NodeType.Mapping) { } - - /// New mapping from a mappingnode array - public Mapping (MappingNode [] nodes) : - base ("tag:yaml.org,2002:map", NodeType.Mapping) - { - foreach (MappingNode node in nodes) - childNodes.Add (node); - } - - /// Parse a mapping - public Mapping (ParseStream stream) : - base ("tag:yaml.org,2002:map", NodeType.Mapping) - { - // Mapping with eplicit key, (implicit mappings are threaded - // in Node.cs) - if (stream.Char == '?') - { - // Parse recursively - do { - Node key, val; - - // Skip over '?' - stream.Next (); - stream.SkipSpaces (); - - // Parse recursively. The false param avoids - // looking recursively for implicit mappings. - stream.StopAt (new char [] {':'}); - stream.Indent (); - key = Parse (stream, false); - stream.UnIndent (); - stream.DontStop (); - - // Parse recursively. The false param avoids - // looking for implit nodes - if (stream.Char == ':') - { - // Skip over ':' - stream.Next (); - stream.SkipSpaces (); - - // Parse recursively - stream.Indent (); - val = Parse (stream); - stream.UnIndent (); - } - else - val = new Null (); - - AddMappingNode (key, val); - - // Skip possible newline - // NOTE: this can't be done by the drop-newline - // method since this is not the end of a block - if (stream.Char == '\n') - stream.Next (); - } - while ( ! stream.EOF && stream.Char == '?'); - } - // Inline mapping - else if (stream.Char == '{') - { - // Override the parent's stop chars, never stop - stream.StopAt (new char [] { }); - - // Skip '{' - stream.Next (); - - do { - Node key, val; - - // Skip '?' - // (NOTE: it's not obligated to use this '?', - // especially because this is an inline mapping) - if (stream.Char == '?') - { - stream.Next (); - stream.SkipSpaces (); - } - - // Parse recursively the key - stream.StopAt (new char [] {':', ',', '}'}); - stream.Indent (); - key = Parse (stream, false); - stream.UnIndent (); - stream.DontStop (); - - // Value - if (stream.Char == ':') - { - // Skip colon - stream.Next (); - stream.SkipSpaces (); - - // Parse recursively the value - stream.StopAt (new char [] {'}', ','}); - stream.Indent (); - val = Parse (stream, false); - stream.UnIndent (); - stream.DontStop (); - } - else - val = new Null (); - - AddMappingNode (key, val); - - // Skip comma (key sepatator) - if (stream.Char != '}' && stream.Char != ',') - { - stream.DontStop (); - throw new ParseException (stream, "Comma expected in inline sequence"); - } - - if (stream.Char == ',') - { - stream.Next (); - stream.SkipSpaces (); - } - } - while ( ! stream.EOF && stream.Char != '}' ); - - // Re-accept the parent's stop chars - stream.DontStop (); - - // Skip '}' - if (stream.Char == '}') - stream.Next (); - else - throw new ParseException (stream, "Inline mapping not closed"); - } - } - - /// Add a node to this mapping - public void AddMappingNode (Node key, Node val) - { - childNodes.Add (new MappingNode (key, val)); - } - - /// Add a node to this mapping - public void AddMappingNode (MappingNode node) - { - if (node != null) - childNodes.Add (node); - else - childNodes.Add (new MappingNode (null, null)); - } - - /// Number of mappings - public int Count - { - get { return childNodes.Count; } - } - - /// To String - public override string ToString () - { - string result = ""; - foreach (MappingNode node in childNodes) - result += node.ToString (); - - return "[MAPPING]" + result + "[/MAPPING]"; - } - - /// Node info - public override Node Info () - { - Mapping mapping = new Mapping (); - mapping.AddMappingNode (new String ("kind"), new String ("mapping")); - mapping.AddMappingNode (new String ("type_id"), new String (URI)); - - Mapping childs = new Mapping (); - int i = 0; - foreach (MappingNode child in childNodes) - { - Sequence keyvaluepair = new Sequence (); - keyvaluepair.AddNode (child.Key.Info () ); - keyvaluepair.AddNode (child.Value.Info ()); - - childs.AddMappingNode (new String ("key_" + i), keyvaluepair); - i ++; - } - - mapping.AddMappingNode (new String ("value"), childs); - return mapping; - } - - /// Write to YAML - protected internal override void Write (WriteStream stream) - { - foreach (MappingNode node in childNodes) - { - stream.Append ("? "); - - stream.Indent (); - Yaml.Node key = node.Key; - key.Write (stream); - stream.UnIndent (); - - stream.Append (": "); - - stream.Indent (); - node.Value.Write (stream); - stream.UnIndent (); - } - } - - } - - /// - /// Node pair (key, value) of a mapping - /// - public class MappingNode - { - private Node key; - private Node val; - - /// Create a new mappingnode - public MappingNode (Node key, Node val) - { - if (key == null) key = new Null (); - if (val == null) val = new Null (); - - this.key = key; - this.val = val; - } - - /// Key property - public Node Key - { - get { return key; } - set { key = (value == null ? new Null () : value); } - } - - /// Value property - public Node Value - { - get { return val; } - set { val = (value == null ? new Null () : value); } - } - - /// To String - public override string ToString () - { - return - "[KEY]" + key.ToString () + "[/KEY]" + - "[VAL]" + val.ToString () + "[/VAL]"; - } - } -} diff --git a/thirdparty/yaml/Node.cs b/thirdparty/yaml/Node.cs deleted file mode 100644 index ea19cd6ddd..0000000000 --- a/thirdparty/yaml/Node.cs +++ /dev/null @@ -1,469 +0,0 @@ -// ==================================================================================================== -// YAML Parser for the .NET Framework -// ==================================================================================================== -// -// Copyright (c) 2006 -// Christophe Lambrechts -// Jonathan Slenders -// -// ==================================================================================================== -// This file is part of the .NET YAML Parser. -// -// This .NET YAML parser is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation; either version 2.1 of the License, or -// (at your option) any later version. -// -// The .NET YAML parser is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with Foobar; if not, write to the Free Software -// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USAusing System.Reflection; -// ==================================================================================================== - -#define UNSTABLE -#define SUPPORT_EXPLICIT_TYPES -#define SUPPORT_IMPLICIT_MAPPINGS - -using System; -using System.Text; -using System.Collections; - -using System.IO; - -namespace Yaml -{ - /// - /// Kind of node, used to determine the type of node. - /// - public enum NodeType - { - /// A Yaml mapping - collection type - Mapping, - /// A Yaml sequence - collection type - Sequence, - - /// A Yaml binary scalar - Binary, - /// A Yaml boolean scalar - Boolean, - /// A Yaml float scalar - Float, - /// A Yaml integer scalar - Integer, - /// A Yaml null scalar - Null, - /// A Yaml string scalar - String, - /// A Yaml timestamp scalar - Timestamp - }; - - /// - /// Node in the Yaml tree - /// - - public abstract class Node - { - /// The uri given by http://yaml.org/type/ - protected readonly string uri; - - /// Determines wich node we are talking about - protected NodeType nodetype; - - /// Node Constructor - /// URI of the node - /// The type of node that we want to store - public Node (string uri, NodeType nodetype) - { - this.uri = uri; - this.nodetype = nodetype; - } - - /// Parse a Yaml string and return a Yaml tree - public static Node Parse (string lines) - { - StringReader reader = new StringReader (lines); - Node node = Parse (new ParseStream (reader)); - reader.Close (); - return node; - } - - /// Parse a Yaml string from a textreader and return a Yaml tree - public static Node Parse (TextReader textreader) - { - return Parse (new ParseStream (textreader)); - } - - /// Return a Yaml string - public string Write () - { - StringWriter stringWriter = new StringWriter (); - WriteStream writeStream = new WriteStream (stringWriter); - - Write (writeStream); - - stringWriter.Close (); - return stringWriter.ToString (); - } - - /// - /// Parse a Yaml string from a textfile and return a Yaml tree - /// - public static Node FromFile (string filename) - { - // Open YAML file - StreamReader reader = File.OpenText (filename); - ParseStream parsestream = new ParseStream (reader); - - // Parse - Node node = Parse (parsestream); - - // Close YAML file - reader.Close (); - return node; - } - - /// - /// Write a YAML tree to a file using UTF-8 encoding - /// - public void ToFile (string filename) - { - ToFile (filename, Encoding.UTF8); - } - - /// - /// Write a YAML tree to a file - /// - public void ToFile (string filename, Encoding enc) - { - // Open YAML file - StreamWriter writer = new StreamWriter (filename, false, enc); - WriteStream writestream = new WriteStream (writer); - - // Write - Write (writestream); - - // Close YAML file - writer.Close (); - } - - /// Parse function - protected static Node Parse (ParseStream stream) { return Parse (stream, true); } - - /// Internal parse method - /// - /// Avoids ethernal loops while parsing implicit mappings. Implicit mappings are - /// not rocognized by a leading character. So while trying to parse the key of - /// something we think that could be a mapping, we're sure that if it is a mapping, - /// the key of this implicit mapping is not a mapping itself. - /// - /// NOTE: Implicit mapping still belong to unstable code and require the UNSTABLE and - /// IMPLICIT_MAPPINGS preprocessor flags. - /// - /// - protected static Node Parse (ParseStream stream, bool parseImplicitMappings) - { - // ---------------- - // Skip Whitespace - // ---------------- - if (! stream.EOF) - { - // Move the firstindentation pointer after the whitespaces of this line - stream.SkipSpaces (); - while (stream.Char == '\n' && ! stream.EOF) - { - // Skip newline and next whitespaces - stream.Next (); - stream.SkipSpaces (); - } - } - - // ----------------- - // No remaining chars (Null/empty stream) - // ----------------- - if (stream.EOF) - return new Null (); - - // ----------------- - // Explicit type - // ----------------- - -#if SUPPORT_EXPLICIT_TYPES - stream.BuildLookaheadBuffer (); - - char a = '\0', b = '\0'; - - a = stream.Char; stream.Next (); - b = stream.Char; stream.Next (); - - // Starting with !! - if (a == '!' && b == '!' && ! stream.EOF) - { - stream.DestroyLookaheadBuffer (); - - // Read the tagname - string tag = ""; - - while (stream.Char != ' ' && stream.Char != '\n' && ! stream.EOF) - { - tag += stream.Char; - stream.Next (); - } - - // Skip Whitespace - if (! stream.EOF) - { - stream.SkipSpaces (); - while (stream.Char == '\n' && ! stream.EOF) - { - stream.Next (); - stream.SkipSpaces (); - } - } - - // Parse - Node n; - switch (tag) - { - // Mappings and sequences - // NOTE: - // - sets are mappings without values - // - Ordered maps are ordered sequence of key: value - // pairs without duplicates. - // - Pairs are ordered sequence of key: value pairs - // allowing duplicates. - - // TODO: Create new datatypes for omap and pairs - // derived from sequence with a extra duplicate - // checking. - - case "seq": n = new Sequence (stream); break; - case "map": n = new Mapping (stream); break; - case "set": n = new Mapping (stream); break; - case "omap": n = new Sequence (stream); break; - case "pairs": n = new Sequence (stream); break; - - // Scalars - // - // TODO: do we have to move this to Scalar.cs - // in order to get the following working: - // - // !!str "...": "..." - // !!str "...": "..." - - case "timestamp": n = new Timestamp (stream); break; - case "binary": n = new Binary (stream); break; - case "null": n = new Null (stream); break; - case "float": n = new Float (stream); break; - case "int": n = new Integer (stream); break; - case "bool": n = new Boolean (stream); break; - case "str": n = new String (stream); break; - - // Unknown data type - default: - throw new Exception ("Incorrect tag '!!" + tag + "'"); - } - - return n; - } - else - { - stream.RewindLookaheadBuffer (); - stream.DestroyLookaheadBuffer (); - } -#endif - // ----------------- - // Sequence - // ----------------- - - if (stream.Char == '-' || stream.Char == '[') - return new Sequence (stream); - - // ----------------- - // Mapping - // ----------------- - - if (stream.Char == '?' || stream.Char == '{') - return new Mapping (stream); - - // ----------------- - // Try implicit mapping - // ----------------- - - // This are mappings which are not preceded by a question - // mark. The keys have to be scalars. - -#if (UNSTABLE && SUPPORT_IMPLICIT_MAPPINGS) - - // NOTE: This code can't be included in Mapping.cs - // because of the way we are using to rewind the buffer. - - Node key, val; - - if (parseImplicitMappings) - { - // First Key/value pair - - stream.BuildLookaheadBuffer (); - - stream.StopAt (new char [] {':'}); - - // Keys of implicit mappings can't be sequences, or other mappings - // just look for scalars - key = Scalar.Parse (stream, false); - stream.DontStop (); - -Console.WriteLine ("key: " + key); - - // Followed by a colon, so this is a real mapping - if (stream.Char == ':') - { - stream.DestroyLookaheadBuffer (); - - Mapping mapping = new Mapping (); - - // Skip colon and spaces - stream.Next (); - stream.SkipSpaces (); - - // Parse the value -Console.Write ("using buffer: " + stream.UsingBuffer ()); - stream.Indent (); -Console.Write ("using buffer: " + stream.UsingBuffer ()); -// val = Parse (stream, false); -Console.Write ("<<"); -while (!stream.EOF) {Console.Write (stream.Char);stream.Next (true);} -Console.Write (">>"); - -val = new String (stream); - - -Console.Write ("using buffer: " + stream.UsingBuffer ()); - stream.UnIndent (); -Console.Write ("using buffer: " + stream.UsingBuffer ()); - -Console.Write ("<<"); -while (!stream.EOF) {Console.Write (stream.Char);stream.Next (true);} -Console.Write (">>"); - - - - -Console.WriteLine ("val: " + val); - mapping.AddMappingNode (key, val); - - // Skip possible newline - // NOTE: this can't be done by the drop-newline - // method since this is not the end of a block - while (stream.Char == '\n') - stream.Next (true); - - // Other key/value pairs - while (! stream.EOF) - { - stream.StopAt (new char [] {':'} ); - stream.Indent (); - key = Scalar.Parse (stream); - stream.UnIndent (); - stream.DontStop (); - -Console.WriteLine ("key 2: " + key); - if (stream.Char == ':') - { - // Skip colon and spaces - stream.Next (); - stream.SkipSpaces (); - - // Parse the value - stream.Indent (); - val = Parse (stream); - stream.UnIndent (); - -Console.WriteLine ("val 2: " + val); - mapping.AddMappingNode (key, val); - } - else // TODO: Is this an error? - { - // NOTE: We can't recover from this error, - // the last buffer has been destroyed, so - // rewinding is impossible. - throw new ParseException (stream, - "Implicit mapping without value node"); - } - - // Skip possible newline - while (stream.Char == '\n') - stream.Next (); - } - - return mapping; - } - - stream.RewindLookaheadBuffer (); - stream.DestroyLookaheadBuffer (); - } - -#endif - // ----------------- - // No known data structure, assume this is a scalar - // ----------------- - - Scalar scalar = Scalar.Parse (stream); - - // Skip trash - while (! stream.EOF) - stream.Next (); - - - return scalar; - } - - /// - /// URI of this node, according to the YAML documentation. - /// - public string URI - { - get { return uri; } - } - - /// - /// Kind of node: mapping, sequence, string, ... - /// - public NodeType Type - { - get { return nodetype; } - } - - /// - /// Writes a Yaml tree back to a file or stream - /// - /// - /// should not be called from outside the parser. This method - /// is only public from inside the Sequence and Mapping Write - /// methods. - /// - /// Were the output data go's - protected internal virtual void Write (WriteStream stream) {} - - /// - /// The ToString method here, and in all the classses - /// derived from this class, is used mainly for debugging - /// purpose. ToString returns a xml-like textual representation - /// of the objects. It's very useful to see how a Yaml document - /// has been parsed because of the disambiguous representation - /// of this notation. - /// - public override abstract string ToString (); - - /// - /// Node info returns a YAML node and is also mostly used - /// for debugging the parser. This could be used for - /// traversing the meta-info of another YAML tree - /// - public abstract Node Info (); - } -} diff --git a/thirdparty/yaml/Null.cs b/thirdparty/yaml/Null.cs deleted file mode 100644 index f68eb5fbaa..0000000000 --- a/thirdparty/yaml/Null.cs +++ /dev/null @@ -1,100 +0,0 @@ -// ==================================================================================================== -// YAML Parser for the .NET Framework -// ==================================================================================================== -// -// Copyright (c) 2006 -// Christophe Lambrechts -// Jonathan Slenders -// -// ==================================================================================================== -// This file is part of the .NET YAML Parser. -// -// This .NET YAML parser is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation; either version 2.1 of the License, or -// (at your option) any later version. -// -// The .NET YAML parser is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with Foobar; if not, write to the Free Software -// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USAusing System.Reflection; -// ==================================================================================================== - -using System; - -namespace Yaml -{ - /// - /// Class for storing a Yaml Null node - /// tag:yaml.org,2002:null - /// - public class Null : Scalar - { - /// Null Constructor - public Null () : base ("tag:yaml.org,2002:null", NodeType.Null) { } - - /// Parse a null node - public Null (ParseStream stream) : - base ("tag:yaml.org,2002:null", NodeType.Null) - { - // An empty string is a valid null node - if (stream.EOF) - return; - - else - { - // Read the first 4 chars - char [] chars = new char [8]; - int length = 0; - for (int i = 0; i < chars.Length && ! stream.EOF; i ++) - { - chars [i] = stream.Char; - length ++; - stream.Next (); - } - - // Compare - if (length == 1) - { - string s = "" + chars [0]; - - // Canonical notation - if (s == "~") - return; - } - if (length == 4) - { - string s = "" + chars [0] + chars [1] + chars [2] + chars [3]; - - // null, Null, NULL - if (s == "NULL" || s == "Null" || s == "null") - return; - } - - throw new ParseException (stream, "Not NULL"); - } - } - - /// Content property - public object Content - { - get { return null; } - } - - /// To String - public override string ToString () - { - return "[NULL]~[/NULL]"; - } - - /// Write to YAML - protected internal override void Write (WriteStream stream) - { - stream.Append ("~"); - } - } -} diff --git a/thirdparty/yaml/ParseException.cs b/thirdparty/yaml/ParseException.cs deleted file mode 100644 index b4298a0ed4..0000000000 --- a/thirdparty/yaml/ParseException.cs +++ /dev/null @@ -1,63 +0,0 @@ -// ==================================================================================================== -// YAML Parser for the .NET Framework -// ==================================================================================================== -// -// Copyright (c) 2006 -// Christophe Lambrechts -// Jonathan Slenders -// -// ==================================================================================================== -// This file is part of the .NET YAML Parser. -// -// This .NET YAML parser is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation; either version 2.1 of the License, or -// (at your option) any later version. -// -// The .NET YAML parser is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with Foobar; if not, write to the Free Software -// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USAusing System.Reflection; -// ==================================================================================================== - -using System; - -namespace Yaml -{ - /// - /// ParseException, could be thrown while parsing a YAML stream - /// - public class ParseException : Exception - { - // Line of the Yaml stream/file where the fault occures - private readonly int linenr; - - /// Constructor - /// The parse stream (contains the line number where it went wrong) - /// Info about the exception - public ParseException (ParseStream stream, string message) : - base ("Parse error near line " + stream.CurrentLine + ": " + message) - { - this.linenr = stream.CurrentLine; - } - - /// Constructor - /// The parse stream (contains the line number where it went wrong) - /// The exception that is for example throwed again - public ParseException (ParseStream stream, Exception child) : - base ( "Parse error near line " + stream.CurrentLine, child ) - { - this.linenr = stream.CurrentLine; - } - - /// The line where the error occured - public int LineNumber - { - get { return linenr; } - } - } -} diff --git a/thirdparty/yaml/ParseStream.cs b/thirdparty/yaml/ParseStream.cs deleted file mode 100644 index 271a59e5ec..0000000000 --- a/thirdparty/yaml/ParseStream.cs +++ /dev/null @@ -1,899 +0,0 @@ -// ==================================================================================================== -// YAML Parser for the .NET Framework -// ==================================================================================================== -// -// Copyright (c) 2006 -// Christophe Lambrechts -// Jonathan Slenders -// -// ==================================================================================================== -// This file is part of the .NET YAML Parser. -// -// This .NET YAML parser is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation; either version 2.1 of the License, or -// (at your option) any later version. -// -// The .NET YAML parser is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with Foobar; if not, write to the Free Software -// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USAusing System.Reflection; -// ==================================================================================================== - -using System; -using System.Collections; - -using System.IO; - -namespace Yaml -{ - /// - /// The Preprocessor class - /// Given a character stream, this class will - /// walk through that stream. - /// NOTE: Comments are not longer skipped at this level, - /// but now in the last level instead. (because of - /// problems with comments within the buffer) - /// NOTE: Null characters are skipped, read nulls should - /// be escaped. \0 - /// - public class Preprocessor - { - private TextReader stream; - private int currentline = 1; // Line numbers start with one - private bool literal = false; // Parse literal/verbatim - - /// Constuctor - public Preprocessor (TextReader stream) - { - this.stream = stream; - } - - /// Jump to the next character - public void Next () - { - // Transition to the next line? - if (Char == '\n') - currentline ++; - - // Not yet passed the end of file - if (! EOF) - { - // Next - stream.Read (); - - // Skip null chars - while (stream.Peek () == '\0') - stream.Read (); - } - } - - /// Start parsing literal - public void StartLiteral () - { - literal = true; - } - - /// Stop parsing literal - public void StopLiteral () - { - if (literal) - literal = false; - else - throw new Exception ("Called StopLiteral without " + - "calling StartLiteral before"); - } - - /// Literal parsing - public bool Literal - { - get { return literal; } - // No set method, setting must by using the {Start,Stop}Literal - // methods. They provide mory symmetry in the parser. - } - - /// The current character - public char Char - { - get - { - if (EOF) - return '\0'; - else - return (char) stream.Peek (); - } - } - - /// End of file/stream - public bool EOF - { - get { return stream.Peek () == -1; } - } - - /// Returns the current line number - public int CurrentLine - { - get { return currentline; } - } - } - - /// - /// The indentation processor, - /// This class divides the stream from the preprocessor - /// in substreams, according to the current level - /// of indentation. - /// - public class IndentationProcessor : Preprocessor - { - // While trying to readahead over whitespaces, - // This is how many whitespaces were skipped that weren't yet read - private int whitespaces = 0; - private int whitespacesSkipped = 0; - - // Reached the end - private bool endofstream = false; - - // Current level of indentation - private int indentationLevel = 0; - private bool indentationRequest = false; - private Stack indentationStack = new Stack (); - - /// Constructor - public IndentationProcessor (TextReader stream) : base (stream) { } - - /// - /// Request an indentation. When we meet a \n and the following - /// line is more indented then the current indentationlever, then - /// save this request - /// - public void Indent () - { - if (Literal) - throw new Exception ("Cannot (un)indent while literal parsing " + - "has been enabled"); - else - { - // Handle double requests - if (indentationRequest) - indentationStack.Push ((object) indentationLevel); - - // Remember - indentationRequest = true; - } - } - - /// Cancel the last indentation - public void UnIndent () - { - if (Literal) - throw new Exception ("Cannot (un)indent while literal parsing " + - "has been enabled"); - else - { - // Cancel the indentation request - if (indentationRequest) - { - indentationRequest = false; - return; - } - - // Unpop the last indentation - if (indentationStack.Count > 0) - indentationLevel = (int) indentationStack.Pop (); - - // When not indented - else - throw new Exception ("Unable to unindent a not indented parse stream"); - - // Parent stream not yet finished - // Skipped whitespaces in the childstream (at that time assumed to be - // indentation) can become content. - if (endofstream && indentationLevel <= whitespaces) - { - endofstream = false; - if (whitespaces == this.indentationLevel) - whitespaces = 0; - } - } - } - - /// Go to the next parsable char in the stream - public new void Next () - { - if (endofstream) - return; - - // Are there still whitespaces to skip - if (whitespaces > 0) - { - // All whitespaces were skipped - if (whitespaces == whitespacesSkipped + this.indentationLevel) - whitespaces = 0; - - // Else, skip one - else - { - whitespacesSkipped ++; - return; - } - } - - // All whitespaces have been skipped - if (whitespaces == 0 && ! base.EOF) - { - // When a char is positioned at a newline '\n', - // then skip 'indentation' chars and continue. - // When there are less spaces available, then we are - // at the end of the (sub)stream - if (! base.EOF && base.Char == '\n' && ! Literal) - { - // Skip over newline - base.Next (); - - // Skip indentation (and count the spaces) - int i = 0; - while (! base.EOF && base.Char == ' ' && i < this.indentationLevel) - { - i ++; - base.Next (); - } - - // Not enough indented? - if (i < this.indentationLevel) - { - // Remember the number of whitespaces, and - // continue at the moment that the indentationlevel - // drops below this number of whitespaces - whitespaces = i; - whitespacesSkipped = 0; - endofstream = true; - return; - } - // Indentation request - else if (indentationRequest) - { - while (! base.EOF && base.Char == ' ') - { - i ++; - base.Next (); - } - - // Remember current indentation - indentationStack.Push ((object) indentationLevel); - indentationRequest = false; - - // Number of spaces before this line is equal to the - // current level of indentation, so the - // indentation request cannot be fulfilled - if (indentationLevel == i) - { - whitespaces = i; - whitespacesSkipped = 0; - endofstream = true; - return; - } - else // i > indentationLevel - indentationLevel = i; - } - } - else - // Next char - base.Next (); - } - else - endofstream = true; - } - - /// Reads the current char from the stream - public new char Char - { - get - { - // In case of spaces - if (whitespaces > 0) - return ' '; - - // \0 at the end of the stream - else if (base.EOF || endofstream) - return '\0'; - - // Return the char - else - return base.Char; - } - } - - /// End of File/Stream - public new bool EOF - { - get { return endofstream || base.EOF; } - } - } - - /// - /// Third stream processor, this class adds a buffer with a maximum - /// size of 1024 chars. The buffer cannot encapsulate multiple lines - /// because that could do strange things while rewinding/indenting - /// - - public class BufferStream : IndentationProcessor - { - LookaheadBuffer buffer = new LookaheadBuffer (); - - // When the buffer is used, this is true - private bool useLookaheadBuffer = false; - - // In use, but requested to destroy. The buffer will keep to exists - // (only in this layer) and shall be destroyed when we move out of - // the buffer - private bool destroyRequest = false; - - /// Constructor - public BufferStream (TextReader stream) : base (stream) { } - - /// Build lookahead buffer - public void BuildLookaheadBuffer () - { - if (Literal) - throw new Exception ("Cannot build a buffer while " + - "literal parsing is enabled"); - else - { - // When the buffer is already in use - if (useLookaheadBuffer && ! destroyRequest) - throw new Exception ("Buffer already exist, cannot rebuild " + - "the buffer at this level"); - - // Cancel the destroy request - if (destroyRequest) - destroyRequest = false; - - // Or start a new buffer - else - { - buffer.Clear (); - buffer.Append (Char); - } - - useLookaheadBuffer = true; - } - } - - /// Move to the next character in the parse stream. - public new void Next () - { - // End of file (This check is not really necessary because base.next - // would skip this anyway) - if (EOF) return; - - // When it's not allowed to leave the buffer - if (useLookaheadBuffer && ! destroyRequest && ! NextInBuffer () ) - return; - - // When using the lookahead buffer - if (useLookaheadBuffer) - { - // Requested to destroy - if (destroyRequest) - { - // But not yet reached the end of the buffer - if (buffer.Position < buffer.LastPosition) - { - buffer.Position ++; - buffer.ForgetThePast (); - } - // Reached the end - else - { - buffer.Clear (); - useLookaheadBuffer = false; - destroyRequest = false; - - base.Next (); - } - } - // Continue in the buffer - else - { - // We've been here before - if (buffer.Position < buffer.LastPosition) - buffer.Position ++; - - // This is new to the buffer, but there is place - // to remember new chars - else if ( - buffer.Position == buffer.LastPosition && - ! buffer.Full) - { - // Save the next char in the buffer - base.Next(); - buffer.Append (base.Char); - } - // Otherwise, the buffer is full - else - throw new Exception ("buffer overflow"); - } - } - // Not using the buffer - else - base.Next(); - } - - /// Returns true when using a buffer - public bool UsingBuffer () - { - return useLookaheadBuffer && ! destroyRequest; - } - - /// - /// Returns true when the next char will still be in the buffer - /// (after calling next) - /// - private bool NextInBuffer () - { - return - // Using the buffer - useLookaheadBuffer && - - // Next char has been read before - (buffer.Position < buffer.LastPosition || - - // Or the next char will also be in the buffer - (Char != '\n' && ! base.EOF && - - // There is still unused space - ! buffer.Full)); - } - - /// Destroys the current lookaheadbuffer, if there is one - public void DestroyLookaheadBuffer () - { - if (useLookaheadBuffer && ! destroyRequest) - { - buffer.ForgetThePast (); - destroyRequest = true; - } - else - throw new Exception ("Called destroy buffer before building the buffer"); - } - - /// Rewind the buffer - public void RewindLookaheadBuffer () - { - if (! useLookaheadBuffer || destroyRequest) - throw new Exception ("Cannot rewind the buffer. No buffer in use"); - - else - buffer.Rewind (); - } - - /// The current character - public new char Char - { - get - { - // When using a buffer - if (useLookaheadBuffer) - return buffer.Char; - - else - return base.Char; - } - } - - /// End of stream/file - public new bool EOF - { - get - { - return - // When it's not allowed to run out of the buffer - (useLookaheadBuffer && ! destroyRequest && ! NextInBuffer () ) || - - // Not using the buffer, but the end of stream has been reached - (! useLookaheadBuffer && base.EOF); - } - } - - /// Current position in the lookahead buffer - protected int LookaheadPosition - { - get - { - if (useLookaheadBuffer) - return buffer.Position; - - else - throw new Exception ("Not using a lookahead buffer"); - } - set - { - if (useLookaheadBuffer) - { - if (value >= 0 && value <= buffer.LastPosition) - buffer.Position = value; - - else - throw new Exception ("Lookahead position not between 0 " + - "and the buffer size"); - } - else - throw new Exception ("Not using a lookahead buffer"); - } - } - } - - /// Parsestream with multilever buffer - public class MultiBufferStream : BufferStream - { - private Stack bufferStack = new Stack (); // Top is current buffer start - - /// Constructor - public MultiBufferStream (TextReader stream) : base (stream) { } - - /// Destroy the current buffer - public new void BuildLookaheadBuffer () - { - if (Literal) - throw new Exception ("Cannot build a buffer while " + - "literal parsing is enabled"); - else - { - // Already using a buffer - if (base.UsingBuffer ()) - // Remember the current position - bufferStack.Push ((object) base.LookaheadPosition); - - // Otherwise, create a new buffer - else - { - // Remember the current position (= 0) - bufferStack .Push ((object) 0); - - base.BuildLookaheadBuffer (); - } - } - } - - /// Destroy the current buffer - public new void DestroyLookaheadBuffer () - { - // Clear the buffer info when we runned out of the buffer, - if ( ! base.UsingBuffer () ) - bufferStack.Clear (); - - else - { - // Unpop the buffers start index - bufferStack.Pop (); - - // Destroy it when the last buffer is gone - if (bufferStack.Count == 0) - base.DestroyLookaheadBuffer (); - } - } - - /// Rewind the current buffer - public new void RewindLookaheadBuffer () - { - if (base.UsingBuffer () ) - base.LookaheadPosition = (int) bufferStack.Peek (); - else - throw new Exception ("Rewinding not possible. Not using a " + - "lookahead buffer."); - } - } - - /// - /// Drop the comments - /// (This is disabled when literal parsing is enabled) - /// - public class DropComments : MultiBufferStream - { - /// Constructor - public DropComments (TextReader stream) : base (stream) { } - - /// Move to the next character in the parse stream. - public new void Next () - { - base.Next (); - - // Skip comments - if (base.Char == '#' && ! Literal) - while (! base.EOF && base.Char != '\n') - base.Next (); - } - } - - /// - /// This layer removes the trailing newline at the end of each (sub)stream - /// - public class DropTrailingNewline : DropComments - { - // One char buffer - private bool newline = false; - - /// Constructor - public DropTrailingNewline (TextReader stream) : base (stream) { } - - /// The current character - public new char Char - { - get - { - if (EOF) - return '\0'; - else if (newline) - return '\n'; - else - return base.Char; - } - } - - /// End of File/Stream - public new bool EOF - { - get { return ! newline && base.EOF; } - } - - /// Skip space characters - public int SkipSpaces () - { - int count = 0; - while (Char == ' ') - { - Next (); - count ++; - } - return count; - } - - /// Move to the next character in the parse stream. - public new void Next () - { - Next (false); - } - - /// Move to the next character in the parse stream. - /// Forget the last newline - public void Next (bool dropLastNewLine) - { - if (newline) - newline = false; - else - { - base.Next (); - - if (dropLastNewLine && ! base.EOF && Char == '\n') - { - base.Next (); - - if (base.EOF) - newline = false; - else - newline = true; - } - } - } - } - - - /// - /// Stops parsing at specific characters, useful for parsing inline - /// structures like (for instance): - /// - /// [aaa, bbb, ccc, {ddd: eee, "fff": ggg}] - /// - public class ParseStream : DropTrailingNewline - { - private Stack stopstack = new Stack (); - - /// Constructor - public ParseStream (TextReader stream) : base (stream) { } - - /// Set the characters where we should stop. - public void StopAt (char [] characters) - { - stopstack.Push (characters); - } - - /// Unset the characters where we should stop. - public void DontStop () - { - if (stopstack.Count > 0) - stopstack.Pop (); - else - throw new Exception ("Called DontStop without " + - "calling StopAt before"); - } - - /// True when we have to stop here - private bool StopNow - { - get { - if (stopstack.Count > 0) - foreach (char c in (char []) stopstack.Peek ()) - if (c == base.Char) - return true; - - return false; - } - } - - /// Start parsing literal - public new void StartLiteral () - { - base.StartLiteral (); - - // Parsing literal disables stopping - StopAt (new Char [] { }); - } - - /// Stop parsing literal - public new void StopLiteral () - { - base.StopLiteral (); - - DontStop (); - } - /// Move to the next character in the parse stream. - public new void Next () - { - Next (false); - } - - /// Move to the next character in the parse stream. - public new void Next (bool dropLastNewLine) - { - if ( ! StopNow ) - base.Next (dropLastNewLine); - } - - /// The current character - public new char Char - { - get - { - if (StopNow) - return '\0'; - - else - return base.Char; - } - } - - /// End of stream/file - public new bool EOF - { - get { return StopNow || base.EOF; } - } - } - - /// - /// The lookahead buffer, used by the buffer layer in the parser - /// - class LookaheadBuffer - { - // The buffer array - private char [] buffer = new char [1024]; - - private int size = 0; // 0 = Nothing in the buffer - private int position = -1; // Current position - private int rotation = 0; // Start of circular buffer - - /// Character at the current position - public char Char - { - get - { - if (size > 0) - return buffer [(position + rotation) % buffer.Length]; - - else - throw new Exception ("Trying to read from an emty buffer"); - } - } - - /// The current position - public int Position - { - get { return position; } - - set - { - if (value >= 0 && value < size) - position = value; - else - throw new Exception ("Buffer position should be " + - "between zero and 'size' "); - } - } - - /// The last possible postition which could be set - public int LastPosition - { - get { return size - 1; } - } - - /// - /// The last possible position which could be set if - /// the buffer where full - /// - public int MaxPosition - { - get { return buffer.Length - 1; } - } - - /// True when the buffer is full - public bool Full - { - get { return size == buffer.Length; } - } - - /// Current buffer size - public int Size - { - get { return size; } - } - - /// Append a character to the buffer - public void Append (char c) - { - // Appending is only possible when the current position is the - // last in the buffer - if (position < LastPosition) - throw new Exception ("Appending to buffer only possible " + - "when the position is the last"); - - // Buffer overflow - if (size == buffer.Length) - throw new Exception ("Buffer full"); - - // Append - position ++; - size ++; - buffer [(position + rotation) % buffer.Length] = c; - } - - /// Rewind the buffer - public void Rewind () - { - position = 0; - } - - /// Reset (clear) the buffer - public void Clear () - { - position = -1; - size = 0; - } - - /// Move to the next character - public void Next () - { - if (Position < Size) - Position ++; - - else throw new Exception ("Cannot move past the buffer"); - } - - /// - /// Remove characters from the buffer before the current character - /// - public void ForgetThePast () - { - // Size becomes smaller, characters before the position should be dropped - size -= position; - - // The current position becomes the new startposition - rotation = (rotation + position + buffer.Length) % buffer.Length; - - // The current position in the new buffer becomes zero - position = 0; - } - } -} diff --git a/thirdparty/yaml/Scalar.cs b/thirdparty/yaml/Scalar.cs deleted file mode 100644 index 9d2cb849c0..0000000000 --- a/thirdparty/yaml/Scalar.cs +++ /dev/null @@ -1,137 +0,0 @@ -// ==================================================================================================== -// YAML Parser for the .NET Framework -// ==================================================================================================== -// -// Copyright (c) 2006 -// Christophe Lambrechts -// Jonathan Slenders -// -// ==================================================================================================== -// This file is part of the .NET YAML Parser. -// -// This .NET YAML parser is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation; either version 2.1 of the License, or -// (at your option) any later version. -// -// The .NET YAML parser is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with Foobar; if not, write to the Free Software -// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USAusing System.Reflection; -// ==================================================================================================== - -#define SUPPORT_NULL_NODES -#define SUPPORT_INTEGER_NODES -#define SUPPORT_FLOAT_NODES -#define SUPPORT_BOOLEAN_NODES -#define SUPPORT_TIMESTAMP_NODES - -using System; - -namespace Yaml -{ - /// - /// All Yaml scalars are derived from this class - /// - public abstract class Scalar : Node - { - /// Constructor - public Scalar (string uri, NodeType nodetype) : base (uri, nodetype) { } - - - /// - /// Parses a scalar - /// - /// Integer - /// String - /// Boolean - /// Null - /// Timestamp - /// Float - /// Binary - /// - /// - /// - /// Binary is only parsed behind an explicit !!binary tag (in Node.cs) - /// - public static new Scalar Parse (ParseStream stream) - { - // ----------------- - // Parse scalars - // ----------------- - - stream.BuildLookaheadBuffer (); - - // Try Null -#if SUPPORT_NULL_NODES - try - { - Scalar s = new Null (stream); - stream.DestroyLookaheadBuffer (); - return s; - } catch { } -#endif - // Try boolean -#if SUPPORT_BOOLEAN_NODES - stream.RewindLookaheadBuffer (); - try - { - Scalar scalar = new Boolean (stream); - stream.DestroyLookaheadBuffer (); - return scalar; - } - catch { } -#endif - // Try integer -#if SUPPORT_INTEGER_NODES - stream.RewindLookaheadBuffer (); - try - { - Scalar scalar = new Integer (stream); - stream.DestroyLookaheadBuffer (); - return scalar; - } catch { } -#endif - // Try Float -#if SUPPORT_FLOAT_NODES - stream.RewindLookaheadBuffer (); - try - { - Scalar scalar = new Float (stream); - stream.DestroyLookaheadBuffer (); - return scalar; - } - catch { } -#endif - // Try timestamp -#if SUPPORT_TIMESTAMP_NODES - stream.RewindLookaheadBuffer (); - try { - Scalar scalar = new Timestamp (stream); - stream.DestroyLookaheadBuffer (); - return scalar; - } catch { } -#endif - // Other scalars are strings - stream.RewindLookaheadBuffer (); - stream.DestroyLookaheadBuffer (); - - return new String (stream); - } - - /// Node info -// TODO, move to each induvidual child - public override Node Info () - { - Mapping mapping = new Mapping (); - mapping.AddMappingNode (new String ("kind"), new String ("scalar")); - mapping.AddMappingNode (new String ("type_id"), new String (URI)); - mapping.AddMappingNode (new String ("value"), this); - return mapping; - } - } -} diff --git a/thirdparty/yaml/Sequence.cs b/thirdparty/yaml/Sequence.cs deleted file mode 100644 index e26bdbd8aa..0000000000 --- a/thirdparty/yaml/Sequence.cs +++ /dev/null @@ -1,197 +0,0 @@ -// ==================================================================================================== -// YAML Parser for the .NET Framework -// ==================================================================================================== -// -// Copyright (c) 2006 -// Christophe Lambrechts -// Jonathan Slenders -// -// ==================================================================================================== -// This file is part of the .NET YAML Parser. -// -// This .NET YAML parser is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation; either version 2.1 of the License, or -// (at your option) any later version. -// -// The .NET YAML parser is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with Foobar; if not, write to the Free Software -// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USAusing System.Reflection; -// ==================================================================================================== - -using System; -using System.Collections; - -namespace Yaml -{ - /// - /// Represents a Yaml Sequence - /// - public class Sequence : Node - { - private ArrayList childNodes = new ArrayList (); - - /// New, empty sequence - public Sequence ( ) : base ("tag:yaml.org,2002:seq", NodeType.Sequence) { } - - /// New sequence from a node array - public Sequence (Node [] nodes) : - base ("tag:yaml.org,2002:seq", NodeType.Sequence) - { - foreach (Node node in nodes) - childNodes.Add (node); - } - - /// Parse a sequence - public Sequence (ParseStream stream) : - base ("tag:yaml.org,2002:seq", NodeType.Sequence) - { - // Is this really a sequence? - if (stream.Char == '-') - { - // Parse recursively - do { - // Override the parent's stop chars, never stop - stream.StopAt (new char [] { } ); - - // Skip over '-' - stream.Next (); - - // Parse recursively - stream.Indent (); - AddNode (Parse (stream)); - stream.UnIndent (); - - // Re-accept the parent's stop chars - stream.DontStop (); - } - while ( ! stream.EOF && stream.Char == '-' ); - } - // Or inline Sequence - else if (stream.Char == '[') - { - // Override the parent's stop chars, never stop - stream.StopAt (new char [] { }); - - // Skip '[' - stream.Next (); - - do { - stream.StopAt (new char [] {']', ','}); - stream.Indent (); - AddNode (Parse (stream, false)); - stream.UnIndent (); - stream.DontStop (); - - // Skip ',' - if (stream.Char != ']' && stream.Char != ',') - { - stream.DontStop (); - throw new ParseException (stream, "Comma expected in inline sequence"); - } - - if (stream.Char == ',') - { - stream.Next (); - stream.SkipSpaces (); - } - } - while ( ! stream.EOF && stream.Char != ']'); - - // Re-accept the parent's stop chars - stream.DontStop (); - - // Skip ']' - if (stream.Char == ']') - stream.Next (true); - else - throw new ParseException (stream, "Inline sequence not closed"); - - } - // Throw an exception when not - else - throw new Exception ("This is not a sequence"); - } - - /// Add a node to this sequence - public void AddNode (Node node) - { - if (node != null) - childNodes.Add (node); - else - childNodes.Add (new Null ()); - } - - /// Get a node - public Node this [int index] - { - get - { - if (index > 0 && index < childNodes.Count) - return (Node) childNodes [index]; - - else - throw new IndexOutOfRangeException (); - } - } - - /// The node array - public Node [] Nodes - { - get - { - Node [] nodes = new Node [childNodes.Count]; - - for (int i = 0; i < childNodes.Count; i ++) - nodes [i] = (Node) childNodes [i]; - - return nodes; - } - } - - /// Textual destription of this node - public override string ToString () - { - string result = ""; - foreach (Node node in childNodes) - result += node.ToString (); - - return "[SEQUENCE]" + result + "[/SEQUENCE]"; - } - - /// Node info - public override Node Info () - { - Mapping mapping = new Mapping (); - mapping.AddMappingNode (new String ("kind"), new String ("sequence")); - mapping.AddMappingNode (new String ("type_id"), new String (URI)); - - Sequence childs = new Sequence (); - - foreach (Node child in childNodes) - childs.AddNode (child.Info ()); - - mapping.AddMappingNode (new String ("value"), childs); - return mapping; - } - - /// Write back to a stream - protected internal override void Write (WriteStream stream) - { - foreach (Node node in childNodes) - { - stream.Append ("- "); - - stream.Indent (); - node.Write (stream); - stream.UnIndent (); - } - } - - } -} diff --git a/thirdparty/yaml/String.cs b/thirdparty/yaml/String.cs deleted file mode 100644 index 25243dfbe2..0000000000 --- a/thirdparty/yaml/String.cs +++ /dev/null @@ -1,449 +0,0 @@ -// ==================================================================================================== -// YAML Parser for the .NET Framework -// ==================================================================================================== -// -// Copyright (c) 2006 -// Christophe Lambrechts -// Jonathan Slenders -// -// ==================================================================================================== -// This file is part of the .NET YAML Parser. -// -// This .NET YAML parser is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation; either version 2.1 of the License, or -// (at your option) any later version. -// -// The .NET YAML parser is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with Foobar; if not, write to the Free Software -// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USAusing System.Reflection; -// ==================================================================================================== - -using System; - -// Unicode support: -// http://www.yoda.arachsys.com/csharp/unicode.html - -namespace Yaml -{ - /// - /// Yaml String node - /// - public class String : Scalar - { - private string content; - private bool block = false; - private bool folded = false; - - /// New string constructor - public String (string val) : - base ("tag:yaml.org,2002:str", NodeType.String) - { - content = val; - } - - /// Parse a string - public String (ParseStream stream) : - base ("tag:yaml.org,2002:str", NodeType.String) - { - // set flags for folded or block scalar - if (stream.Char == '>') // TODO: '+' and '-' chomp chars - folded = true; - - else if (stream.Char == '|') - block = true; - - if (block || folded) - { - stream.Next (); - stream.SkipSpaces (); - } - - // ----------------- - // Folded Scalar - // ----------------- - if (folded) - { - System.Text.StringBuilder builder = new System.Text.StringBuilder (); - - // First line (the \n after the first line is always ignored, - // not replaced with a whitespace) - while (! stream.EOF && stream.Char != '\n') - { - builder.Append (stream.Char); - stream.Next (); - } - - // Skip the first newline - stream.Next (); - - // Next lines (newlines will be replaced by spaces in folded scalars) - while (! stream.EOF) - { - if (stream.Char == '\n') - builder.Append (' '); - else - builder.Append (stream.Char); - - stream.Next (true); - } - content = builder.ToString (); - } - - // ----------------- - // Block Scalar (verbatim block without folding) - // ----------------- - else if (block) - { -/* -Console.Write(">>"); -while (! stream.EOF) -{ - Console.Write (stream.Char); - stream.Next(); -} -Console.Write("<<"); -// */ - - System.Text.StringBuilder builder = new System.Text.StringBuilder (); - while (! stream.EOF) - { - builder.Append (stream.Char); - stream.Next (true); - } - content = builder.ToString (); - } - - // String between double quotes - if (stream.Char == '\"') - content = ParseDoubleQuoted (stream); - - // Single quoted string - else if (stream.Char == '\'') - content = ParseSingleQuoted (stream); - - // String without quotes - else - content = ParseUnQuoted (stream); - } - - /// - /// Parses a String surrounded with single quotes - /// - private string ParseSingleQuoted (ParseStream stream) - { - System.Text.StringBuilder builder = new System.Text.StringBuilder (); - - // Start literal parsing - stream.StartLiteral (); - - // Skip ''' - stream.Next (true); - - while (! stream.EOF) - { - if (stream.Char == '\'') - { - stream.Next (); - - // Escaped single quote - if (stream.Char == '\'') - builder.Append (stream.Char); - - // End of string - else - break; - } - else - builder.Append (stream.Char); - - stream.Next (); - - // Skip \' - if (stream.EOF) - { - stream.StopLiteral (); - throw new ParseException (stream, - "Single quoted string not closed"); - } - } - - // Stop literal parsing - stream.StopLiteral (); - - return builder.ToString(); - } - - /// - /// Parses a String surrounded with double quotes - /// - private string ParseDoubleQuoted(ParseStream stream) - { - System.Text.StringBuilder builder = new System.Text.StringBuilder (); - - // Skip '"' - stream.Next (); - - // Stop at " - stream.StopAt (new char [] {'\"'} ); - - while (! stream.EOF) - { - if (stream.Char == '\n') - { - builder.Append (' '); - stream.Next (); - } - else - builder.Append (NextUnescapedChar (stream)); - } - - // Don't stop at " - stream.DontStop (); - - // Skip '"' - if (stream.Char != '\"') - throw new ParseException (stream, - "Double quoted string not closed"); - else - stream.Next (true); - - return builder.ToString(); - } - - /// - /// Parses a String surrounded without nothing - /// - private string ParseUnQuoted(ParseStream stream) - { - System.Text.StringBuilder builder = new System.Text.StringBuilder (); - - while (! stream.EOF) - builder.Append (NextUnescapedChar (stream)); - - // Trimming left - int count = 0; - while (count < builder.Length && - (builder [count] == ' ' || builder [count] == '\t')) - count ++; - - if (count >= 0) - builder.Remove (0, count); - - // Trimming right - count = 0; - while (count < builder.Length && - (builder [builder.Length - count - 1] == ' ' || - builder [builder.Length - count - 1] == '\t')) - count ++; - - if (count >= 0) - builder.Remove (builder.Length - count, count); - - return builder.ToString(); - } - - /// - /// Reads a character from the stream, unescapes it, - /// and moves to the next character. - /// - private char NextUnescapedChar (ParseStream stream) - { - char c = stream.Char; - - // If escaped - if (c == '\\') - { - // Never stop, every special character - // looses its meaning behind a backslash. - stream.StopAt (new Char [] { }); - - stream.Next (true); - c = stream.Char; - - // ASCII null - if (c == '0') c = '\0'; - - // ASCII bell - else if (c == 'a') c = (char) 0x7; - - // ASCII backspace - else if (c == 'b') c = (char) 0x8; - - // ASCII horizontal tab - else if (c == 't') c = (char) 0x9; - - // ASCII newline - else if (c == 'n') c = (char) 0xA; - - // ASCII vertical tab - else if (c == 'v') c = (char) 0xB; - - // ASCII form feed - else if (c == 'f') c = (char) 0xC; - - // ASCII carriage return - else if (c == 'r') c = (char) 0xD; - - // ASCII escape - else if (c == 'e') c = (char) 0x1D; - - // Unicode next line - else if (c == 'N') c = (char) 0x85; - - // Unicode non breaking space - else if (c == '_') c = (char) 0xA0; - - // TODO larger unicode characters - - // Unicode line separator - // else if (c == 'L') c = (char) 0x20282028; - - // 8 bit hexadecimal - else if (c == 'x') - { - int c_int = (char) 0; - - for (int i = 0; i < 2; i ++) - { - c_int *= 16; - - stream.Next (); - char d = stream.Char; - - if (d >= '0' && d <= '9') - c_int += d - '0'; - - else if (d >= 'a' && d <= 'f') - c_int += d - 'a'; - - else if (d >= 'A' && d <= 'F') - c_int += d - 'A'; - else - { - stream.DontStop (); - throw new ParseException (stream, - "Invalid escape sequence"); - } - } - c = (char) c_int; - } - - stream.Next (true); - - // Restore last stop settings - stream.DontStop (); - } - else - stream.Next (true); - - return c; - } - - /// Content property - public string Content - { - get { return content; } - set { content = value; } - } - - /// To String - public override string ToString () - { - return "[STRING]" + content + "[/STRING]"; - } - - /// Write - protected internal override void Write (WriteStream stream) - { - // TODO, not required, but writing to block or folded scalars - // generates a little more neat code. - - // Analyze string - bool multiline = false; - bool mustbequoted = false; - - for (int i = 0; i < content.Length; i ++) - { - char c = content [i]; - - if (c == '\n') - multiline = true; - - // We quote everything except strings like /[a-zA-Z]*/ - // However there are more strings which don't require - // quotes. - if ( ! ( c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')) - mustbequoted = true; - } - - // Double quoted strings - if (mustbequoted) - { - stream.Append ("\""); - - for (int i = 0; i < content.Length; i ++) - { - char c = content [i]; - - // Backslash - if (c == '\\') stream.Append ("\\" + "\\"); - - // Double quote - else if (c == '\"') stream.Append ("\\" + "\""); - - // Single quote - else if (c == '\'') stream.Append ("\\" + "\'"); - - // ASCII null - else if (c == '\0') stream.Append ("\\0"); - - // ASCII bell - else if (c == (char) 0x7) stream.Append ("\\a"); - - // ASCII backspace - else if (c == (char) 0x8) stream.Append ("\\b"); - - // ASCII horizontal tab - else if (c == (char) 0x9) stream.Append ("\\t"); - - // ASCII newline - else if (c == (char) 0xA) stream.Append ("\\n"); - - // ASCII vertical tab - else if (c == (char) 0xB) stream.Append ("\\v"); - - // ASCII form feed - else if (c == (char) 0xC) stream.Append ("\\f"); - - // ASCII carriage return - else if (c == (char) 0xD) stream.Append ("\\r"); - - // ASCII escape - else if (c == (char) 0x1D) stream.Append ("\\e"); - - // Unicode next line - else if (c == (char) 0x85) stream.Append ("\\N"); - - // Unicode non breaking space - else if (c == (char) 0xA0) stream.Append ("\\_"); - - // TODO larger unicode characters - - else - stream.Append ("" + c); - } - stream.Append ("\""); - } - - // Simple non-quoted strings - else - stream.Append (content); - } - } -} diff --git a/thirdparty/yaml/Timestamp.cs b/thirdparty/yaml/Timestamp.cs deleted file mode 100644 index d8dc3f8e6f..0000000000 --- a/thirdparty/yaml/Timestamp.cs +++ /dev/null @@ -1,356 +0,0 @@ -// ==================================================================================================== -// YAML Parser for the .NET Framework -// ==================================================================================================== -// -// Copyright (c) 2006 -// Christophe Lambrechts -// Jonathan Slenders -// -// ==================================================================================================== -// This file is part of the .NET YAML Parser. -// -// This .NET YAML parser is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation; either version 2.1 of the License, or -// (at your option) any later version. -// -// The .NET YAML parser is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with Foobar; if not, write to the Free Software -// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USAusing System.Reflection; -// ==================================================================================================== - -using System; - -namespace Yaml -{ - /// - /// Yaml Timestamp node - /// uri: tag:yaml.org,2002:timestamp - /// - public class Timestamp : Scalar - { - private System.DateTime content; - - /// - /// Represents the offset from the UTC time in hours - /// - /// - /// We use this extra variable for compatibility with Mono - /// and .NET 1.0. .NET 2.0 has an extra property for - /// System.Datetime for the timezone. - /// - private double timezone = 0; - - /// - /// Basic constructor that takes a given datetime - /// - /// A .NET 1.0 datetime - public Timestamp (DateTime datetime) : - base ("tag:yaml.org,2002:timestamp", NodeType.Timestamp) - { - this.content = datetime; - this.timezone = 0; - } - - /// - /// Basic constructor, that also gives the posibility to set a timezone - /// - /// A .NET 1.0 datetime - /// The offset, in hours,r to UTC that determine the timezone - public Timestamp (DateTime datetime, double timezone) : - base ("tag:yaml.org,2002:timestamp", NodeType.Timestamp) - { - this.content = datetime; - this.timezone = timezone; - } - - /// Content property - public System.DateTime Content - { - get { return content; } - set { content = value; } - } - - /// Timezone, an offset in hours - public double Timezone - { - get { return timezone; } - set { timezone = value; } - } - - /// To String - public override string ToString () - { - return "[TIMESTAMP]" + YamlString () + "[/TIMESTAMP]"; - } - - /// Parse a DateTime - public Timestamp (ParseStream stream) : - base ("tag:yaml.org,2002:timestamp", NodeType.Timestamp) - { - int year = 0; - int month = 0; - int day = 0; - int hour = 0; - int minutes = 0; - int seconds = 0; - int ms = 0; - - try - { - // Parse year - year = ParseNumber (stream, 4); - SkipChar (stream, '-'); - - // Parse month - month = ParseNumber (stream, 2); - SkipChar (stream, '-'); - - // Parse day - day = ParseNumber (stream, 2); - - // Additional, the time - if ( ! stream.EOF) - ParseTime (stream, out hour, out minutes, out seconds); - - // Additional, milliseconds - if ( ! stream.EOF) - ms = ParseMilliSeconds (stream); - - // Additional, the timezone - if ( ! stream.EOF) - timezone = ParseTimezone (stream); - - // If there is more, then a format exception - if ( ! stream.EOF) - throw new Exception ("More data then excepted"); - - content = new DateTime (year, month, day, hour, minutes, seconds, ms); - } - catch (Exception ex) - { - throw new ParseException (stream, ex.ToString ()); - } - } - - /// - /// Parse the time (hours, minutes, seconds) - /// - private void ParseTime (ParseStream stream, - out int hour, out int minutes, out int seconds) - { - if (stream.Char == 't' || stream.Char == 'T') - stream.Next (true); - else - SkipWhitespace (stream); - - // Parse hour - // Note: A hour can be represented by one or two digits. - string hulp = ""; - while (stream.Char >= '0' && stream.Char <= '9' && - ! stream.EOF && hulp.Length <= 2) - { - hulp += stream.Char; - stream.Next (true); - } - hour = Int32.Parse (hulp); - - SkipChar (stream, ':'); - - // Parse minutes - minutes = ParseNumber (stream, 2); - SkipChar (stream, ':'); - - // Parse seconds - seconds = ParseNumber (stream, 2); - } - - /// - /// Parse the milliseconds - /// - private int ParseMilliSeconds (ParseStream stream) - { - int ms = 0; - - // Look for fraction - if (stream.Char == '.') - { - stream.Next (true); - - // Parse fraction, can consists of an - // unlimited sequence of numbers, we only - // look to the first three (max 1000) - int count = 0; - - while (stream.Char >= '0' && stream.Char <= '9' && - count < 3 && ! stream.EOF) - { - ms *= 10; - ms += stream.Char - '0'; - - stream.Next (true); - count ++; - } - - if (count == 1) ms *= 100; - if (count == 2) ms *= 10; - if (count == 3) ms *= 1; - - // Ignore the rest - while (stream.Char >= '0' && stream.Char <= '9' && - ! stream.EOF) - stream.Next (true); - } - return ms; - } - - /// - /// Parse the time zone - /// - private double ParseTimezone (ParseStream stream) - { - double timezone = 0; - - SkipWhitespace (stream); - - // Timezone = UTC, use by default 0 - if (stream.Char == 'Z') - stream.Next (true); - else - { - // Find the sign of the offset - int sign = 0; - - if (stream.Char == '-') - sign = -1; - - else if (stream.Char == '+') - sign = +1; - - else - throw new Exception ("Invalid time zone: " + - "unexpected character"); - - // Read next char and test for more chars - stream.Next (true); - if (stream.EOF) - throw new Exception ("Invalid time zone"); - - // Parse hour offset - // Note: A hour can be represented by one or two digits. - string hulp = ""; - while (stream.Char >= '0' && - stream.Char <= '9' && - !stream.EOF && hulp.Length <= 2) - { - hulp += (stream.Char); - stream.Next (true); - } - timezone = sign * Double.Parse (hulp); - - // Parse the minutes of the timezone - // when there is still more to parse - if ( ! stream.EOF) - { - SkipChar (stream, ':'); - int temp = ParseNumber (stream, 2); - - timezone += (temp / 60.0); - } - } - - return timezone; - } - - /// - /// Parse an integer - /// - /// - /// The number of characters that the integer is expected to be. - /// - /// The stream that will be parsed - private int ParseNumber (ParseStream stream, int length) - { - System.Text.StringBuilder hulp = new System.Text.StringBuilder (); - - int i; - for (i = 0; i < length && !stream.EOF; i++) - { - hulp.Append (stream.Char); - stream.Next (true); - } - if (i == length) - return Int32.Parse (hulp.ToString ()); - else - throw new Exception ("Can't parse number"); - - } - - /// - /// Skips a specified char, and throws an exception when - /// another char was found. - /// - private void SkipChar (ParseStream stream, char toSkip) - { - if (stream.Char == toSkip) - stream.Next (true); - else - throw new Exception ("Unexpected character"); - } - - /// - /// Skips the spaces * and tabs * in the current stream - /// - private void SkipWhitespace (ParseStream stream) - { - while ((stream.Char == ' ' || stream.Char == '\t') && ! stream.EOF) - stream.Next (true); - } - - /// Yaml notation for this datetime - private string YamlString () - { - string date = content.ToString ("yyyy-MM-ddTHH:mm:ss"); - int ms = content.Millisecond; - if (ms != 0) - { - string hulp = "" + (ms / 1000.0); - hulp = hulp.Substring(2); // Cut of the '0,', first 2 digits - - date += "." + hulp; - } - string zone = ""; - - if (timezone != 0) - { - int timezoneHour = (int) Math.Floor (timezone); - int timezoneMinutes = (int) (60 * (timezone - timezoneHour)); - - // if positif offset add '+', a '-' is default added - if (timezone > 0) - zone = "+"; - - zone += timezoneHour.ToString (); - if (timezoneMinutes != 0) - zone += ":" + timezoneMinutes; - } - else - zone = "Z"; // UTC timezone as default and if offset == 0 - - return date + zone; - } - - /// Write to YAML - protected internal override void Write (WriteStream stream) - { - stream.Append (YamlString ()); - } - } -} - - diff --git a/thirdparty/yaml/WriteStream.cs b/thirdparty/yaml/WriteStream.cs deleted file mode 100644 index 508250d311..0000000000 --- a/thirdparty/yaml/WriteStream.cs +++ /dev/null @@ -1,121 +0,0 @@ -// ==================================================================================================== -// YAML Parser for the .NET Framework -// ==================================================================================================== -// -// Copyright (c) 2006 -// Christophe Lambrechts -// Jonathan Slenders -// -// ==================================================================================================== -// This file is part of the .NET YAML Parser. -// -// This .NET YAML parser is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation; either version 2.1 of the License, or -// (at your option) any later version. -// -// The .NET YAML parser is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with Foobar; if not, write to the Free Software -// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USAusing System.Reflection; -// ==================================================================================================== - -#define ENABLE_COMPRESSION - -using System; -using System.Collections; - -using System.IO; - -namespace Yaml -{ - /// - /// Help class for writing a Yaml tree to a string - /// - public class WriteStream - { - private TextWriter stream; - private int indentation = 0; - private bool lastcharisnewline = false; - - private static string indentationChars = " "; - - /// Constructor - public WriteStream (TextWriter stream) - { - this.stream = stream; - } - - /// Append a string - public void Append (string s) - { - // Just add the text to the output stream when - // there is no indentation - if (indentation == 0) - stream.Write (s); - - // Otherwise process each individual char - else - for (int i = 0; i < s.Length; i ++) - { - // Indent after a newline - if (lastcharisnewline) - { - WriteIndentation (); - lastcharisnewline = false; - } - - // Add char - stream.Write (s [i]); - - // Remember newlines - if (s [i] == '\n') - lastcharisnewline = true; - } - } - - /// Indentation - public void Indent () - { - // Increase indentation level - indentation ++; - - // Add a newline -#if ENABLE_COMPRESSION - lastcharisnewline = false; -#else - stream.Write ("\n"); - lastcharisnewline = true; -#endif - } - - /// Write the indentation to the output stream - private void WriteIndentation () - { - for (int i = 0; i < indentation; i ++) - stream.Write (indentationChars); - } - - /// Unindent - public void UnIndent () - { - if (indentation > 0) - { - // Decrease indentation level - indentation --; - - // Add a newline - if (! lastcharisnewline) - stream.Write ("\n"); - lastcharisnewline = true; - } - else - throw new Exception ("Cannot unindent a not indented writestream."); - - } - } -} diff --git a/thirdparty/yaml/Yaml.csproj b/thirdparty/yaml/Yaml.csproj deleted file mode 100644 index ee12932481..0000000000 --- a/thirdparty/yaml/Yaml.csproj +++ /dev/null @@ -1,188 +0,0 @@ - - - Local - 9.0.30729 - 2.0 - {D4424F4D-7939-4247-98F5-6A7F6DEBA7C9} - Debug - AnyCPU - - - - - Yaml - - - JScript - Grid - IE50 - false - Library - Yaml - OnBuildSuccess - - - - - 0.0 - - - v3.5 - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - - - bin\Debug\ - false - 285212672 - false - - - DEBUG;TRACE - - - true - 4096 - false - - - false - false - false - false - 4 - full - prompt - - - .\ - false - 285212672 - false - - - TRACE - - - false - 4096 - false - - - true - false - false - false - 4 - none - prompt - - - - System - - - 3.5 - - - System.Data - - - System.XML - - - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - Code - - - - - False - .NET Framework Client Profile - false - - - False - .NET Framework 2.0 %28x86%29 - true - - - False - .NET Framework 3.0 %28x86%29 - false - - - False - .NET Framework 3.5 - false - - - False - .NET Framework 3.5 SP1 - false - - - - - - - - - - \ No newline at end of file diff --git a/thirdparty/yaml/Yaml.sln b/thirdparty/yaml/Yaml.sln deleted file mode 100644 index a451a53232..0000000000 --- a/thirdparty/yaml/Yaml.sln +++ /dev/null @@ -1,19 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 10.00 -# Visual Studio 2008 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Yaml", "Yaml.csproj", "{D4424F4D-7939-4247-98F5-6A7F6DEBA7C9}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {D4424F4D-7939-4247-98F5-6A7F6DEBA7C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D4424F4D-7939-4247-98F5-6A7F6DEBA7C9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D4424F4D-7939-4247-98F5-6A7F6DEBA7C9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D4424F4D-7939-4247-98F5-6A7F6DEBA7C9}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/thirdparty/yaml/test.yaml b/thirdparty/yaml/test.yaml deleted file mode 100644 index 0271bb757e..0000000000 --- a/thirdparty/yaml/test.yaml +++ /dev/null @@ -1,24 +0,0 @@ -? boolean: y -? float: 8.6e2 -? integer: 174832 -? null: ~ -? inline sequence: [item1, item2] -? inline mappings: {key: value, key2: value2} -? sequence: - - item 1 - - item 2 -? tricky situations: - - ? block scalar: | - regel 1 - regel 2 - - ? folded scalar: > - regel 1 - nog steeds regel 1 - - ? double quoted: "met veel escapes aa\"bb\n\'cc" - - ? met tags: - - !!int 2 - - !!string 2 - - !!float 2 - - { key: value, key 3: "{a: b}", key 2: a } - - ? [aaa]: bbb - - ? single quotes: 'regel 1 regel 2'