Author: enrico
Date: Mon Feb  9 18:30:07 2015
New Revision: 228636

URL: http://llvm.org/viewvc/llvm-project?rev=228636&view=rev
Log:
Add a JSON producer to LLDB - this is a set of classes that encapsulate JSON 
objects and allow you to write them to a Stream for subsequent processing

Using this JSON producer, write a little tool that expands its own command-line 
arguments and dumps them to stdout as a JSON array


Added:
    lldb/trunk/include/lldb/Utility/JSON.h
    lldb/trunk/source/Utility/JSON.cpp
    lldb/trunk/tools/argdumper/
    lldb/trunk/tools/argdumper/argdumper.cpp
Removed:
    
lldb/trunk/test/functionalities/data-formatter/data-formatter-stl/libcxx/initializerlist/Makefile
    lldb/trunk/test/functionalities/data-formatter/typedef_array/Makefile
    lldb/trunk/test/lang/c/struct_types/Makefile
Modified:
    lldb/trunk/lldb.xcodeproj/project.pbxproj

Added: lldb/trunk/include/lldb/Utility/JSON.h
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Utility/JSON.h?rev=228636&view=auto
==============================================================================
--- lldb/trunk/include/lldb/Utility/JSON.h (added)
+++ lldb/trunk/include/lldb/Utility/JSON.h Mon Feb  9 18:30:07 2015
@@ -0,0 +1,276 @@
+//===---------------------JSON.h --------------------------------*- C++ 
-*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef utility_JSON_h_
+#define utility_JSON_h_
+
+#include "lldb/Core/Stream.h"
+
+#include <inttypes.h>
+#include <map>
+#include <memory>
+#include <stdint.h>
+#include <string>
+#include <vector>
+
+#include "llvm/Support/Casting.h"
+
+namespace lldb_private {
+    class JSONValue
+    {
+    public:
+        virtual void
+        Write (Stream& s) = 0;
+        
+        typedef std::shared_ptr<JSONValue> SP;
+        
+        enum class Kind
+        {
+            String,
+            Number,
+            True,
+            False,
+            Null,
+            Object,
+            Array
+        };
+        
+        JSONValue (Kind k) :
+        m_kind(k)
+        {}
+        
+        Kind
+        GetKind() const
+        {
+            return m_kind;
+        }
+        
+        virtual
+        ~JSONValue () = default;
+        
+    private:
+        const Kind m_kind;
+    };
+    
+    class JSONString : public JSONValue
+    {
+    public:
+        JSONString ();
+        JSONString (const char* s);
+        JSONString (const std::string& s);
+
+        JSONString (const JSONString& s) = delete;
+        JSONString&
+        operator = (const JSONString& s) = delete;
+        
+        virtual void
+        Write (Stream& s);
+        
+        typedef std::shared_ptr<JSONString> SP;
+        
+        std::string
+        GetData () { return m_data; }
+        
+        static bool classof(const JSONValue *V)
+        {
+            return V->GetKind() == JSONValue::Kind::String;
+        }
+        
+        virtual
+        ~JSONString () = default;
+        
+    private:
+        
+        static std::string
+        json_string_quote_metachars (const std::string&);
+        
+        std::string m_data;
+    };
+
+    class JSONNumber : public JSONValue
+    {
+    public:
+        JSONNumber ();
+        JSONNumber (int64_t i);
+        
+        JSONNumber (const JSONNumber& s) = delete;
+        JSONNumber&
+        operator = (const JSONNumber& s) = delete;
+
+        virtual void
+        Write (Stream& s);
+        
+        typedef std::shared_ptr<JSONNumber> SP;
+        
+        int64_t
+        GetData () { return m_data; }
+        
+        static bool classof(const JSONValue *V)
+        {
+            return V->GetKind() == JSONValue::Kind::Number;
+        }
+        
+        virtual
+        ~JSONNumber () = default;
+        
+    private:
+        int64_t m_data;
+    };
+
+    class JSONTrue : public JSONValue
+    {
+    public:
+        JSONTrue ();
+
+        JSONTrue (const JSONTrue& s) = delete;
+        JSONTrue&
+        operator = (const JSONTrue& s) = delete;
+        
+        virtual void
+        Write (Stream& s);
+        
+        typedef std::shared_ptr<JSONTrue> SP;
+        
+        static bool classof(const JSONValue *V)
+        {
+            return V->GetKind() == JSONValue::Kind::True;
+        }
+        
+        virtual
+        ~JSONTrue () = default;
+    };
+
+    class JSONFalse : public JSONValue
+    {
+    public:
+        JSONFalse ();
+
+        JSONFalse (const JSONFalse& s) = delete;
+        JSONFalse&
+        operator = (const JSONFalse& s) = delete;
+        
+        virtual void
+        Write (Stream& s);
+        
+        typedef std::shared_ptr<JSONFalse> SP;
+        
+        static bool classof(const JSONValue *V)
+        {
+            return V->GetKind() == JSONValue::Kind::False;
+        }
+        
+        virtual
+        ~JSONFalse () = default;
+    };
+
+    class JSONNull : public JSONValue
+    {
+    public:
+        JSONNull ();
+
+        JSONNull (const JSONNull& s) = delete;
+        JSONNull&
+        operator = (const JSONNull& s) = delete;
+        
+        virtual void
+        Write (Stream& s);
+        
+        typedef std::shared_ptr<JSONNull> SP;
+        
+        static bool classof(const JSONValue *V)
+        {
+            return V->GetKind() == JSONValue::Kind::Null;
+        }
+        
+        virtual
+        ~JSONNull () = default;
+    };
+
+    class JSONObject : public JSONValue
+    {
+    public:
+        JSONObject ();
+        
+        JSONObject (const JSONObject& s) = delete;
+        JSONObject&
+        operator = (const JSONObject& s) = delete;
+
+        virtual void
+        Write (Stream& s);
+        
+        typedef std::shared_ptr<JSONObject> SP;
+        
+        static bool classof(const JSONValue *V)
+        {
+            return V->GetKind() == JSONValue::Kind::Object;
+        }
+        
+        bool
+        SetObject (const std::string& key,
+                   JSONValue::SP value);
+        
+        JSONValue::SP
+        GetObject (const std::string& key);
+        
+        virtual
+        ~JSONObject () = default;
+        
+    private:
+        typedef std::map<std::string, JSONValue::SP> Map;
+        typedef Map::iterator Iterator;
+        Map m_elements;
+    };
+
+    class JSONArray : public JSONValue
+    {
+    public:
+        JSONArray ();
+        
+        JSONArray (const JSONArray& s) = delete;
+        JSONArray&
+        operator = (const JSONArray& s) = delete;
+        
+        virtual void
+        Write (Stream& s);
+        
+        typedef std::shared_ptr<JSONArray> SP;
+        
+        static bool classof(const JSONValue *V)
+        {
+            return V->GetKind() == JSONValue::Kind::Array;
+        }
+        
+    private:
+        typedef std::vector<JSONValue::SP> Vector;
+        typedef Vector::iterator Iterator;
+        typedef Vector::size_type Index;
+        typedef Vector::size_type Size;
+        
+    public:
+        bool
+        SetObject (Index i,
+                   JSONValue::SP value);
+        
+        bool
+        AppendObject (JSONValue::SP value);
+        
+        JSONValue::SP
+        GetObject (Index i);
+        
+        Size
+        GetNumElements ();
+
+        virtual
+        ~JSONArray () = default;
+        
+        Vector m_elements;
+    };
+}
+
+#endif // utility_ProcessStructReader_h_

