File: cl_calltip.h

package info (click to toggle)
codelite 17.0.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 136,204 kB
  • sloc: cpp: 491,547; ansic: 280,393; php: 10,259; sh: 8,930; lisp: 7,664; vhdl: 6,518; python: 6,020; lex: 4,920; yacc: 3,123; perl: 2,385; javascript: 1,715; cs: 1,193; xml: 1,110; makefile: 804; cobol: 741; sql: 709; ruby: 620; f90: 566; ada: 534; asm: 464; fortran: 350; objc: 289; tcl: 258; java: 157; erlang: 61; pascal: 51; ml: 49; awk: 44; haskell: 36
file content (148 lines) | stat: -rw-r--r-- 3,775 bytes parent folder | download | duplicates (2)
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