1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
|
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//
// copyright : (C) 2008 by Eran Ifrah
// file name : cl_calltip.h
//
// -------------------------------------------------------------------------
// A
// _____ _ _ _ _
// / __ \ | | | | (_) |
// | / \/ ___ __| | ___| | _| |_ ___
// | | / _ \ / _ |/ _ \ | | | __/ _ )
// | \__/\ (_) | (_| | __/ |___| | || __/
// \____/\___/ \__,_|\___\_____/_|\__\___|
//
// F i l e
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
#ifndef CODELITE_CALLTIP_H
#define CODELITE_CALLTIP_H
#include "codelite_exports.h"
#include "entry.h"
#include "smart_ptr.h"
#include "tokenizer.h"
struct clTipInfo {
wxString str;
std::vector<std::pair<int, int>> paramLen;
};
/**
* A call tip function that wraps a tip strings for function prototypes.
*
* \ingroup CodeLite
* \version 1.0
* first version
*
* \date 09-18-2006
* \author Eran
*/
class WXDLLIMPEXP_CL clCallTip
{
std::vector<clTipInfo> m_tips;
int m_curr;
void Initialize(const std::vector<TagEntryPtr>& tags);
public:
/**
* @brief format list of tags into calltips
*/
static void FormatTagsToTips(const TagEntryPtrVector_t& tags, std::vector<clTipInfo>& tips);
/**
* Constructor
* \param tips input tips
*/
clCallTip(const std::vector<TagEntryPtr>& tips);
/**
* default constructor
*/
clCallTip();
/**
* Copy constructor
*/
clCallTip(const clCallTip& rhs);
/**
* Assignment operator
* \param rhs right hand side
* \return this
*/
clCallTip& operator=(const clCallTip& rhs);
/**
* Destructor
* \return
*/
virtual ~clCallTip() {}
/**
* Show next tip, if we are at last tip, return the first tip or empty string if no tips exists
* \return next tip
*/
wxString Next();
/**
* Show previous tip, if we are at first tip, return the last tip or empty string if no tips exists
* \return previous tip
*/
wxString Prev();
/**
* return the first tip
*/
wxString First();
/**
* @brief return the current tip
* @return return the current tip
*/
wxString Current();
/**
* @brief select the first tip that has at least argcount
* @return true if we managed to find this tip, false otherwise
*/
bool SelectTipToMatchArgCount(size_t argcount);
/**
* Return number of tips stored in this object
* \return number of tips
*/
int Count() const;
/**
* \brief return all tips as a single string
*/
wxString All();
/**
* @brief get the highlight offset & width for the current tip
* @param index paramter index
* @param start [output]
* @param len [output]
*/
void GetHighlightPos(int index, int& start, int& len);
int GetCurr() const { return m_curr; }
/**
* @brief set the tip to a specific tag
*/
void SelectSiganture(const wxString& signature);
wxString TipAt(int at);
};
typedef SmartPtr<clCallTip> clCallTipPtr;
#endif // CODELITE_CALLTIP_H
|