Modified: lldb/trunk/lldb.xcodeproj/project.pbxproj
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/lldb.xcodeproj/project.pbxproj?rev=228636&r1=228635&r2=228636&view=diff
==============================================================================
--- lldb/trunk/lldb.xcodeproj/project.pbxproj (original)
+++ lldb/trunk/lldb.xcodeproj/project.pbxproj Mon Feb  9 18:30:07 2015
@@ -747,11 +747,19 @@
                8CF02AEF19DD16B100B14BE0 /* InstrumentationRuntimeStopInfo.cpp 
in Sources */ = {isa = PBXBuildFile; fileRef = 8CF02AED19DD15CF00B14BE0 /* 
InstrumentationRuntimeStopInfo.cpp */; };
                94094C6B163B6F840083A547 /* ValueObjectCast.cpp in Sources */ = 
{isa = PBXBuildFile; fileRef = 94094C69163B6CD90083A547 /* ValueObjectCast.cpp 
*/; };
                940B02F619DC96E700AD0F52 /* SBExecutionContext.cpp in Sources 
*/ = {isa = PBXBuildFile; fileRef = 940B02F519DC96E700AD0F52 /* 
SBExecutionContext.cpp */; };
+               940B04D91A8984FF0045D5F7 /* argdumper.cpp in Sources */ = {isa 
= PBXBuildFile; fileRef = 940B04D81A8984FF0045D5F7 /* argdumper.cpp */; };
+               940B04DB1A8985F70045D5F7 /* libz.dylib in Frameworks */ = {isa 
= PBXBuildFile; fileRef = 940B04DA1A8985F70045D5F7 /* libz.dylib */; };
+               940B04DD1A8985FF0045D5F7 /* libpanel.dylib in Frameworks */ = 
{isa = PBXBuildFile; fileRef = 940B04DC1A8985FF0045D5F7 /* libpanel.dylib */; };
+               940B04DF1A8986070045D5F7 /* libncurses.dylib in Frameworks */ = 
{isa = PBXBuildFile; fileRef = 940B04DE1A8986070045D5F7 /* libncurses.dylib */; 
};
+               940B04E11A89860E0045D5F7 /* libedit.dylib in Frameworks */ = 
{isa = PBXBuildFile; fileRef = 940B04E01A89860E0045D5F7 /* libedit.dylib */; };
+               940B04E41A8987680045D5F7 /* argdumper in CopyFiles */ = {isa = 
PBXBuildFile; fileRef = 942829C01A89835300521B30 /* argdumper */; settings = 
{ATTRIBUTES = (CodeSignOnCopy, ); }; };
                94145431175E63B500284436 /* lldb-versioning.h in Headers */ = 
{isa = PBXBuildFile; fileRef = 94145430175D7FDE00284436 /* lldb-versioning.h 
*/; settings = {ATTRIBUTES = (Public, ); }; };
                941BCC7F14E48C4000BB969C /* SBTypeFilter.h in Headers */ = {isa 
= PBXBuildFile; fileRef = 9461568614E355F2003A195C /* SBTypeFilter.h */; 
settings = {ATTRIBUTES = (Public, ); }; };
                941BCC8014E48C4000BB969C /* SBTypeFormat.h in Headers */ = {isa 
= PBXBuildFile; fileRef = 9461568714E355F2003A195C /* SBTypeFormat.h */; 
settings = {ATTRIBUTES = (Public, ); }; };
                941BCC8114E48C4000BB969C /* SBTypeSummary.h in Headers */ = 
{isa = PBXBuildFile; fileRef = 9461568814E355F2003A195C /* SBTypeSummary.h */; 
settings = {ATTRIBUTES = (Public, ); }; };
                941BCC8214E48C4000BB969C /* SBTypeSynthetic.h in Headers */ = 
{isa = PBXBuildFile; fileRef = 9461568914E355F2003A195C /* SBTypeSynthetic.h 
*/; settings = {ATTRIBUTES = (Public, ); }; };
+               942829561A89614C00521B30 /* JSON.cpp in Sources */ = {isa = 
PBXBuildFile; fileRef = 942829551A89614C00521B30 /* JSON.cpp */; };
+               942829CC1A89839300521B30 /* liblldb-core.a in Frameworks */ = 
{isa = PBXBuildFile; fileRef = 2689FFCA13353D7A00698AC0 /* liblldb-core.a */; };
                942AFF0519F84ABF007B43B4 /* LibCxxVector.cpp in Sources */ = 
{isa = PBXBuildFile; fileRef = 942AFF0419F84ABF007B43B4 /* LibCxxVector.cpp */; 
};
                942AFF0719F84C02007B43B4 /* LibCxxInitializerList.cpp in 
Sources */ = {isa = PBXBuildFile; fileRef = 942AFF0619F84C02007B43B4 /* 
LibCxxInitializerList.cpp */; };
                94380B8219940B0A00BFE4A8 /* StringLexer.cpp in Sources */ = 
{isa = PBXBuildFile; fileRef = 94380B8119940B0A00BFE4A8 /* StringLexer.cpp */; 
};
@@ -1047,6 +1055,20 @@
                        remoteGlobalIDString = 26680206115FD0ED008E1FE4;
                        remoteInfo = LLDB;
                };
