]> git.saurik.com Git - wxWidgets.git/blame_incremental - utils/HelpGen/src/cjparser.h
cleaning up the mess created by the FloodFill patch
[wxWidgets.git] / utils / HelpGen / src / cjparser.h
... / ...
CommitLineData
1/////////////////////////////////////////////////////////////////////////////
2// Name: No names yet.
3// Purpose: Implementation of C++/Java parser
4// compatible with SourceParserBase interface
5// Author: Aleksandras Gluchovas
6// Modified by:
7// Created: 22/09/98
8// RCS-ID: $Id$
9// Copyright: (c) Aleskandars Gluchovas
10// Licence: wxWindows licence
11/////////////////////////////////////////////////////////////////////////////
12
13#ifndef __CJPARSESR_G__
14#define __CJPARSESR_G__
15
16#include "srcparser.h"
17
18#include <memory.h>
19#include <stdlib.h>
20#include <stdio.h>
21
22#if wxUSE_IOSTREAMH
23 #include <iostream.h>
24#else
25 #include <iostream>
26#endif
27
28// class parses given "memory-resident" Java or C++ source code
29// and captures information about classes/attrubutes/methods/
30// arguments/etc into structures. Conforms with SourceParserBase
31// interface requirements.
32
33class CJSourceParser : public SourceParserBase
34{
35protected:
36 // begining of the full-text area of the source file
37 char* mpStart;
38
39 // points to first character after the end
40 // of teh full-text area
41 char* mpEnd;
42
43 // current "privacy level"
44 int mCurVis;
45
46 // current parsing position int full-text area
47 char* cur;
48
49 // about the current class
50 bool mIsVirtual;
51 bool mIsTemplate;
52 size_t mNestingLevel;
53
54 // context data for which is currently being collected
55 spContext* mpCurCtx;
56
57 int mCurCtxType; // type of the current context
58
59 bool mCommentsOn;
60 bool mMacrosOn;
61
62protected:
63
64 void AttachComments( spContext& ctx, char* cur );
65 void ParseKeyword( char*& cur );
66 bool ParseNameAndRetVal( char*& cur, bool& isAMacro );
67 bool ParseArguments( char*& cur );
68 void ParseMemberVar( char*& cur );
69 void SkipFunction( char*& cur );
70 void SkipFunctionBody( char*& cur );
71 bool CheckVisibilty( char*& cur );
72
73 void AddClassNode( char*& cur );
74 void AddMacroNode( char*& cur );
75 void AddEnumNode( char*& cur );
76 void AddTypeDefNode( char*& cur );
77
78 void DumpOperationInfo( spOperation& info, const string& tab, wxSTD ostream& os );
79 void DumpClassHeader( spClass& info, wxSTD ostream& os );
80 void DumpClassBody( spClass& info, wxSTD ostream& os );
81
82public:
83
84 // NOTE:: discarding of macros or comments improves performance and
85 // decreases memory usage
86
87 CJSourceParser(bool collectCommnets = 1,
88 bool collectMacros = 1);
89
90 // returns the root-node of the created context tree
91 // (user is responsible for releasing it from the heep)
92 // "end" should point to the last (character + 1) of the
93 // source text
94
95 virtual spFile* Parse( char* start, char* end );
96};
97
98// inline'ed helpers used (just info):
99/*
100static inline void skip_to_eol( char*& cur );
101static inline void skip_eol( char*& cur );
102static inline bool skip_to_next_comment_in_the_line( char*& cur );
103static void skip_to_prev_line( char*& cur );
104static inline void skip_comments( char*& cur );
105static inline void clear_commets_queue();
106static inline void skip_quoted_string( char*& cur );
107static inline bool get_next_token( char*& cur );
108static inline void skip_preprocessor_dir( char*& cur );
109static void skip_token( char*& cur );
110static inline size_t get_token_len( char* tok );
111static inline bool cmp_tokens( char* tok1, char* tok2 );
112static inline bool cmp_tokens_fast( char* tok1, char* tok2, size_t len );
113static inline void skip_tempalate_statement( char*& cur );
114static inline void skip_statement( char*& cur );
115static inline void skip_token_back( char*& cur );
116static inline void skip_next_token_back( char*& cur );
117static string get_token_str( char* cur );
118static size_t skip_block( char*& cur );
119static inline bool skip_imp_block( char*& cur );
120static bool is_class_token( char*& cur );
121inline static bool is_forward_decl( char* cur );
122inline static bool is_function( char* cur, bool& isAMacro );
123static inline void skip_scope_block( char*& cur );
124static void arrange_indirection_tokens_between( string& type, string& identifier );
125static bool is_keyword( char* cur );
126static inline void get_string_between( char* start, char* end, string* pStr );
127static char* set_comment_text( string& text, char* start );
128*/
129
130#endif