summaryrefslogtreecommitdiff
path: root/protocols/facebook/JSON_CAJUN/Readme.txt
diff options
context:
space:
mode:
authorVadim Dashevskiy <watcherhd@gmail.com>2012-05-15 10:38:20 +0000
committerVadim Dashevskiy <watcherhd@gmail.com>2012-05-15 10:38:20 +0000
commit48540940b6c28bb4378abfeb500ec45a625b37b6 (patch)
tree2ef294c0763e802f91d868bdef4229b6868527de /protocols/facebook/JSON_CAJUN/Readme.txt
parent5c350913f011e119127baeb32a6aedeb4f0d33bc (diff)
initial commit
git-svn-id: http://svn.miranda-ng.org/main/trunk@2 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'protocols/facebook/JSON_CAJUN/Readme.txt')
-rw-r--r--protocols/facebook/JSON_CAJUN/Readme.txt14
1 files changed, 14 insertions, 0 deletions
diff --git a/protocols/facebook/JSON_CAJUN/Readme.txt b/protocols/facebook/JSON_CAJUN/Readme.txt
new file mode 100644
index 0000000000..8b9505cebf
--- /dev/null
+++ b/protocols/facebook/JSON_CAJUN/Readme.txt
@@ -0,0 +1,14 @@
+CAJUN* is a C++ API for the JSON object interchange format. JSON is like XML, except it doesn't suck**. It is specifically designed for representing (in plain text format) structures familiar to software engineers: booleans, numerics, strings, arrays, and objects (i.e. name/value pairs, associative array, etc.); it humbly leaves text markup to XML. It is ideal for storing persistent application data, such as configuration or user data files.
+
+Too many JSON parsers I've seen suffer from overly complex designs and confusing interfaces, so in true software engineer form, I thought I could do better. The goal of JSON was to create an simple, "minimalist" interface while sacrificing absolutely no power or flexibility. The STL containers, while not without their violations of that spirit, served as an inspiration. The end result is (IMHO) an interface that should be immediately intuitive to anyone familiar with C++ and the Standard Library containers. It can best be described as working with an "element", where an element may consist of:
+* String (mimics std::string)
+* Numeric (double)
+* Boolean (bool)
+* Array (std::vector<UnknownElement>)
+* Object (unsorted std::map<std::string, UnknownElement>)
+* UnknownElement - like boost::any, but restricted to types below. Used to aggregate elements within Objects & Arrays, and for reading documents of unknown structure
+
+As with any design, sacrifices were made with CAJUN. Most situations I've encountered where JSON is well-suited (reading & writing application configuration and data files) are not typically performance bottlenecks, so simplicity, safety & flexibility were favored over raw speed. The end result is a library with simple, typesafe classes, no memory-management burden on the user, and exception-based error reporting.
+
+* C++ API for JSON. A pint on me for who ever comes up with a good meaning for "UN".
+** To be fair, XML doesn't suck intentionally, it is just often used inappropriately. \ No newline at end of file