]> git.saurik.com Git - wxWidgets.git/blob - utils/HelpGen/src/ifcontext.h
glibc's vswprintf doesn't nul terminate on truncation.
[wxWidgets.git] / utils / HelpGen / src / ifcontext.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: No names yet.
3 // Purpose: Contrib. demo
4 // Author: Aleksandras Gluchovas
5 // Modified by:
6 // Created: 27/12/98
7 // RCS-ID: $Id$
8 // Copyright: (c) Aleskandars Gluchovas
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
11
12 #ifndef __IFCONTEXT_G__
13 #define __IFCONTEXT_G__
14
15 #include "srcparser.h"
16 #include "cjparser.h"
17
18 class spBookmark
19 {
20 public:
21 size_t mFrom;
22 size_t mLen;
23 size_t mFileNo;
24
25 inline spBookmark() {}
26
27 inline spBookmark( int from, int len, int fileNo )
28 : mFrom( from ), mLen( len ), mFileNo( fileNo )
29 {}
30 };
31
32 #if defined( wxUSE_TEMPLATE_STL )
33
34 typedef vector<spBookmark) BookmarkListT
35
36 #else
37
38 typedef WXSTL_VECTOR_SHALLOW_COPY(spBookmark) BookmarkListT;
39
40 #endif
41
42
43 class spInterFileContext : public spContext
44 {
45 protected:
46
47 BookmarkListT mDeletionMarks;
48
49 BookmarkListT mFiltered;
50
51 size_t mCurFileNo;
52
53 CJSourceParser mParser;
54
55 protected:
56
57 size_t GetFileNoOfContext( spContext& ctx );
58 size_t GetFileNo( const wxString& fname );
59
60 void InsertBookmarkSorted( BookmarkListT& lst, spBookmark& mark );
61
62 void DoAppendSourceFragment( wxString& source,
63 wxString& result,
64 size_t pos,
65 size_t len );
66
67 void GenerateContextBody( spContext& ctx,
68 wxString& source,
69 wxString& result,
70 size_t& lastSavedPos,
71 size_t& lastKnownPos );
72
73 public:
74
75 StrListT m_Files;
76 StrListT m_Contents;
77
78 public:
79
80 spInterFileContext();
81 ~spInterFileContext();
82
83 void AddFile( const wxString& fname, const wxString& content );
84
85 void RemoveContext( spContext& ctx );
86
87 void GenrateContents();
88
89 void ParseContents( SourceParserPlugin* pPlugin = NULL );
90
91 void WriteToFiles();
92
93 // overriden method of the base class (finds out the source fragment)
94
95 virtual wxString GetBody( spContext* pCtx = NULL );
96
97 virtual wxString GetHeader( spContext* pCtx = NULL );
98 };
99
100
101 #endif