+               942829C91A89836A00521B30 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 08FB7793FE84155DC02AAC07 /* Project 
object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 2689FFC913353D7A00698AC0;
+                       remoteInfo = "lldb-core";
+               };
+               942829CD1A89842900521B30 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 08FB7793FE84155DC02AAC07 /* Project 
object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 942829BF1A89835300521B30;
+                       remoteInfo = argdumper;
+               };
                94E829C8152D33B4006F96A3 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 08FB7793FE84155DC02AAC07 /* Project 
object */;
@@ -1066,6 +1088,25 @@
                        );
                        runOnlyForDeploymentPostprocessing = 1;
                };
+               940B04E31A89875C0045D5F7 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = "";
+                       dstSubfolderSpec = 7;
+                       files = (
+                               940B04E41A8987680045D5F7 /* argdumper in 
CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               942829BE1A89835300521B30 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
                AF90106415AB7D2900FF120D /* CopyFiles */ = {
                        isa = PBXCopyFilesBuildPhase;
                        buildActionMask = 8;
@@ -2329,7 +2370,15 @@
                940B02F419DC96CB00AD0F52 /* SBExecutionContext.h */ = {isa = 
PBXFileReference; lastKnownFileType = sourcecode.c.h; name = 
SBExecutionContext.h; path = include/lldb/API/SBExecutionContext.h; sourceTree 
= "<group>"; };
                940B02F519DC96E700AD0F52 /* SBExecutionContext.cpp */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; 
name = SBExecutionContext.cpp; path = source/API/SBExecutionContext.cpp; 
sourceTree = "<group>"; };
                940B02F719DC970900AD0F52 /* SBExecutionContext.i */ = {isa = 
PBXFileReference; lastKnownFileType = sourcecode.c.c.preprocessed; path = 
SBExecutionContext.i; sourceTree = "<group>"; };
+               940B04D81A8984FF0045D5F7 /* argdumper.cpp */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; 
name = argdumper.cpp; path = tools/argdumper/argdumper.cpp; sourceTree = 
"<group>"; };
+               940B04DA1A8985F70045D5F7 /* libz.dylib */ = {isa = 
PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = 
libz.dylib; path = 
Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib/libz.dylib; 
sourceTree = DEVELOPER_DIR; };
+               940B04DC1A8985FF0045D5F7 /* libpanel.dylib */ = {isa = 
PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = 
libpanel.dylib; path = 
Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib/libpanel.dylib;
 sourceTree = DEVELOPER_DIR; };
+               940B04DE1A8986070045D5F7 /* libncurses.dylib */ = {isa = 
PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = 
libncurses.dylib; path = 
Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib/libncurses.dylib;
 sourceTree = DEVELOPER_DIR; };
+               940B04E01A89860E0045D5F7 /* libedit.dylib */ = {isa = 
PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = 
libedit.dylib; path = 
Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib/libedit.dylib; 
sourceTree = DEVELOPER_DIR; };
                94145430175D7FDE00284436 /* lldb-versioning.h */ = {isa = 
PBXFileReference; lastKnownFileType = sourcecode.c.h; name = 
"lldb-versioning.h"; path = "include/lldb/lldb-versioning.h"; sourceTree = 
"<group>"; };
+               942829541A89614000521B30 /* JSON.h */ = {isa = 
PBXFileReference; lastKnownFileType = sourcecode.c.h; name = JSON.h; path = 
include/lldb/Utility/JSON.h; sourceTree = "<group>"; };
+               942829551A89614C00521B30 /* JSON.cpp */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; 
name = JSON.cpp; path = source/Utility/JSON.cpp; sourceTree = "<group>"; };
+               942829C01A89835300521B30 /* argdumper */ = {isa = 
PBXFileReference; explicitFileType = "compiled.mach-o.executable"; 
includeInIndex = 0; path = argdumper; sourceTree = BUILT_PRODUCTS_DIR; };
                942AFF0419F84ABF007B43B4 /* LibCxxVector.cpp */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; 
