1*78bc99aaSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*78bc99aaSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*78bc99aaSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*78bc99aaSAndrew Rist  * distributed with this work for additional information
6*78bc99aaSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*78bc99aaSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*78bc99aaSAndrew Rist  * "License"); you may not use this file except in compliance
9*78bc99aaSAndrew Rist  * with the License.  You may obtain a copy of the License at
10*78bc99aaSAndrew Rist  *
11*78bc99aaSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*78bc99aaSAndrew Rist  *
13*78bc99aaSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*78bc99aaSAndrew Rist  * software distributed under the License is distributed on an
15*78bc99aaSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*78bc99aaSAndrew Rist  * KIND, either express or implied.  See the License for the
17*78bc99aaSAndrew Rist  * specific language governing permissions and limitations
18*78bc99aaSAndrew Rist  * under the License.
19*78bc99aaSAndrew Rist  *
20*78bc99aaSAndrew Rist  *************************************************************/
21cdf0e10cSrcweir 
22cdf0e10cSrcweir #include <precomp.h>
23cdf0e10cSrcweir #include "c_dealer.hxx"
24cdf0e10cSrcweir 
25cdf0e10cSrcweir 
26cdf0e10cSrcweir // NOT FULLY DECLARED SERVICES
27cdf0e10cSrcweir #include <ary/cpp/c_gate.hxx>
28cdf0e10cSrcweir #include <ary/loc/locp_le.hxx>
29cdf0e10cSrcweir #include <ary/loc/loc_root.hxx>
30cdf0e10cSrcweir #include <ary/loc/loc_file.hxx>
31cdf0e10cSrcweir //#include <ary/docu.hxx>
32cdf0e10cSrcweir #include <adoc/a_rdocu.hxx>
33cdf0e10cSrcweir #include "all_toks.hxx"
34cdf0e10cSrcweir #include "c_rcode.hxx"
35cdf0e10cSrcweir 
36cdf0e10cSrcweir 
37cdf0e10cSrcweir namespace ary
38cdf0e10cSrcweir {
39cdf0e10cSrcweir namespace loc
40cdf0e10cSrcweir {
41cdf0e10cSrcweir     class Root;
42cdf0e10cSrcweir }
43cdf0e10cSrcweir }
44cdf0e10cSrcweir 
45cdf0e10cSrcweir 
46cdf0e10cSrcweir 
47cdf0e10cSrcweir 
48cdf0e10cSrcweir namespace cpp
49cdf0e10cSrcweir {
50cdf0e10cSrcweir 
Distributor(ary::cpp::Gate & io_rAryGate)51cdf0e10cSrcweir Distributor::Distributor( ary::cpp::Gate & io_rAryGate )
52cdf0e10cSrcweir 	:   aCppPreProcessor(),
53cdf0e10cSrcweir 		aCodeExplorer(io_rAryGate),
54cdf0e10cSrcweir 		aDocuExplorer(),
55cdf0e10cSrcweir         pGate(&io_rAryGate),
56cdf0e10cSrcweir         pFileEventHandler(0),
57cdf0e10cSrcweir         pDocuDistributor(0)
58cdf0e10cSrcweir {
59cdf0e10cSrcweir     pFileEventHandler = & aCodeExplorer.FileEventHandler();
60cdf0e10cSrcweir     pDocuDistributor = & aCodeExplorer.DocuDistributor();
61cdf0e10cSrcweir }
62cdf0e10cSrcweir 
63cdf0e10cSrcweir void
AssignPartners(CharacterSource & io_rSourceText,const MacroMap & i_rValidMacros)64cdf0e10cSrcweir Distributor::AssignPartners( CharacterSource &   io_rSourceText,
65cdf0e10cSrcweir                              const MacroMap &    i_rValidMacros )
66cdf0e10cSrcweir {
67cdf0e10cSrcweir     aCppPreProcessor.AssignPartners(aCodeExplorer, io_rSourceText, i_rValidMacros);
68cdf0e10cSrcweir }
69cdf0e10cSrcweir 
~Distributor()70cdf0e10cSrcweir Distributor::~Distributor()
71cdf0e10cSrcweir {
72cdf0e10cSrcweir }
73cdf0e10cSrcweir 
74cdf0e10cSrcweir void
StartNewFile(const csv::ploc::Path & i_file)75cdf0e10cSrcweir Distributor::StartNewFile( const csv::ploc::Path & i_file )
76cdf0e10cSrcweir {
77cdf0e10cSrcweir     const csv::ploc::Root &
78cdf0e10cSrcweir         root_dir = i_file.RootDir();
79cdf0e10cSrcweir     StreamLock
80cdf0e10cSrcweir         sl(700);
81cdf0e10cSrcweir     root_dir.Get(sl());
82cdf0e10cSrcweir     csv::ploc::Path
83cdf0e10cSrcweir         root_path( sl().c_str(), true );
84cdf0e10cSrcweir     ary::loc::Le_id
85cdf0e10cSrcweir         root_id = pGate->Locations().CheckIn_Root(root_path).LeId();
86cdf0e10cSrcweir     ary::loc::File &
87cdf0e10cSrcweir         rFile = pGate->Locations().CheckIn_File(
88cdf0e10cSrcweir                                         i_file.File(),
89cdf0e10cSrcweir                                         i_file.DirChain(),
90cdf0e10cSrcweir                                         root_id  );
91cdf0e10cSrcweir     pFileEventHandler->SetCurFile(rFile);
92cdf0e10cSrcweir 
93cdf0e10cSrcweir 	aCodeExplorer.StartNewFile();
94cdf0e10cSrcweir 
95cdf0e10cSrcweir     csv_assert( pDocuDistributor != 0 );
96cdf0e10cSrcweir     aDocuExplorer.StartNewFile(*pDocuDistributor);
97cdf0e10cSrcweir }
98cdf0e10cSrcweir 
99cdf0e10cSrcweir 
100cdf0e10cSrcweir void
Deal_Eol()101cdf0e10cSrcweir Distributor::Deal_Eol()
102cdf0e10cSrcweir {
103cdf0e10cSrcweir 	pFileEventHandler->Event_IncrLineCount();
104cdf0e10cSrcweir }
105cdf0e10cSrcweir 
106cdf0e10cSrcweir void
Deal_Eof()107cdf0e10cSrcweir Distributor::Deal_Eof()
108cdf0e10cSrcweir {
109cdf0e10cSrcweir 	// Do nothing yet.
110cdf0e10cSrcweir }
111cdf0e10cSrcweir 
112cdf0e10cSrcweir void
Deal_Cpp_UnblockMacro(Tok_UnblockMacro & let_drToken)113cdf0e10cSrcweir Distributor::Deal_Cpp_UnblockMacro( Tok_UnblockMacro & let_drToken )
114cdf0e10cSrcweir {
115cdf0e10cSrcweir     aCppPreProcessor.UnblockMacro(let_drToken.Text());
116cdf0e10cSrcweir     delete &let_drToken;
117cdf0e10cSrcweir }
118cdf0e10cSrcweir 
119cdf0e10cSrcweir void
Deal_CppCode(cpp::Token & let_drToken)120cdf0e10cSrcweir Distributor::Deal_CppCode( cpp::Token & let_drToken )
121cdf0e10cSrcweir {
122cdf0e10cSrcweir     aCppPreProcessor.Process_Token(let_drToken);
123cdf0e10cSrcweir }
124cdf0e10cSrcweir 
125cdf0e10cSrcweir void
Deal_AdcDocu(adoc::Token & let_drToken)126cdf0e10cSrcweir Distributor::Deal_AdcDocu( adoc::Token & let_drToken )
127cdf0e10cSrcweir {
128cdf0e10cSrcweir 	aDocuExplorer.Process_Token(let_drToken);
129cdf0e10cSrcweir }
130cdf0e10cSrcweir 
131cdf0e10cSrcweir Distributor *
AsDistributor()132cdf0e10cSrcweir Distributor::AsDistributor()
133cdf0e10cSrcweir {
134cdf0e10cSrcweir  	return this;
135cdf0e10cSrcweir }
136cdf0e10cSrcweir 
137cdf0e10cSrcweir 
138cdf0e10cSrcweir 
139cdf0e10cSrcweir 
140cdf0e10cSrcweir 
141cdf0e10cSrcweir }   // namespace cpp
142cdf0e10cSrcweir 
143cdf0e10cSrcweir 
144