1 : //==============================================================================
2 : // File <$/src/cpp/dev/idlc/back/CodePrinter.cpp>
3 : // This file is part of YaOrb : Yet Another Object Request Broker,
4 : // Copyright (c) 2000-2003, 2006, Marc Alff.
5 : //
6 : // This program is free software; you can redistribute it and/or
7 : // modify it under the terms of the GNU General Public License
8 : // as published by the Free Software Foundation; either version 2
9 : // of the License, or (at your option) any later version.
10 : //
11 : // This program is distributed in the hope that it will be useful,
12 : // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 : // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 : // GNU General Public License for more details.
15 : //
16 : // You should have received a copy of the GNU General Public License
17 : // along with this program; if not, write to the Free Software
18 : // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19 : //
20 : //==============================================================================
21 :
22 : // Portability
23 : #include "include/yaorb/config.h"
24 : #include "src/cpp/prod/port/port_stdc.h"
25 :
26 : #include "src/cpp/dev/idlc/back/CodePrinter.h"
27 : #include "src/cpp/dev/idlc/back/CodeUtils.h"
28 :
29 208 : CodePrinter::CodePrinter()
30 : {
31 208 : _tab = 0 ;
32 : }
33 :
34 208 : CodePrinter::~CodePrinter()
35 : {
36 208 : }
37 :
38 : void
39 : CodePrinter::open(
40 : const String & path,
41 208 : const String & file)
42 : {
43 208 : String fullName ;
44 208 : fullName = path ;
45 208 : fullName += file ;
46 :
47 208 : CodeUtils::MkDir(path) ;
48 208 : _str.open(fullName) ;
49 : }
50 :
51 : void
52 208 : CodePrinter::close()
53 : {
54 208 : _str.close() ;
55 : }
56 :
57 : void
58 11960 : CodePrinter::IncTab()
59 : {
60 11960 : _tab ++ ;
61 : }
62 :
63 : void
64 11960 : CodePrinter::DecTab()
65 : {
66 11960 : _tab -- ;
67 : }
68 :
69 : std::ostream &
70 62803 : CodePrinter::Tab()
71 : {
72 62833 : static String t(" ") ;
73 :
74 141998 : for (int i = 0 ; i < _tab ; i++)
75 : {
76 79195 : _str << t ;
77 : }
78 :
79 : return _str ;
80 : }
81 :
82 : std::ostream &
83 22924 : CodePrinter::Str()
84 : {
85 : return _str ;
86 : }
87 :
88 : void
89 258 : CodePrinter::BeginBloc()
90 : {
91 258 : Tab() << "{" << std::endl ;
92 258 : _tab ++ ;
93 : }
94 :
95 : void
96 258 : CodePrinter::EndBloc()
97 : {
98 258 : _tab -- ;
99 258 : Tab() << "}" << std::endl ;
100 : }
101 :
102 : void
103 0 : CodePrinter::EndBlocSemicolon()
104 : {
105 0 : _tab -- ;
106 0 : Tab() << "} ;" << std::endl << std::endl ;
107 : }
108 :
109 : void
110 127 : CodePrinter::Endl()
111 : {
112 : _str << std::endl ;
113 : }
114 :
115 : void
116 : CodePrinter::PrintText(
117 208 : const char * text[])
118 : {
119 : const char ** cursor = & text[0] ;
120 : const char * line = NULL ;
121 :
122 1040 : while (*cursor != NULL)
123 : {
124 : line = *cursor ;
125 832 : Tab() << line << std::endl ;
126 : cursor ++ ;
127 : }
128 : }
129 :
|