name = LibCxxVector.cpp; path = source/DataFormatters/LibCxxVector.cpp; 
sourceTree = "<group>"; };
                942AFF0619F84C02007B43B4 /* LibCxxInitializerList.cpp */ = {isa 
= PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; 
name = LibCxxInitializerList.cpp; path = 
source/DataFormatters/LibCxxInitializerList.cpp; sourceTree = "<group>"; };
                94380B8019940B0300BFE4A8 /* StringLexer.h */ = {isa = 
PBXFileReference; lastKnownFileType = sourcecode.c.h; name = StringLexer.h; 
path = include/lldb/Utility/StringLexer.h; sourceTree = "<group>"; };
@@ -2673,6 +2722,18 @@
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
+               942829BD1A89835300521B30 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               940B04E11A89860E0045D5F7 /* libedit.dylib in 
Frameworks */,
+                               940B04DF1A8986070045D5F7 /* libncurses.dylib in 
Frameworks */,
+                               940B04DD1A8985FF0045D5F7 /* libpanel.dylib in 
Frameworks */,
+                               940B04DB1A8985F70045D5F7 /* libz.dylib in 
Frameworks */,
+                               942829CC1A89839300521B30 /* liblldb-core.a in 
Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
                EDC6D49614E5C19B001B75F8 /* Frameworks */ = {
                        isa = PBXFrameworksBuildPhase;
                        buildActionMask = 2147483647;
@@ -2694,6 +2755,10 @@
                08FB7794FE84155DC02AAC07 /* lldb */ = {
                        isa = PBXGroup;
                        children = (
+                               940B04E01A89860E0045D5F7 /* libedit.dylib */,
+                               940B04DE1A8986070045D5F7 /* libncurses.dylib */,
+                               940B04DC1A8985FF0045D5F7 /* libpanel.dylib */,
+                               940B04DA1A8985F70045D5F7 /* libz.dylib */,
                                26709E311964A34000B94724 /* 
LaunchServices.framework */,
                                26F5C32810F3DF7D009D5894 /* Libraries */,
                                264E8576159BE51A00E9D7A2 /* Resources */,
@@ -2744,6 +2809,7 @@
                                EDE274EC14EDCE1F005B0F75 /* 
com.apple.lldb.launcherRootXPCService.xpc */,
                                26D6F3E7183E7F4E00194858 /* lldb-gdbserver */,
                                2690CD171A6DC0D000E717C8 /* lldb-mi */,
+                               942829C01A89835300521B30 /* argdumper */,
                        );
                        name = Products;
                        sourceTree = "<group>";
@@ -3378,6 +3444,8 @@
                                26F996A8119B79C300412154 /* ARM_GCC_Registers.h 
*/,
                                264723A511FA076E00DE380C /* CleanUp.h */,
                                4C73152119B7D71700F865A4 /* Iterable.h */,
+                               942829541A89614000521B30 /* JSON.h */,
+                               942829551A89614C00521B30 /* JSON.cpp */,
                                26D1804416CEE12500EDFB5B /* KQueue.h */,
                                26D1803C16CEBFD300EDFB5B /* KQueue.cpp */,
                                94031A9F13CF5B3D00DCFF3C /* 
PriorityPointerPair.h */,
@@ -4619,6 +4687,7 @@
                26F5C22410F3D950009D5894 /* Tools */ = {
                        isa = PBXGroup;
                        children = (
+                               942829BA1A89830900521B30 /* argdumper */,
                                26579F55126A255E0007C5CB /* darwin-debug */,
                                265E9BE0115C2B8500D0DCCB /* debugserver */,
                                26F5C22510F3D956009D5894 /* Driver */,
@@ -4878,6 +4947,14 @@
                        path = AddressSanitizer;
                        sourceTree = "<group>";
                };
+               942829BA1A89830900521B30 /* argdumper */ = {
+                       isa = PBXGroup;
+                       children = (
+                               940B04D81A8984FF0045D5F7 /* argdumper.cpp */,
+                       );
+                       name = argdumper;
+                       sourceTree = "<group>";
+               };
                9457596415349416005A9070 /* POSIX */ = {
                        isa = PBXGroup;
                        children = (
@@ -5252,10 +5329,12 @@
                                9A19ACE2116563A700E0D453 /* Finish swig wrapper 
classes (lldb) */,
                                4959511A1A1ACE9500F6F8FC /* Install Clang 
compiler headers */,
                                ED4AFF44199C2207004FFDC6 /* CopyFiles */,
+                               940B04E31A89875C0045D5F7 /* CopyFiles */,
                        );
                        buildRules = (
                        );
                        dependencies = (
+                               942829CE1A89842900521B30 /* PBXTargetDependency 
*/,
                                94E829C9152D33B4006F96A3 /* PBXTargetDependency 
*/,
                                2689011513353E9B00698AC0 /* PBXTargetDependency 
*/,
                                262CFC7211A450CB00946C6C /* PBXTargetDependency 
*/,
@@ -5355,6 +5434,25 @@
                        productReference = 26F5C26A10F3D9A4009D5894 /* lldb */;
                        productType = "com.apple.product-type.tool";
                };
+               942829BF1A89835300521B30 /* argdumper */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 942829C41A89835400521B30 /* 
Build configuration list for PBXNativeTarget "argdumper" */;
+                       buildPhases = (
+                               942829BC1A89835300521B30 /* Sources */,
+                               942829BD1A89835300521B30 /* Frameworks */,
+                               942829BE1A89835300521B30 /* CopyFiles */,
+                               940B04E21A89871F0045D5F7 /* ShellScript */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               942829CA1A89836A00521B30 /* PBXTargetDependency 
*/,
+                       );
+                       name = argdumper;
+                       productName = argdumper;
+                       productReference = 942829C01A89835300521B30 /* 
argdumper */;
+                       productType = "com.apple.product-type.tool";
+               };
                EDC6D49814E5C19B001B75F8 /* launcherXPCService */ = {
                        isa = PBXNativeTarget;
                        buildConfigurationList = EDC6D4A614E5C19B001B75F8 /* 
Build configuration list for PBXNativeTarget "launcherXPCService" */;
@@ -5400,6 +5498,9 @@
                                        2690CD161A6DC0D000E717C8 = {
                                                CreatedOnToolsVersion = 6.3;
                                        };
+                                       942829BF1A89835300521B30 = {
+                                               CreatedOnToolsVersion = 7.0;
+                                       };
                                };
                        };
                        buildConfigurationList = 1DEB91EF08733DB70010E9CD /* 
Build configuration list for PBXProject "lldb" */;
@@ -5434,6 +5535,7 @@
                                235AFBB5199BC6AD00897A4B /* Linux */,
                                235AFBBB199BC6FD00897A4B /* MacOSX and Linux */,
                                2690CD161A6DC0D000E717C8 /* lldb-mi */,
+                               942829BF1A89835300521B30 /* argdumper */,
                        );
                };
 /* End PBXProject section */
