124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- VariableList.h ------------------------------------------*- C++ -*-===// 224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// The LLVM Compiler Infrastructure 424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source 624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details. 724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===// 924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef liblldb_VariableList_h_ 1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define liblldb_VariableList_h_ 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/lldb-private.h" 1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Symbol/SymbolContext.h" 1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Symbol/Variable.h" 1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb_private { 1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass VariableList 2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // Constructors and Destructors 2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// VariableList(const SymbolContext &symbol_context); 2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner VariableList(); 2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner virtual ~VariableList(); 2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 3017dae081d7b88d24a7af6b07c10fc5981f81e2a9Greg Clayton AddVariable (const lldb::VariableSP &var_sp); 3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 326bc0b5d69f6f5f46055be6cfea6f9a0eb11b1943Greg Clayton bool 336bc0b5d69f6f5f46055be6cfea6f9a0eb11b1943Greg Clayton AddVariableIfUnique (const lldb::VariableSP &var_sp); 346bc0b5d69f6f5f46055be6cfea6f9a0eb11b1943Greg Clayton 3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 366bc0b5d69f6f5f46055be6cfea6f9a0eb11b1943Greg Clayton AddVariables (VariableList *variable_list); 3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Clear(); 4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner void 4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner Dump(Stream *s, bool show_context) const; 4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::VariableSP 4536da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg Clayton GetVariableAtIndex(size_t idx) const; 4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::VariableSP 4836da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg Clayton RemoveVariableAtIndex (size_t idx); 495d81f49f0b45f8810cfaf1fa3437aa72bed0c3afGreg Clayton 505d81f49f0b45f8810cfaf1fa3437aa72bed0c3afGreg Clayton lldb::VariableSP 5117dae081d7b88d24a7af6b07c10fc5981f81e2a9Greg Clayton FindVariable (const ConstString& name); 5217dae081d7b88d24a7af6b07c10fc5981f81e2a9Greg Clayton 5317dae081d7b88d24a7af6b07c10fc5981f81e2a9Greg Clayton uint32_t 546bc0b5d69f6f5f46055be6cfea6f9a0eb11b1943Greg Clayton FindVariableIndex (const lldb::VariableSP &var_sp); 556bc0b5d69f6f5f46055be6cfea6f9a0eb11b1943Greg Clayton 566bc0b5d69f6f5f46055be6cfea6f9a0eb11b1943Greg Clayton // Returns the actual number of unique variables that were added to the 576bc0b5d69f6f5f46055be6cfea6f9a0eb11b1943Greg Clayton // list. "total_matches" will get updated with the actualy number of 586bc0b5d69f6f5f46055be6cfea6f9a0eb11b1943Greg Clayton // matches that were found regardless of whether they were unique or not 596bc0b5d69f6f5f46055be6cfea6f9a0eb11b1943Greg Clayton // to allow for error conditions when nothing is found, versus conditions 606bc0b5d69f6f5f46055be6cfea6f9a0eb11b1943Greg Clayton // where any varaibles that match "regex" were already in "var_list". 616bc0b5d69f6f5f46055be6cfea6f9a0eb11b1943Greg Clayton size_t 626bc0b5d69f6f5f46055be6cfea6f9a0eb11b1943Greg Clayton AppendVariablesIfUnique (const RegularExpression& regex, 636bc0b5d69f6f5f46055be6cfea6f9a0eb11b1943Greg Clayton VariableList &var_list, 646bc0b5d69f6f5f46055be6cfea6f9a0eb11b1943Greg Clayton size_t& total_matches); 65994b86bcbf78930c309ec0e38f2d980e8c338c04Enrico Granata 66994b86bcbf78930c309ec0e38f2d980e8c338c04Enrico Granata size_t 67994b86bcbf78930c309ec0e38f2d980e8c338c04Enrico Granata AppendVariablesWithScope (lldb::ValueType type, 68994b86bcbf78930c309ec0e38f2d980e8c338c04Enrico Granata VariableList &var_list, 69994b86bcbf78930c309ec0e38f2d980e8c338c04Enrico Granata bool if_unique = true); 706bc0b5d69f6f5f46055be6cfea6f9a0eb11b1943Greg Clayton 716bc0b5d69f6f5f46055be6cfea6f9a0eb11b1943Greg Clayton uint32_t 7217dae081d7b88d24a7af6b07c10fc5981f81e2a9Greg Clayton FindIndexForVariable (Variable* variable); 7324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 7424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner size_t 7524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner MemorySize() const; 7624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 7724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner size_t 7824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetSize() const; 7924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 8024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprotected: 8124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner typedef std::vector<lldb::VariableSP> collection; 8224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner typedef collection::iterator iterator; 8324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner typedef collection::const_iterator const_iterator; 8424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 8524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner collection m_variables; 8624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprivate: 8724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 8824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // For VariableList only 8924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner //------------------------------------------------------------------ 9024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner DISALLOW_COPY_AND_ASSIGN (VariableList); 9124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 9224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 9324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} // namespace lldb_private 9424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 9524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif // liblldb_VariableList_h_ 96