//===-- CommandObjectLanguage.cpp -------------------------------*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

#include "CommandObjectLanguage.h"

#include "lldb/Host/Host.h"

#include "lldb/Interpreter/CommandInterpreter.h"
#include "lldb/Interpreter/CommandReturnObject.h"

#include "lldb/Target/LanguageRuntime.h"

using namespace lldb;
using namespace lldb_private;

CommandObjectLanguage::CommandObjectLanguage (CommandInterpreter &interpreter) :
CommandObjectMultiword (interpreter,
                        "language",
                        "A set of commands for managing language-specific functionality.'.",
                        "language <language-name> <subcommand> [<subcommand-options>]"
                        )
{
    //Let the LanguageRuntime populates this command with subcommands
    LanguageRuntime::InitializeCommands(this);
}

void
CommandObjectLanguage::GenerateHelpText (Stream &output_stream) {
    CommandObjectMultiword::GenerateHelpText(output_stream);

    output_stream << "\nlanguage name can be one of the following:\n";

    LanguageRuntime::PrintAllLanguages(output_stream, "  ", "\n");
}

CommandObjectLanguage::~CommandObjectLanguage ()
{
}