@@ -5562,6 +5664,19 @@
                        shellPath = /bin/sh;
                        shellScript = "if [ \"${CONFIGURATION}\" != 
BuildAndIntegration ]\nthen\n    codesign -f -s lldb_codesign 
\"${TARGET_BUILD_DIR}/${TARGET_NAME}\"\nfi\n";
                };
+               940B04E21A89871F0045D5F7 /* ShellScript */ = {
+                       isa = PBXShellScriptBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       inputPaths = (
+                       );
+                       outputPaths = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+                       shellPath = /bin/sh;
+                       shellScript = "";
+               };
                9A19ACE2116563A700E0D453 /* Finish swig wrapper classes (lldb) 
*/ = {
                        isa = PBXShellScriptBuildPhase;
                        buildActionMask = 2147483647;
@@ -5970,6 +6085,7 @@
                                2689010213353E6F00698AC0 /* 
ThreadPlanStepOverBreakpoint.cpp in Sources */,
                                3FDFED2919BA6D96009756A7 /* ThreadLauncher.cpp 
in Sources */,
                                232CB617191E00CD00EF39FC /* 
NativeBreakpointList.cpp in Sources */,
+                               942829561A89614C00521B30 /* JSON.cpp in Sources 
*/,
                                232CB615191E00CD00EF39FC /* 
NativeBreakpoint.cpp in Sources */,
                                2689010313353E6F00698AC0 /* 
ThreadPlanStepRange.cpp in Sources */,
                                2689010413353E6F00698AC0 /* 
ThreadPlanStepInRange.cpp in Sources */,
@@ -6266,6 +6382,14 @@
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
+               942829BC1A89835300521B30 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               940B04D91A8984FF0045D5F7 /* argdumper.cpp in 
Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
                EDC6D49514E5C19B001B75F8 /* Sources */ = {
                        isa = PBXSourcesBuildPhase;
                        buildActionMask = 2147483647;
@@ -6382,6 +6506,16 @@
                        target = 26680206115FD0ED008E1FE4 /* LLDB */;
                        targetProxy = 26DF745F1A6DCDB300B85563 /* 
PBXContainerItemProxy */;
                };
+               942829CA1A89836A00521B30 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 2689FFC913353D7A00698AC0 /* lldb-core */;
+                       targetProxy = 942829C91A89836A00521B30 /* 
PBXContainerItemProxy */;
+               };
+               942829CE1A89842900521B30 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 942829BF1A89835300521B30 /* argdumper */;
+                       targetProxy = 942829CD1A89842900521B30 /* 
PBXContainerItemProxy */;
+               };
                94E829C9152D33B4006F96A3 /* PBXTargetDependency */ = {
                        isa = PBXTargetDependency;
                        target = 26DC6A0F1337FE6900FF7998 /* lldb-platform */;
@@ -8401,6 +8535,269 @@
                        };
                        name = DebugClang;
                };
