File: SvnShowFileChangesHandler.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 (45 lines) | stat: -rw-r--r-- 1,203 bytes parent folder | download | duplicates (5)
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
#ifndef SVNSHOWFILECHANGESHANDLER_H
#define SVNSHOWFILECHANGESHANDLER_H

#include "svncommandhandler.h" // Base class: SvnCommandHandler
#include <algorithm>
#include <list>

class Subversion2;

struct SvnShowDiffChunk {
    wxString revision;
    wxString description;
    wxString comment;
    wxArrayString commentArr;
    wxString diff;

    void Finalize()
    {
        // Build the comment from the array of strings
        std::for_each(commentArr.begin(), commentArr.end(), [&](wxString& line) { line.Trim(); });
        comment = ::wxJoin(commentArr, '\n');
        commentArr.Clear();
        // Extract the revision number
        revision = description.BeforeFirst('|').Trim().Trim(false);
        
        description.Trim().Trim(false);
    }

    typedef std::list<SvnShowDiffChunk> List_t;
};

class SvnShowFileChangesHandler : public SvnCommandHandler
{
    // Parsing state
    enum eState { kWaitingSeparator, kWaitingHeader, kWaitingDiffBlock };

public:
    SvnShowFileChangesHandler(Subversion2* plugin, int cmdid, wxEvtHandler* owner);
    virtual ~SvnShowFileChangesHandler();

public:
    virtual void Process(const wxString& output);
};

#endif // SVNSHOWFILECHANGESHANDLER_H