1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 #ifndef ADC_TKP_CPP_HXX
29 #define ADC_TKP_CPP_HXX
30 
31 // USED SERVICES
32 	// BASE CLASSES
33 #include <tokens/tkp.hxx>
34 	// COMPONENTS
35 	// PARAMETRS
36 
37 namespace autodoc
38 {
39     class TkpDocuContext;
40 }
41 
42 namespace csv
43 {
44     namespace ploc
45     {
46         class Path;
47         class DirectoryChain;
48     }
49 }
50 
51 
52 namespace cpp {
53 
54 class Context_CppStd;
55 class DefineDescription;
56 class Distributor;
57 
58 
59 /** This is a TokenParser which is able to parse tokens from
60 	C++ source code.
61 */
62 class TokenParser_Cpp : public TokenParser
63 {
64   public:
65     typedef std::map< String, DefineDescription* >     MacroMap;
66 
67 	// LIFECYCLE
68 						TokenParser_Cpp(
69                             DYN autodoc::TkpDocuContext &
70                                                 let_drDocuContext );
71 	virtual				~TokenParser_Cpp();
72 
73 	// OPERATIONS
74     void                AssignPartners(
75                             CharacterSource &   io_rCharacterSource,
76 							cpp::Distributor &  o_rDealer );
77     void                StartNewFile(
78                             const csv::ploc::Path &
79                                                 i_file );
80   private:
81 	virtual void		SetStartContext();
82 	virtual void        SetCurrentContext(
83 							TkpContext &		io_rContext );
84 	virtual TkpContext &
85 						CurrentContext();
86 	// DATA
87 	Dyn<Context_CppStd>	pBaseContext;
88 	TkpContext *        pCurContext;
89     Distributor *       pDealer;
90     CharacterSource *   pCharacterSource;
91 };
92 
93 
94 }   // namespace cpp
95 
96 
97 #endif
98 
99 
100