+               942829C51A89835400521B30 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+                               CLANG_ENABLE_MODULES = YES;
+                               CLANG_ENABLE_OBJC_ARC = YES;
+                               CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+                               CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+                               FRAMEWORK_SEARCH_PATHS = (
+                                       "$(inherited)",
+                                       
"\"$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks\"",
+                               );
+                               GCC_C_LANGUAGE_STANDARD = gnu99;
+                               GCC_DYNAMIC_NO_PIC = NO;
+                               GCC_PREPROCESSOR_DEFINITIONS = (
+                                       "DEBUG=1",
+                                       "$(inherited)",
+                               );
+                               GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+                               GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+                               GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+                               LIBRARY_SEARCH_PATHS = (
+                                       
"$(LLVM_BUILD_DIR)/$(LLVM_BUILD_DIR_ARCH)",
+                                       "$(inherited)",
+                               );
+                               MACOSX_DEPLOYMENT_TARGET = 10.8;
+                               MTL_ENABLE_DEBUG_INFO = YES;
+                               OTHER_CFLAGS = (
+                                       "$(inherited)",
+                                       
"-I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7",
+                                       "-flimit-debug-info",
+                                       "-Wparentheses",
+                               );
+                               "OTHER_CFLAGS[sdk=iphoneos*]" = (
+                                       "$(inherited)",
+                                       "-flimit-debug-info",
+                                       "-Wparentheses",
+                               );
+                               "OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*]" = 
"$(OTHER_CFLAGS)";
+                               OTHER_LDFLAGS = (
+                                       "$(inherited)",
+                                       "-lllvmclang",
+                                       
"-L/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config",
+                                       "-lpython2.7",
+                                       "-lxml2",
+                                       "-framework",
+                                       DebugSymbols,
+                                       "-framework",
+                                       Foundation,
+                                       "-framework",
+                                       Carbon,
+                                       "-framework",
+                                       Security,
+                               );
+                               "OTHER_LDFLAGS[sdk=iphoneos*][arch=*]" = (
+                                       "-lllvmclang",
+                                       "-lxml2",
+                                       "-framework",
+                                       Foundation,
+                               );
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                               SDKROOT = macosx;
+                               SKIP_INSTALL = YES;
+                               USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include 
$(SRCROOT)/source $(LLVM_SOURCE_DIR)/include 
$(LLVM_SOURCE_DIR)/tools/clang/include 
$(LLVM_BUILD_DIR)/$(LLVM_BUILD_DIR_ARCH)/include 
$(LLVM_BUILD_DIR)/$(LLVM_BUILD_DIR_ARCH)/tools/clang/include";
+                       };
+                       name = Debug;
+               };
+               942829C61A89835400521B30 /* DebugClang */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+                               CLANG_ENABLE_MODULES = YES;
+                               CLANG_ENABLE_OBJC_ARC = YES;
+                               CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+                               CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+                               FRAMEWORK_SEARCH_PATHS = (
+                                       "$(inherited)",
+                                       
"\"$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks\"",
+                               );
+                               GCC_C_LANGUAGE_STANDARD = gnu99;
+                               GCC_DYNAMIC_NO_PIC = NO;
+                               GCC_PREPROCESSOR_DEFINITIONS = (
+                                       "DEBUG=1",
+                                       "$(inherited)",
+                               );
+                               GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+                               GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+                               GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+                               LIBRARY_SEARCH_PATHS = (
+                                       
"$(LLVM_BUILD_DIR)/$(LLVM_BUILD_DIR_ARCH)",
+                                       "$(inherited)",
+                               );
+                               MACOSX_DEPLOYMENT_TARGET = 10.8;
+                               MTL_ENABLE_DEBUG_INFO = YES;
+                               OTHER_CFLAGS = (
+                                       "$(inherited)",
+                                       
"-I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7",
+                                       "-flimit-debug-info",
+                                       "-Wparentheses",
+                               );
+                               "OTHER_CFLAGS[sdk=iphoneos*]" = (
+                                       "$(inherited)",
+                                       "-flimit-debug-info",
+                                       "-Wparentheses",
+                               );
+                               "OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*]" = 
"$(OTHER_CFLAGS)";
+                               OTHER_LDFLAGS = (
+                                       "$(inherited)",
+                                       "-lllvmclang",
+                                       
"-L/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config",
+                                       "-lpython2.7",
+                                       "-lxml2",
+                                       "-framework",
+                                       DebugSymbols,
+                                       "-framework",
+                                       Foundation,
+                                       "-framework",
+                                       Carbon,
+                                       "-framework",
+                                       Security,
+                               );
+                               "OTHER_LDFLAGS[sdk=iphoneos*][arch=*]" = (
+                                       "-lllvmclang",
+                                       "-lxml2",
+                                       "-framework",
+                                       Foundation,
+                               );
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                               SDKROOT = macosx;
+                               SKIP_INSTALL = YES;
+                               USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include 
$(SRCROOT)/source $(LLVM_SOURCE_DIR)/include 
$(LLVM_SOURCE_DIR)/tools/clang/include 
$(LLVM_BUILD_DIR)/$(LLVM_BUILD_DIR_ARCH)/include 
$(LLVM_BUILD_DIR)/$(LLVM_BUILD_DIR_ARCH)/tools/clang/include";
+                       };
+                       name = DebugClang;
+               };
+               942829C71A89835400521B30 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+                               CLANG_ENABLE_MODULES = YES;
+                               CLANG_ENABLE_OBJC_ARC = YES;
+                               CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+                               CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+                               DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+                               ENABLE_NS_ASSERTIONS = NO;
+                               FRAMEWORK_SEARCH_PATHS = (
+                                       "$(inherited)",
+                                       
"\"$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks\"",
+                               );
+                               GCC_C_LANGUAGE_STANDARD = gnu99;
+                               GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+                               GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+                               LIBRARY_SEARCH_PATHS = (
+                                       
"$(LLVM_BUILD_DIR)/$(LLVM_BUILD_DIR_ARCH)",
+                                       "$(inherited)",
+                               );
+                               MACOSX_DEPLOYMENT_TARGET = 10.8;
+                               MTL_ENABLE_DEBUG_INFO = NO;
+                               OTHER_CFLAGS = (
+                                       "$(inherited)",
+                                       
"-I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7",
+                                       "-flimit-debug-info",
+                                       "-Wparentheses",
+                               );
+                               "OTHER_CFLAGS[sdk=iphoneos*]" = (
+                                       "$(inherited)",
+                                       "-flimit-debug-info",
+                                       "-Wparentheses",
+                               );
+                               "OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*]" = 
"$(OTHER_CFLAGS)";
+                               OTHER_LDFLAGS = (
+                                       "$(inherited)",
+                                       "-lllvmclang",
+                                       
"-L/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config",
+                                       "-lpython2.7",
+                                       "-lxml2",
+                                       "-framework",
+                                       DebugSymbols,
+                                       "-framework",
+                                       Foundation,
+                                       "-framework",
+                                       Carbon,
+                                       "-framework",
+                                       Security,
+                               );
+                               "OTHER_LDFLAGS[sdk=iphoneos*][arch=*]" = (
+                                       "-lllvmclang",
+                                       "-lxml2",
+                                       "-framework",
+                                       Foundation,
+                               );
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                               SDKROOT = macosx;
+                               SKIP_INSTALL = YES;
+                               USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include 
$(SRCROOT)/source $(LLVM_SOURCE_DIR)/include 
$(LLVM_SOURCE_DIR)/tools/clang/include 
$(LLVM_BUILD_DIR)/$(LLVM_BUILD_DIR_ARCH)/include 
$(LLVM_BUILD_DIR)/$(LLVM_BUILD_DIR_ARCH)/tools/clang/include";
+                       };
+                       name = Release;
+               };
+               942829C81A89835400521B30 /* BuildAndIntegration */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+                               CLANG_ENABLE_MODULES = YES;
+                               CLANG_ENABLE_OBJC_ARC = YES;
+                               CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+                               CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+                               COPY_PHASE_STRIP = YES;
+                               DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+                               ENABLE_NS_ASSERTIONS = NO;
+                               FRAMEWORK_SEARCH_PATHS = (
+                                       "$(inherited)",
+                                       
"\"$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks\"",
+                               );
+                               GCC_C_LANGUAGE_STANDARD = gnu99;
+                               GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+                               GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+                               INSTALL_PATH = 
"$(LLDB_FRAMEWORK_INSTALL_DIR)/LLDB.framework/Resources";
+                               LIBRARY_SEARCH_PATHS = (
+                                       
"$(LLVM_BUILD_DIR)/$(LLVM_BUILD_DIR_ARCH)",
+                                       "$(inherited)",
+                               );
+                               MACOSX_DEPLOYMENT_TARGET = 10.8;
+                               MTL_ENABLE_DEBUG_INFO = NO;
+                               OTHER_CFLAGS = (
+                                       "$(inherited)",
+                                       
"-I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7",
+                                       "-flimit-debug-info",
+                                       "-Wparentheses",
+                               );
+                               "OTHER_CFLAGS[sdk=iphoneos*]" = (
+                                       "$(inherited)",
+                                       "-flimit-debug-info",
+                                       "-Wparentheses",
+                               );
+                               "OTHER_CPLUSPLUSFLAGS[sdk=iphoneos*]" = 
"$(OTHER_CFLAGS)";
+                               OTHER_LDFLAGS = (
+                                       "$(inherited)",
+                                       "-lllvmclang",
+                                       
"-L/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config",
+                                       "-lpython2.7",
+                                       "-lxml2",
+                                       "-framework",
+                                       DebugSymbols,
+                                       "-framework",
+                                       Foundation,
+                                       "-framework",
+                                       Carbon,
+                                       "-framework",
+                                       Security,
+                               );
+                               "OTHER_LDFLAGS[sdk=iphoneos*][arch=*]" = (
+                                       "-lllvmclang",
+                                       "-lxml2",
+                                       "-framework",
+                                       Foundation,
+                               );
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                               SDKROOT = macosx;
+                               SKIP_INSTALL = YES;
+                               STRIP_INSTALLED_PRODUCT = YES;
+                               USER_HEADER_SEARCH_PATHS = "$(SRCROOT)/include 
$(SRCROOT)/source $(LLVM_SOURCE_DIR)/include 
$(LLVM_SOURCE_DIR)/tools/clang/include 
$(LLVM_BUILD_DIR)/$(LLVM_BUILD_DIR_ARCH)/include 
$(LLVM_BUILD_DIR)/$(LLVM_BUILD_DIR_ARCH)/tools/clang/include";
+                       };
+                       name = BuildAndIntegration;
+               };
                EDC6D4A714E5C19B001B75F8 /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
@@ -8732,6 +9129,17 @@
                        );
                        defaultConfigurationIsVisible = 0;
                        defaultConfigurationName = BuildAndIntegration;
+               };
+               942829C41A89835400521B30 /* Build configuration list for 
PBXNativeTarget "argdumper" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               942829C51A89835400521B30 /* Debug */,
+                               942829C61A89835400521B30 /* DebugClang */,
+                               942829C71A89835400521B30 /* Release */,
+                               942829C81A89835400521B30 /* BuildAndIntegration 
*/,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = BuildAndIntegration;
                };
                EDC6D4A614E5C19B001B75F8 /* Build configuration list for 
PBXNativeTarget "launcherXPCService" */ = {
                        isa = XCConfigurationList;

Added: lldb/trunk/source/Utility/JSON.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Utility/JSON.cpp?rev=228636&view=auto
==============================================================================
--- lldb/trunk/source/Utility/JSON.cpp (added)
+++ lldb/trunk/source/Utility/JSON.cpp Mon Feb  9 18:30:07 2015
@@ -0,0 +1,217 @@
+//===--------------------- JSON.cpp -----------------------------*- C++ 
-*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "lldb/Utility/JSON.h"
+
+using namespace lldb_private;
+
+std::string
+JSONString::json_string_quote_metachars (const std::string &s)
+{
+    if (s.find('"') == std::string::npos)
+        return s;
+    
+    std::string output;
+    const size_t s_size = s.size();
+    const char *s_chars = s.c_str();
+    for (size_t i = 0; i < s_size; i++)
+    {
+        unsigned char ch = *(s_chars + i);
+        if (ch == '"')
+        {
+            output.push_back ('\\');
+        }
+        output.push_back (ch);
+    }
+    return output;
+}
+
+JSONString::JSONString () :
+JSONValue(JSONValue::Kind::String),
+m_data()
+{
+}
+
+JSONString::JSONString (const char* s) :
+JSONValue(JSONValue::Kind::String),
+m_data(s ? s : "")
+{
+}
+
+JSONString::JSONString (const std::string& s) :
+JSONValue(JSONValue::Kind::String),
+m_data(s)
+{
+}
+
+void
+JSONString::Write (Stream& s)
+{
+    s.Printf("\"%s\"", json_string_quote_metachars(m_data).c_str());
+}
+
+JSONNumber::JSONNumber () :
+JSONValue(JSONValue::Kind::Number),
+m_data(0)
+{
+}
+
+JSONNumber::JSONNumber (int64_t i) :
+JSONValue(JSONValue::Kind::Number),
+m_data(i)
+{
+}
+
+void
+JSONNumber::Write (Stream& s)
+{
+    s.Printf("%" PRId64, m_data);
+}
+
+JSONTrue::JSONTrue () :
+JSONValue(JSONValue::Kind::True)
+{
+}
+
+void
+JSONTrue::Write(Stream& s)
+{
+    s.Printf("true");
+}
+
+JSONFalse::JSONFalse () :
+JSONValue(JSONValue::Kind::False)
+{
+}
+
+void
+JSONFalse::Write(Stream& s)
+{
+    s.Printf("false");
+}
+
+JSONNull::JSONNull () :
+JSONValue(JSONValue::Kind::Null)
+{
+}
+
+void
+JSONNull::Write(Stream& s)
+{
+    s.Printf("null");
+}
+
+JSONObject::JSONObject () :
+JSONValue(JSONValue::Kind::Object)
+{
+}
+
+void
+JSONObject::Write (Stream& s)
+{
+    bool first = true;
+    s.PutChar('{');
+    auto iter = m_elements.begin(), end = m_elements.end();
+    for (;iter != end; iter++)
+    {
+        if (first)
+            first = false;
+        else
+            s.PutChar(',');
+        JSONString key(iter->first);
+        JSONValue::SP value(iter->second);
+        key.Write(s);
+        s.PutChar(':');
+        value->Write(s);
+    }
+    s.PutChar('}');
+}
+
+bool
+JSONObject::SetObject (const std::string& key,
+                       JSONValue::SP value)
+{
+    if (key.empty() || nullptr == value.get())
+        return false;
+    m_elements[key] = value;
+    return true;
+}
+
+JSONValue::SP
+JSONObject::GetObject (const std::string& key)
+{
+    auto iter = m_elements.find(key), end = m_elements.end();
+    if (iter == end)
+        return JSONValue::SP();
+    return iter->second;
+}
+
+JSONArray::JSONArray () :
+JSONValue(JSONValue::Kind::Array)
+{
+}
+
+void
+JSONArray::Write (Stream& s)
+{
+    bool first = true;
+    s.PutChar('[');
+    auto iter = m_elements.begin(), end = m_elements.end();
+    for (;iter != end; iter++)
+    {
+        if (first)
+            first = false;
+        else
+            s.PutChar(',');
+        (*iter)->Write(s);
+    }
+    s.PutChar(']');
+}
+
+bool
+JSONArray::SetObject (Index i,
+                      JSONValue::SP value)
+{
+    if (value.get() == nullptr)
+        return false;
+    if (i < m_elements.size())
+    {
+        m_elements[i] = value;
+        return true;
+    }
+    if (i == m_elements.size())
+    {
+        m_elements.push_back(value);
+        return true;
+    }
+    return false;
+}
+
+bool
+JSONArray::AppendObject (JSONValue::SP value)
+{
+    if (value.get() == nullptr)
+        return false;
+    m_elements.push_back(value);
+    return true;
+}
+
+JSONValue::SP
+JSONArray::GetObject (Index i)
+{
+    if (i < m_elements.size())
+        return m_elements[i];
+    return JSONValue::SP();
+}
+
+JSONArray::Size
+JSONArray::GetNumElements ()
+{
+    return m_elements.size();
+}

Removed: 
lldb/trunk/test/functionalities/data-formatter/data-formatter-stl/libcxx/initializerlist/Makefile
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/test/functionalities/data-formatter/data-formatter-stl/libcxx/initializerlist/Makefile?rev=228635&view=auto
==============================================================================
--- 
lldb/trunk/test/functionalities/data-formatter/data-formatter-stl/libcxx/initializerlist/Makefile
 (original)
+++ 
lldb/trunk/test/functionalities/data-formatter/data-formatter-stl/libcxx/initializerlist/Makefile
 (removed)
@@ -1,4 +0,0 @@
-LEVEL = ../../../../../make
-CXX_SOURCES := main.cpp
-CXXFLAGS += -std=c++11
-include $(LEVEL)/Makefile.rules

Removed: lldb/trunk/test/functionalities/data-formatter/typedef_array/Makefile
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/test/functionalities/data-formatter/typedef_array/Makefile?rev=228635&view=auto
==============================================================================
--- lldb/trunk/test/functionalities/data-formatter/typedef_array/Makefile 
(original)
+++ lldb/trunk/test/functionalities/data-formatter/typedef_array/Makefile 
(removed)
@@ -1,4 +0,0 @@
-LEVEL = ../../../make
-CXX_SOURCES := main.cpp
-CXXFLAGS += -std=c++11
-include $(LEVEL)/Makefile.rules

Removed: lldb/trunk/test/lang/c/struct_types/Makefile
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/test/lang/c/struct_types/Makefile?rev=228635&view=auto
==============================================================================
--- lldb/trunk/test/lang/c/struct_types/Makefile (original)
+++ lldb/trunk/test/lang/c/struct_types/Makefile (removed)
@@ -1,3 +0,0 @@
-LEVEL = ../../../make
-C_SOURCES := main.c
-include $(LEVEL)/Makefile.rules

Added: lldb/trunk/tools/argdumper/argdumper.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/argdumper/argdumper.cpp?rev=228636&view=auto
==============================================================================
--- lldb/trunk/tools/argdumper/argdumper.cpp (added)
+++ lldb/trunk/tools/argdumper/argdumper.cpp Mon Feb  9 18:30:07 2015
@@ -0,0 +1,38 @@
+//===-- argdumper.cpp --------------------------------------------*- C++ 
-*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "lldb/Core/StreamString.h"
+#include "lldb/Utility/JSON.h"
+
+#include <iostream>
+
+using namespace lldb_private;
+
+int
+main (int argc, char *argv[])
+{
+    JSONArray::SP arguments(new JSONArray());
+    for (int i = 1;
+         i < argc;
+         i++)
+    {
+        arguments->AppendObject(JSONString::SP(new JSONString(argv[i])));
+    }
+    
+    JSONObject::SP object(new JSONObject());
+    object->SetObject("arguments", arguments);
+    
+    StreamString ss;
+    
+    object->Write(ss);
+    
+    std::cout << ss.GetData() << std::endl;
+    
+    return 0;
+}


_______________________________________________
lldb-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits

Reply via email to