1 : //==============================================================================
2 : // File <$/src/cpp/dev/idlc/back/lang_java/lang_java.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 "yaorb/config.h"
24 : #include "src/cpp/prod/port/port_stdc.h"
25 :
26 : #include <stdlib.h>
27 : #include <fstream>
28 : #include <ctype.h>
29 :
30 : #include "src/cpp/prod/tool/DEVELOPMENT.h"
31 :
32 : #include "src/cpp/prod/tool/Assert.h"
33 :
34 : #include "src/cpp/dev/idlc/sym_tab.h"
35 : #include "src/cpp/dev/idlc/all_symbols.h"
36 : #include "src/cpp/dev/idlc/interface.h"
37 : #include "src/cpp/dev/idlc/native.h"
38 : #include "src/cpp/dev/idlc/attribute.h"
39 : #include "src/cpp/dev/idlc/struct.h"
40 : #include "src/cpp/dev/idlc/exception.h"
41 : #include "src/cpp/dev/idlc/struct_member.h"
42 : #include "src/cpp/dev/idlc/enum.h"
43 : #include "src/cpp/dev/idlc/enum_item.h"
44 : #include "src/cpp/dev/idlc/operation.h"
45 : #include "src/cpp/dev/idlc/typedef.h"
46 : #include "src/cpp/dev/idlc/idl_type.h"
47 : #include "src/cpp/dev/idlc/value.h"
48 : #include "src/cpp/dev/idlc/char_value.h"
49 : #include "src/cpp/dev/idlc/wchar_value.h"
50 : #include "src/cpp/dev/idlc/int_value.h"
51 : #include "src/cpp/dev/idlc/string_value.h"
52 : #include "src/cpp/dev/idlc/wstring_value.h"
53 : #include "src/cpp/dev/idlc/yyutils.h"
54 : #include "src/cpp/dev/idlc/back/CodeUtils.h"
55 : #include "src/cpp/dev/idlc/back/lang_java/lang_java.h"
56 : #include "src/cpp/dev/idlc/back/lang_java/javainfo.h"
57 :
58 : // since ostream and endl is used **so much** ...
59 : // This setting is private to this file though
60 : using namespace std ;
61 :
62 33 : const String LangJava::_tab(" ") ;
63 :
64 : static const char* g_header[] =
65 : {
66 : "",
67 : "// This file was automatically generated by YaOrb IDL->Java compiler.",
68 : "// DO NOT EDIT !",
69 : "",
70 : NULL
71 : } ;
72 :
73 : static void
74 : PrintNiceChar(
75 : char c,
76 0 : CodePrinter & str)
77 : {
78 0 : switch(c)
79 : {
80 : case '\n' :
81 : {
82 0 : str.Str() << "\\n" ;
83 0 : break ;
84 : }
85 : case '\t' :
86 : {
87 0 : str.Str() << "\\t" ;
88 0 : break ;
89 : }
90 : case '\v' :
91 : {
92 0 : str.Str() << "\\v" ;
93 0 : break ;
94 : }
95 : case '\b' :
96 : {
97 0 : str.Str() << "\\b" ;
98 0 : break ;
99 : }
100 : case '\r' :
101 : {
102 0 : str.Str() << "\\r" ;
103 0 : break ;
104 : }
105 : case '\f' :
106 : {
107 0 : str.Str() << "\\f" ;
108 0 : break ;
109 : }
110 : case '\a' :
111 : {
112 0 : str.Str() << "\\a" ;
113 0 : break ;
114 : }
115 : case '\\' :
116 : {
117 0 : str.Str() << "\\\\" ;
118 0 : break ;
119 : }
120 : case '\'' :
121 : {
122 0 : str.Str() << "\\\'" ;
123 0 : break ;
124 : }
125 : case '\"' :
126 : {
127 0 : str.Str() << "\\\"" ;
128 0 : break ;
129 : }
130 : default :
131 : {
132 0 : if (isprint(c))
133 : {
134 0 : str.Str() << c ;
135 : }
136 : else
137 : {
138 : char buf[5] ;
139 0 : sprintf (buf, "\\x%02x", c) ;
140 0 : str.Str() << buf ;
141 : }
142 : }
143 : }
144 : }
145 :
146 2 : LangJava::LangJava()
147 : :
148 : _strH(),
149 : _strJava(),
150 : _strStubH(),
151 : _strStubJava(),
152 : _strSkelH(),
153 : _strSkelJava(),
154 : _tabH(0),
155 : _tabJava(0),
156 : _tabStubH(0),
157 : _tabStubJava(0),
158 : _tabSkelH(0),
159 : _tabSkelJava(0),
160 : _generateModuleName(),
161 : _generateModuleOption(false),
162 : _outputFileName(),
163 2 : _outputDirName()
164 : {
165 0 : }
166 :
167 2 : LangJava::~LangJava()
168 14 : {}
169 :
170 270 : JavaInfo* LangJava::GetJavaInfo(Symbol *s)
171 : {
172 : ASSERT(s != NULL) ;
173 270 : JavaInfo *result = (JavaInfo*) s->GetHook() ;
174 270 : if (result == NULL)
175 : {
176 65 : result = new JavaInfo(s) ;
177 65 : s->SetHook(result) ;
178 : }
179 : return result ;
180 : }
181 :
182 0 : ostream& LangJava::Tabulate(ostream& str, int level)
183 : {
184 0 : while (level > 0)
185 : {
186 0 : str << _tab ;
187 : level-- ;
188 : }
189 :
190 : return str ;
191 : }
192 :
193 0 : ostream& LangJava::TabulateH(void)
194 : {
195 0 : return Tabulate(_strH, _tabH) ;
196 : }
197 :
198 0 : ostream& LangJava::TabulateJava(void)
199 : {
200 0 : return Tabulate(_strJava, _tabJava) ;
201 : }
202 :
203 0 : ostream& LangJava::TabulateStubH(void)
204 : {
205 0 : return Tabulate(_strStubH, _tabStubH) ;
206 : }
207 :
208 0 : ostream& LangJava::TabulateStubJava(void)
209 : {
210 0 : return Tabulate(_strStubJava, _tabStubJava) ;
211 : }
212 :
213 0 : ostream& LangJava::TabulateSkelH(void)
214 : {
215 0 : return Tabulate(_strSkelH, _tabSkelH) ;
216 : }
217 :
218 0 : ostream& LangJava::TabulateSkelJava(void)
219 : {
220 0 : return Tabulate(_strSkelJava, _tabSkelJava) ;
221 : }
222 :
223 2 : void LangJava::SetGenerateOption(const String& module)
224 : {
225 2 : _generateModuleOption = true ;
226 2 : _generateModuleName = module ;
227 : }
228 :
229 0 : void LangJava::SetOutputFile(const String& filename)
230 : {
231 0 : _outputFileName = filename ;
232 : }
233 :
234 2 : void LangJava::SetOutputDir(const String& dirname)
235 : {
236 2 : _outputDirName = dirname ;
237 : }
238 :
239 0 : void LangJava::Headers(void)
240 : {
241 : static const char* text[] =
242 : {
243 : "",
244 : "// This file was automatically generated by YAORB IDL->C++ compiler.",
245 : "// DO NOT EDIT !",
246 : "",
247 : NULL
248 : } ;
249 :
250 : const char** tmp = & text[0] ;
251 :
252 0 : while (*tmp != NULL)
253 : {
254 0 : _strH << *tmp << endl ;
255 0 : _strJava << *tmp << endl ;
256 0 : _strStubH << *tmp << endl ;
257 0 : _strStubJava << *tmp << endl ;
258 0 : _strSkelH << *tmp << endl ;
259 0 : _strSkelJava << *tmp << endl ;
260 :
261 : tmp ++ ;
262 : }
263 :
264 : return ;
265 : }
266 :
267 0 : String LangJava::Prefix(const String& idlFullName)
268 : {
269 : // extract A.B.C from A.B.C.Z
270 :
271 0 : String result ;
272 :
273 0 : char *tmp = strdup(idlFullName) ;
274 0 : char *end = tmp + strlen(tmp) ;
275 :
276 0 : while ((tmp <= end) && (*end != '.')) end-- ; // Eat Z
277 :
278 : ASSERT(tmp <= end) ;
279 :
280 0 : *end = '\0' ;
281 :
282 0 : result = tmp ;
283 0 : free(tmp) ;
284 :
285 0 : return result ;
286 : }
287 :
288 2 : void LangJava::GenerateCode(SymbolTable *symTab)
289 : {
290 2 : JavaInfo rootInfo ;
291 :
292 2 : rootInfo._isPseudo = false ;
293 2 : rootInfo._hasSubPackage = false ;
294 2 : rootInfo._hasHelper = false ;
295 2 : rootInfo._hasHolder = false ;
296 2 : rootInfo._javaName = "" ;
297 2 : rootInfo._javaPackageName = "" ;
298 2 : rootInfo._javaHelperName = "" ;
299 2 : rootInfo._javaHolderName = "" ;
300 2 : rootInfo._javaFullName = "" ;
301 2 : rootInfo._javaFullHelperName = "" ;
302 2 : rootInfo._javaFullHolderName = "" ;
303 2 : rootInfo._javaSubPackageFullName = "" ;
304 2 : rootInfo._fileName = "" ;
305 2 : rootInfo._dirName = "" ;
306 2 : rootInfo._fileFullName = "" ;
307 :
308 2 : BuildContextInfo(symTab, & rootInfo) ;
309 :
310 2 : const char* tmp = _outputDirName ;
311 :
312 2 : String anchor = "" ;
313 2 : if (tmp[0] == '/')
314 : {
315 : // Absolute path
316 2 : anchor = "/" ;
317 : }
318 : else
319 : {
320 : // Relative path
321 0 : anchor = "./" ;
322 : }
323 2 : CodeUtils::MkFullDir(anchor, _outputDirName) ;
324 :
325 2 : GenerateContext(symTab, false) ;
326 : }
327 :
328 : void LangJava::BuildContextInfo(
329 : SymbolContainer *symTab,
330 7 : JavaInfo *parentInfo)
331 : {
332 7 : const SymbolList& symbols = symTab->GetLocalSymbols() ;
333 : Symbol *symbol = NULL ;
334 : SymbolListIt it(symbols) ;
335 7 : String name ;
336 7 : int len = strlen(_generateModuleName) ;
337 :
338 79 : while (it.GetNext())
339 : {
340 : symbol = it.GetItem() ;
341 :
342 65 : if (_generateModuleOption == true)
343 : {
344 65 : JavaInfo *info = GetJavaInfo(symbol) ;
345 65 : name = info->_javaFullName ;
346 :
347 : // If the symbol is in the module to generate ...
348 65 : if (strncmp(name, _generateModuleName, len) == 0)
349 : {
350 64 : BuildOneSymbolInfo(symTab, symbol, parentInfo) ;
351 : }
352 : }
353 : else
354 : {
355 0 : BuildOneSymbolInfo(symTab, symbol, parentInfo) ;
356 : }
357 0 : }
358 : }
359 :
360 : void LangJava::GenerateContext(
361 : SymbolContainer *symTab,
362 7 : bool pseudo)
363 : {
364 7 : const SymbolList& symbols = symTab->GetLocalSymbols() ;
365 : Symbol *symbol = NULL ;
366 : SymbolListIt it(symbols) ;
367 7 : String name ;
368 7 : int len = strlen(_generateModuleName) ;
369 :
370 79 : while (it.GetNext())
371 : {
372 : symbol = it.GetItem() ;
373 :
374 65 : if (_generateModuleOption == true)
375 : {
376 65 : JavaInfo *info = GetJavaInfo(symbol) ;
377 65 : name = info->_javaFullName ;
378 :
379 : // If the symbol is in the module to generate ...
380 65 : if (strncmp(name, _generateModuleName, len) == 0)
381 : {
382 64 : GenerateOneSymbol(symTab, symbol, pseudo) ;
383 : }
384 : }
385 : else
386 : {
387 0 : GenerateOneSymbol(symTab, symbol, pseudo) ;
388 : }
389 0 : }
390 : }
391 :
392 : void LangJava::BuildOneSymbolInfo(
393 : SymbolContainer *symTab,
394 : Symbol *symbol,
395 64 : JavaInfo *parentInfo)
396 : {
397 64 : switch(symbol->GetClass())
398 : {
399 : case moduleSymbol:
400 : {
401 : Module *m = (Module*) symbol ;
402 2 : BuildModuleInfo(symTab, m, parentInfo) ;
403 : break ;
404 : }
405 : case interfaceSymbol :
406 : {
407 : Interface *i = (Interface*) symbol ;
408 16 : BuildInterfaceInfo(symTab, i, parentInfo) ;
409 : break ;
410 : }
411 : case attributeSymbol :
412 : {
413 : Attribute *a = (Attribute*) symbol ;
414 0 : BuildAttributeInfo(symTab, a, parentInfo) ;
415 : break ;
416 : }
417 : case operationSymbol :
418 : {
419 : Operation *o = (Operation*) symbol ;
420 0 : BuildOperationInfo(symTab, o, parentInfo) ;
421 : break ;
422 : }
423 : case parameterSymbol :
424 : {
425 0 : NON_DEV("GenerateOneSymbol") ;
426 : break ;
427 : }
428 : case typedefSymbol :
429 : {
430 : Typedef *t = (Typedef*) symbol ;
431 5 : BuildTypedefInfo(symTab, t, parentInfo) ;
432 : break ;
433 : }
434 : case structSymbol :
435 : {
436 : Struct *s = (Struct*) symbol ;
437 2 : BuildStructInfo(symTab, s, parentInfo) ;
438 : break ;
439 : }
440 : case memberSymbol :
441 : {
442 : // Nothing ! BuildStructInfo will take care of the member
443 : break ;
444 : }
445 : case unionSymbol :
446 : {
447 0 : NON_DEV("BuildOneSymbolInfo") ;
448 : break ;
449 : }
450 : case constantSymbol :
451 : {
452 : Constant *c = (Constant*) symbol ;
453 7 : BuildConstantInfo(symTab, c, parentInfo) ;
454 : break ;
455 : }
456 : case enumSymbol :
457 : {
458 : Enum *e = (Enum*) symbol ;
459 8 : BuildEnumInfo(symTab, e, parentInfo) ;
460 : break ;
461 : }
462 : case enumItemSymbol :
463 : {
464 : // Nothing ! BuildEnumInfo will take care of the enum
465 : break ;
466 : }
467 : case exceptionSymbol :
468 : {
469 : Exception *e = (Exception*) symbol ;
470 1 : BuildExceptionInfo(symTab, e, parentInfo) ;
471 : break ;
472 : }
473 : case nativeSymbol :
474 : {
475 : SymNative *native = (SymNative*) symbol ;
476 1 : BuildNativeInfo(native) ;
477 : break ;
478 : }
479 : }
480 : }
481 :
482 : void LangJava::GenerateOneSymbol(
483 : SymbolContainer *symTab,
484 : Symbol *symbol,
485 64 : bool pseudo)
486 : {
487 64 : switch(symbol->GetClass())
488 : {
489 : case moduleSymbol:
490 : {
491 : Module *m = (Module*) symbol ;
492 2 : GenerateModule(symTab, m) ;
493 : break ;
494 : }
495 : case interfaceSymbol :
496 : {
497 : Interface *i = (Interface*) symbol ;
498 16 : GenerateInterface(symTab, i) ;
499 : break ;
500 : }
501 : case attributeSymbol :
502 : {
503 : Attribute *a = (Attribute*) symbol ;
504 0 : GenerateAttribute(symTab, a, pseudo) ;
505 : break ;
506 : }
507 : case operationSymbol :
508 : {
509 : Operation *o = (Operation*) symbol ;
510 0 : GenerateOperation(symTab, o, pseudo) ;
511 : break ;
512 : }
513 : case parameterSymbol :
514 : {
515 0 : NON_DEV("GenerateOneSymbol") ;
516 : break ;
517 : }
518 : case typedefSymbol :
519 : {
520 : Typedef *t = (Typedef*) symbol ;
521 5 : GenerateTypedef(symTab, t) ;
522 : break ;
523 : }
524 : case structSymbol :
525 : {
526 2 : Struct *s = (Struct*) symbol ;
527 2 : GenerateStruct(symTab, s, pseudo) ;
528 2 : GenerateStructHelper(s) ;
529 2 : GenerateStructHolder(s) ;
530 : break ;
531 : }
532 : case memberSymbol :
533 : {
534 : // Nothing ! GenerateStructwill take care of the member
535 : break ;
536 : }
537 : case unionSymbol :
538 : {
539 0 : NON_DEV("GenerateOneSymbol") ;
540 : break ;
541 : }
542 : case constantSymbol :
543 : {
544 : Constant *c = (Constant*) symbol ;
545 7 : GenerateConstant(symTab, c) ;
546 : break ;
547 : }
548 : case enumSymbol :
549 : {
550 8 : Enum *e = (Enum*) symbol ;
551 8 : GenerateEnum(symTab, e) ;
552 8 : GenerateEnumHelper(e) ;
553 8 : GenerateEnumHolder(e) ;
554 : break ;
555 : }
556 : case enumItemSymbol :
557 : {
558 : // Nothing ! GenerateEnum will take care of the enum
559 : break ;
560 : }
561 : case exceptionSymbol :
562 : {
563 1 : Exception *e = (Exception*) symbol ;
564 1 : GenerateException(symTab, e, pseudo) ;
565 1 : GenerateExceptionHelper(e) ;
566 1 : GenerateExceptionHolder(e) ;
567 : break ;
568 : }
569 : case nativeSymbol :
570 : {
571 : SymNative *native = (SymNative*) symbol ;
572 1 : GenerateNative(native) ;
573 : break ;
574 : }
575 : }
576 : }
577 :
578 : void LangJava::BuildModuleInfo(
579 : SymbolContainer *symTab,
580 : Module *module,
581 2 : JavaInfo *parentInfo)
582 : {
583 2 : JavaInfo *info = GetJavaInfo(module) ;
584 :
585 2 : info->_hasSubPackage = false ;
586 2 : info->_hasHelper = false ;
587 2 : info->_hasHolder = false ;
588 :
589 2 : NON_DEV("BuildModuleInfo") ;
590 :
591 : //============================ CONTENT ===================================
592 :
593 2 : const String & name = module->GetName() ;
594 2 : Context *c = symTab->findLocalContext(name) ;
595 2 : BuildContextInfo(c, info) ;
596 : }
597 :
598 : void LangJava::GenerateModule(
599 : SymbolContainer *symTab,
600 2 : Module *module)
601 : {
602 2 : JavaInfo *info = GetJavaInfo(module) ;
603 :
604 2 : const String & name = module->GetName() ;
605 : const String & path = info->_dirName ;
606 :
607 : //============================ Package ===================================
608 :
609 2 : CodeUtils::MkFullDir(_outputDirName, path) ;
610 :
611 : //============================ CONTENT ===================================
612 :
613 2 : Context *c = symTab->findLocalContext(name) ;
614 2 : GenerateContext(c, false) ;
615 : }
616 :
617 : void LangJava::BuildInterfaceInfo(
618 : SymbolContainer *symTab,
619 : Interface *interface,
620 16 : JavaInfo *parentInfo)
621 : {
622 16 : JavaInfo *info = GetJavaInfo(interface) ;
623 :
624 16 : info->_hasHelper = true ;
625 16 : info->_hasHolder = true ;
626 :
627 16 : NON_DEV("Build Info") ;
628 : }
629 :
630 : void LangJava::GenerateInterface(
631 : SymbolContainer *symTab,
632 16 : Interface *interface)
633 : {
634 16 : NON_DEV("GenerateInterface") ;
635 : return ;
636 : }
637 :
638 : void LangJava::GenerateInterfaceTablesImpl(
639 : SymbolContainer *symTab,
640 0 : Interface *interface)
641 : {
642 0 : NON_DEV("GenerateInterface") ;
643 : return ;
644 : }
645 :
646 : void LangJava::GenerateLocalOpsImpl(
647 : SymbolContainer *symTab,
648 0 : Interface *interface)
649 : {
650 0 : NON_DEV("GenerateInterface") ;
651 : return ;
652 : }
653 :
654 : void LangJava::BuildAttributeInfo(
655 : SymbolContainer *symTab,
656 : Attribute *attribute,
657 0 : JavaInfo *parentInfo)
658 : {
659 0 : JavaInfo *info = GetJavaInfo(attribute) ;
660 :
661 0 : info->_hasHelper = false ;
662 0 : info->_hasHolder = false ;
663 :
664 0 : NON_DEV("Build Info") ;
665 : }
666 :
667 : void LangJava::GenerateAttribute(
668 : SymbolContainer *symTab,
669 : Attribute *attribute,
670 0 : bool pseudo)
671 : {
672 0 : NON_DEV("GenerateAttribute") ;
673 : return ;
674 : }
675 :
676 : void LangJava::GenerateAttributeStubImpl(
677 0 : Attribute *attribute)
678 : {
679 0 : NON_DEV("GenerateAttribute") ;
680 : return ;
681 : }
682 :
683 : void LangJava::GenerateAttributeSkelImpl(
684 0 : Attribute *attribute)
685 : {
686 0 : NON_DEV("GenerateAttribute") ;
687 : return ;
688 : }
689 :
690 : void LangJava::BuildOperationInfo(
691 : SymbolContainer *symTab,
692 : Operation *operation,
693 0 : JavaInfo *parentInfo)
694 : {
695 0 : JavaInfo *info = GetJavaInfo(operation) ;
696 :
697 0 : info->_hasHelper = false ;
698 0 : info->_hasHolder = false ;
699 :
700 0 : NON_DEV("Build Info") ;
701 : }
702 :
703 : void LangJava::GenerateOperation(
704 : SymbolContainer *symTab,
705 : Operation *operation,
706 0 : bool pseudo)
707 : {
708 0 : NON_DEV("GenerateOperation") ;
709 : return ;
710 : }
711 :
712 : void LangJava::GenerateOperationStubImpl(
713 : SymbolContainer *symTab,
714 0 : Operation *operation)
715 : {
716 0 : NON_DEV("GenerateOperation") ;
717 : return ;
718 : }
719 :
720 : void LangJava::GenerateOperationSkelImpl(
721 : SymbolContainer *symTab,
722 0 : Operation *operation)
723 : {
724 0 : NON_DEV("GenerateOperation") ;
725 : return ;
726 : }
727 :
728 : void LangJava::PrintParameterList(
729 : const ParameterList& params,
730 : ostream& str,
731 : int tab,
732 0 : bool buildInfo)
733 : {
734 : Parameter *param = NULL ;
735 :
736 0 : if (params.size() == 0)
737 : {
738 : // No parameters at all.
739 0 : str << "void" ;
740 : }
741 : else
742 : {
743 : ParameterListIt it(params) ;
744 :
745 : str << endl ;
746 :
747 0 : if (it.GetNext())
748 : {
749 : param = it.GetItem() ;
750 : PrintParameter(param, str, tab, buildInfo) ;
751 : }
752 :
753 0 : while (it.GetNext())
754 : {
755 0 : str << "," << endl ;
756 :
757 : param = it.GetItem() ;
758 : PrintParameter(param, str, tab, buildInfo) ;
759 : }
760 : }
761 : }
762 :
763 : void LangJava::PrintParameter(
764 : Parameter *param,
765 : ostream& str,
766 : int tab,
767 0 : bool buildInfo)
768 : {
769 : }
770 :
771 : void LangJava::PrintCallParameterList(
772 : const ParameterList& params,
773 : ostream& str,
774 0 : int tab)
775 : {
776 : Parameter *param = NULL ;
777 :
778 0 : if (params.size() == 0)
779 : {
780 : // No parameters at all.
781 : }
782 : else
783 : {
784 : ParameterListIt it(params) ;
785 :
786 : str << endl ;
787 :
788 0 : if (it.GetNext())
789 : {
790 : param = it.GetItem() ;
791 : PrintCallParameter(param, str, tab) ;
792 : }
793 :
794 0 : while (it.GetNext())
795 : {
796 0 : str << "," << endl ;
797 :
798 : param = it.GetItem() ;
799 : PrintCallParameter(param, str, tab) ;
800 : }
801 : }
802 : }
803 :
804 : void LangJava::PrintCallParameter(
805 : Parameter *param,
806 : ostream& str,
807 0 : int tab)
808 : {
809 : }
810 :
811 : void LangJava::BuildTypedefInfo(
812 : SymbolContainer *symTab,
813 : Typedef *type_def,
814 5 : JavaInfo *parentInfo)
815 : {
816 5 : JavaInfo *info = GetJavaInfo(type_def) ;
817 :
818 5 : info->_hasHelper = false ;
819 5 : info->_hasHolder = false ;
820 :
821 5 : NON_DEV("Build Info") ;
822 : }
823 :
824 : void LangJava::GenerateTypedef(
825 : SymbolContainer *symTab,
826 5 : Typedef *type_def)
827 : {
828 5 : NON_DEV("GenerateTypedef") ;
829 : return ;
830 : }
831 :
832 : void LangJava::BuildExceptionInfo(
833 : SymbolContainer *symTab,
834 : Exception *exception,
835 1 : JavaInfo *parentInfo)
836 : {
837 1 : JavaInfo *info = GetJavaInfo(exception) ;
838 :
839 1 : info->_hasSubPackage = true ;
840 1 : info->_hasHelper = true ;
841 1 : info->_hasHolder = true ;
842 :
843 : //============================ CONTENT ===================================
844 :
845 1 : String name = exception->GetName() ;
846 1 : Context *c = symTab->findLocalContext(name) ;
847 1 : BuildContextInfo(c, info) ;
848 : }
849 :
850 : void LangJava::GenerateException(
851 : SymbolContainer *symTab,
852 : Exception *exception,
853 1 : bool pseudo)
854 : {
855 : //-------------------------------------------------------------------------
856 : // REFERENCE : OMG 02-08-05.pdf, section 1.15.1, page 1-55
857 : //-------------------------------------------------------------------------
858 :
859 1 : JavaInfo *info = GetJavaInfo(exception) ;
860 :
861 1 : String dirName = _outputDirName ;
862 1 : String fileName = info->_fileFullName ;
863 :
864 1 : CodePrinter str ;
865 :
866 1 : str.open(dirName, fileName) ;
867 :
868 1 : str.PrintText(g_header) ;
869 :
870 1 : String pkgName = info->_javaPackageName ;
871 1 : String exName = info->_javaName ;
872 1 : String exHelperName = info->_javaHelperName ;
873 :
874 1 : if (pkgName != "")
875 : {
876 1 : str.Tab() << "package " << pkgName << " ;" << endl << endl ;
877 : }
878 :
879 : // final public class <ex_name>
880 : // extends org.omg.CORBA.UserException
881 :
882 1 : str.Tab() << "final public class " << exName << endl ;
883 1 : str.IncTab() ;
884 1 : str.Tab() << "extends org.omg.CORBA.UserException" << endl ;
885 1 : str.DecTab() ;
886 :
887 1 : str.BeginBloc() ;
888 :
889 1 : const MemberList& memberList = exception->GetMembers() ;
890 : Member *member = NULL ;
891 : IDLType *memberType = NULL ;
892 1 : String memberName ;
893 : JavaInfo *memberInfo = NULL ;
894 :
895 : MemberListIt it(memberList) ;
896 2 : while (it.GetNext())
897 : {
898 : member = it.GetItem() ;
899 1 : memberType = member->GetType() ;
900 1 : memberInfo = GetJavaInfo(member) ;
901 1 : memberName = memberInfo->_javaName ;
902 :
903 : // public <type> <member> ;
904 :
905 1 : str.Tab() << "public " ;
906 1 : PrintType(str, memberType, JAVA_PRINT_NORMAL) ;
907 1 : str.Str() << " " << memberName << " ;" << endl ;
908 : }
909 :
910 : // public <ex_name>()
911 : // {
912 : // super(<ex_name_helper>.id()) ;
913 : // }
914 :
915 1 : str.Tab() << "public " << exName << "()" << endl ;
916 1 : str.BeginBloc() ;
917 1 : str.Tab() << "super(" << exHelperName << ".id()) ;" << endl ;
918 1 : str.EndBloc() ;
919 :
920 1 : if (memberList.isEmpty() == false)
921 : {
922 1 : str.Endl() ;
923 1 : GenerateExceptionConstructor(str, exception, false) ;
924 : }
925 :
926 1 : str.Endl() ;
927 1 : GenerateExceptionConstructor(str, exception, true) ;
928 :
929 1 : str.EndBloc() ;
930 1 : str.close() ;
931 :
932 : //============================ CONTENT ===================================
933 :
934 1 : String name = exception->GetName() ;
935 1 : Context *c = symTab->findLocalContext(name) ;
936 1 : GenerateContext(c, pseudo) ;
937 : }
938 :
939 : void LangJava::GenerateExceptionConstructor(
940 : CodePrinter & str,
941 : Exception *exception,
942 2 : bool isFull)
943 : {
944 2 : JavaInfo *info = GetJavaInfo(exception) ;
945 :
946 2 : String exName = info->_javaName ;
947 2 : String exHelperName = info->_javaHelperName ;
948 :
949 : // public <ex_name>(
950 : // <type> <member>
951 :
952 2 : str.Tab() << "public " << exName << "(" << endl ;
953 2 : str.IncTab() ;
954 :
955 : bool first = true ;
956 :
957 2 : if (isFull == true)
958 : {
959 1 : str.Tab() << "String _reason" ;
960 : first = false ;
961 : }
962 :
963 2 : const MemberList& memberList = exception->GetMembers() ;
964 : Member *member = NULL ;
965 : IDLType *memberType = NULL ;
966 2 : String memberName ;
967 : JavaInfo *memberInfo = NULL ;
968 :
969 : MemberListIt it(memberList) ;
970 4 : while (it.GetNext())
971 : {
972 : member = it.GetItem() ;
973 2 : memberType = member->GetType() ;
974 2 : memberInfo = GetJavaInfo(member) ;
975 2 : memberName = memberInfo->_javaName ;
976 :
977 2 : if (first == true)
978 : {
979 : first = false ;
980 : }
981 : else
982 : {
983 1 : str.Str() << "," << endl ;
984 1 : str.Tab() ;
985 : }
986 :
987 : // <type> <member> ;
988 :
989 2 : str.Tab() ;
990 2 : PrintType(str, memberType, JAVA_PRINT_NORMAL) ;
991 2 : str.Str() << " " << memberName ;
992 : }
993 :
994 2 : str.Str() << ")" << endl ;
995 2 : str.DecTab() ;
996 :
997 2 : str.BeginBloc() ;
998 :
999 : // (a) super(<ex_helper_name>.id())
1000 : // (b) super(<ex_helper_name>.id()+" "+_reason)
1001 :
1002 2 : str.Tab() << "super(" << exHelperName << ".id()" ;
1003 :
1004 2 : if (isFull == true)
1005 : {
1006 1 : str.Str() << "+\" \"+_reason" ;
1007 : }
1008 :
1009 2 : str.Str() << ") ;" << endl ;
1010 :
1011 : MemberListIt it2(memberList) ;
1012 4 : while (it2.GetNext())
1013 : {
1014 : member = it2.GetItem() ;
1015 2 : memberInfo = GetJavaInfo(member) ;
1016 2 : memberName = memberInfo->_javaName ;
1017 :
1018 : // this.<member> = <parameter>
1019 :
1020 : str.Tab() << "this." << memberName
1021 2 : << " = " << memberName << " ;" << endl ;
1022 : }
1023 :
1024 2 : str.EndBloc() ;
1025 : }
1026 :
1027 : void LangJava::GenerateExceptionHelper(
1028 1 : Exception *exception)
1029 : {
1030 : //-------------------------------------------------------------------------
1031 : // REFERENCE : OMG 02-08-05.pdf, section 1.15.1, page 1-55
1032 : //-------------------------------------------------------------------------
1033 :
1034 1 : JavaInfo *info = GetJavaInfo(exception) ;
1035 :
1036 1 : String dirName = _outputDirName ;
1037 1 : String fileName = info->_fileFullHelperName ;
1038 :
1039 1 : CodePrinter str ;
1040 :
1041 1 : str.open(dirName, fileName) ;
1042 :
1043 1 : str.PrintText(g_header) ;
1044 :
1045 1 : String pkgName = info->_javaPackageName ;
1046 1 : String exName = info->_javaName ;
1047 1 : String exHelperName = info->_javaHelperName ;
1048 :
1049 1 : if (pkgName != "")
1050 : {
1051 1 : str.Tab() << "package " << pkgName << " ;" << endl << endl ;
1052 : }
1053 :
1054 : // abstract public class <ex_helper>
1055 :
1056 1 : str.Tab() << "abstract public class " << exHelperName << endl ;
1057 1 : str.BeginBloc() ;
1058 :
1059 : // public static void insert(
1060 : // org.omg.CORBA.Any a,
1061 : // <enum_name> t)
1062 : // {
1063 : // -- Implementation is ORB Specific --
1064 : // }
1065 :
1066 1 : str.Tab() << "public static void insert(" << endl ;
1067 1 : str.IncTab() ;
1068 1 : str.Tab() << "org.omg.CORBA.Any a," << endl ;
1069 1 : str.Tab() << exName << " t)" << endl ;
1070 1 : str.DecTab() ;
1071 1 : str.BeginBloc() ;
1072 1 : str.Tab() << "// FIXME" << endl ;
1073 1 : str.Tab() << "throw new org.omg.CORBA.NO_IMPLEMENT() ;" << endl ;
1074 1 : str.EndBloc() ;
1075 1 : str.Endl() ;
1076 :
1077 : // public static <ex_name> extract(org.omg.CORBA.Any a)
1078 : // {
1079 : // -- Implementation is ORB Specific --
1080 : // }
1081 :
1082 1 : str.Tab() << "public static " << exName << " extract(org.omg.CORBA.Any a)" << endl ;
1083 1 : str.BeginBloc() ;
1084 1 : str.Tab() << "// FIXME" << endl ;
1085 1 : str.Tab() << "throw new org.omg.CORBA.NO_IMPLEMENT() ;" << endl ;
1086 1 : str.EndBloc() ;
1087 1 : str.Endl() ;
1088 :
1089 : // public static org.omg.CORBA.TypeCode type()
1090 : // {
1091 : // -- Implementation is ORB Specific --
1092 : // }
1093 :
1094 1 : str.Tab() << "public static org.omg.CORBA.TypeCode type()" << endl ;
1095 1 : str.BeginBloc() ;
1096 1 : str.Tab() << "// FIXME" << endl ;
1097 1 : str.Tab() << "throw new org.omg.CORBA.NO_IMPLEMENT() ;" << endl ;
1098 1 : str.EndBloc() ;
1099 1 : str.Endl() ;
1100 :
1101 : // public static String id()
1102 : // {
1103 : // -- Implementation is ORB Specific --
1104 : // }
1105 :
1106 1 : str.Tab() << "public static String id()" << endl ;
1107 1 : str.BeginBloc() ;
1108 1 : str.Tab() << "// FIXME" << endl ;
1109 1 : str.Tab() << "throw new org.omg.CORBA.NO_IMPLEMENT() ;" << endl ;
1110 1 : str.EndBloc() ;
1111 1 : str.Endl() ;
1112 :
1113 : // public static <ex_name> read(
1114 : // org.omg.CORBA.portable.InputStream is)
1115 : // {
1116 : // -- Implementation is ORB Specific --
1117 : // }
1118 :
1119 1 : str.Tab() << "public static " << exName << " read(" << endl ;
1120 1 : str.IncTab() ;
1121 1 : str.Tab() << "org.omg.CORBA.portable.InputStream is)" << endl ;
1122 1 : str.DecTab() ;
1123 1 : str.BeginBloc() ;
1124 1 : str.Tab() << "// FIXME" << endl ;
1125 1 : str.Tab() << "throw new org.omg.CORBA.NO_IMPLEMENT() ;" << endl ;
1126 1 : str.EndBloc() ;
1127 1 : str.Endl() ;
1128 :
1129 : // public static void write(
1130 : // org.omg.CORBA.portable.OutputStream os,
1131 : // <ex_name> val)
1132 : // {
1133 : // -- Implementation is ORB Specific --
1134 : // }
1135 :
1136 1 : str.Tab() << "public static void write(" << endl ;
1137 1 : str.IncTab() ;
1138 1 : str.Tab() << "org.omg.CORBA.portable.OutputStream os," << endl ;
1139 1 : str.Tab() << exName << " val)" << endl ;
1140 1 : str.DecTab() ;
1141 1 : str.BeginBloc() ;
1142 1 : str.Tab() << "// FIXME" << endl ;
1143 1 : str.Tab() << "throw new org.omg.CORBA.NO_IMPLEMENT() ;" << endl ;
1144 1 : str.EndBloc() ;
1145 :
1146 1 : str.EndBloc() ;
1147 1 : str.close() ;
1148 : }
1149 :
1150 : void LangJava::GenerateExceptionHolder(
1151 1 : Exception *exception)
1152 : {
1153 : //-------------------------------------------------------------------------
1154 : // REFERENCE : OMG 02-08-05.pdf, section 1.15.1, page 1-55
1155 : //-------------------------------------------------------------------------
1156 :
1157 1 : JavaInfo *info = GetJavaInfo(exception) ;
1158 :
1159 1 : String dirName = _outputDirName ;
1160 1 : String fileName = info->_fileFullHolderName ;
1161 :
1162 1 : CodePrinter str ;
1163 :
1164 1 : str.open(dirName, fileName) ;
1165 :
1166 1 : str.PrintText(g_header) ;
1167 :
1168 1 : String pkgName = info->_javaPackageName ;
1169 1 : String exName = info->_javaName ;
1170 1 : String exHolderName = info->_javaHolderName ;
1171 :
1172 1 : if (pkgName != "")
1173 : {
1174 1 : str.Tab() << "package " << pkgName << " ;" << endl << endl ;
1175 : }
1176 :
1177 : // final public class <ex_holder>
1178 : // implements org.omg.CORBA.portable.Streamable
1179 :
1180 1 : str.Tab() << "final public class " << exHolderName << endl ;
1181 1 : str.IncTab() ;
1182 1 : str.Tab() << "implements org.omg.CORBA.portable.Streamable" << endl ;
1183 1 : str.DecTab() ;
1184 1 : str.BeginBloc() ;
1185 :
1186 : // public <ex_name> value ;
1187 :
1188 1 : str.Tab() << "public " << exName << " value ;" << endl ;
1189 :
1190 : // public <ex_holder>()
1191 : // {
1192 : // }
1193 :
1194 1 : str.Tab() << "public " << exHolderName << "()" << endl ;
1195 1 : str.BeginBloc() ;
1196 1 : str.EndBloc() ;
1197 1 : str.Endl() ;
1198 :
1199 : // public <ex_holder>(<ex_name> initial)
1200 : // {
1201 : // -- Implementation is ORB Specific --
1202 : // }
1203 :
1204 : str.Tab() << "public " << exHolderName << "("
1205 1 : << exName << " initial)" << endl ;
1206 1 : str.BeginBloc() ;
1207 1 : str.Tab() << "// FIXME" << endl ;
1208 1 : str.Tab() << "throw new org.omg.CORBA.NO_IMPLEMENT() ;" << endl ;
1209 1 : str.EndBloc() ;
1210 1 : str.Endl() ;
1211 :
1212 : // public void _read(
1213 : // org.omg.CORBA.portable.InputStream is)
1214 : // {
1215 : // -- Implementation is ORB Specific --
1216 : // }
1217 :
1218 1 : str.Tab() << "public void _read(" << endl ;
1219 1 : str.IncTab() ;
1220 1 : str.Tab() << "org.omg.CORBA.portable.InputStream is)" << endl ;
1221 1 : str.DecTab() ;
1222 1 : str.BeginBloc() ;
1223 1 : str.Tab() << "// FIXME" << endl ;
1224 1 : str.Tab() << "throw new org.omg.CORBA.NO_IMPLEMENT() ;" << endl ;
1225 1 : str.EndBloc() ;
1226 1 : str.Endl() ;
1227 :
1228 : // public void _write(
1229 : // org.omg.CORBA.portable.OutputStream os)
1230 : // {
1231 : // -- Implementation is ORB Specific --
1232 : // }
1233 :
1234 1 : str.Tab() << "public void _write(" << endl ;
1235 1 : str.IncTab() ;
1236 1 : str.Tab() << "org.omg.CORBA.portable.OutputStream os)" << endl ;
1237 1 : str.DecTab() ;
1238 1 : str.BeginBloc() ;
1239 1 : str.Tab() << "// FIXME" << endl ;
1240 1 : str.Tab() << "throw new org.omg.CORBA.NO_IMPLEMENT() ;" << endl ;
1241 1 : str.EndBloc() ;
1242 1 : str.Endl() ;
1243 :
1244 : // public org.omg.CORBA.TypeCode _type()
1245 : // {
1246 : // -- Implementation is ORB Specific --
1247 : // }
1248 :
1249 1 : str.Tab() << "public org.omg.CORBA.TypeCode _type()" << endl ;
1250 1 : str.BeginBloc() ;
1251 1 : str.Tab() << "// FIXME" << endl ;
1252 1 : str.Tab() << "throw new org.omg.CORBA.NO_IMPLEMENT() ;" << endl ;
1253 1 : str.EndBloc() ;
1254 :
1255 1 : str.EndBloc() ;
1256 1 : str.close() ;
1257 : }
1258 :
1259 : void LangJava::BuildStructInfo(
1260 : SymbolContainer *symTab,
1261 : Struct *structure,
1262 2 : JavaInfo *parentInfo)
1263 : {
1264 2 : JavaInfo *info = GetJavaInfo(structure) ;
1265 :
1266 2 : info->_hasSubPackage = true ;
1267 2 : info->_hasHelper = true ;
1268 2 : info->_hasHolder = true ;
1269 :
1270 : //============================ CONTENT ===================================
1271 :
1272 2 : String name = structure->GetName() ;
1273 2 : Context *c = symTab->findLocalContext(name) ;
1274 2 : BuildContextInfo(c, info) ;
1275 : }
1276 :
1277 : void LangJava::GenerateStruct(
1278 : SymbolContainer *symTab,
1279 : Struct *structure,
1280 2 : bool pseudo)
1281 : {
1282 : //-------------------------------------------------------------------------
1283 : // REFERENCE : OMG 02-08-05.pdf, section 1.8, page 1-20
1284 : //-------------------------------------------------------------------------
1285 :
1286 2 : JavaInfo *info = GetJavaInfo(structure) ;
1287 :
1288 2 : String dirName = _outputDirName ;
1289 2 : String fileName = info->_fileFullName ;
1290 :
1291 2 : CodePrinter str ;
1292 :
1293 2 : str.open(dirName, fileName) ;
1294 :
1295 2 : str.PrintText(g_header) ;
1296 :
1297 2 : String pkgName = info->_javaPackageName ;
1298 2 : String strName = info->_javaName ;
1299 2 : String strHelperName = info->_javaHelperName ;
1300 :
1301 2 : if (pkgName != "")
1302 : {
1303 2 : str.Tab() << "package " << pkgName << " ;" << endl << endl ;
1304 : }
1305 :
1306 : // final public class <struct_name>
1307 : // implements org.omg.CORBA.portable.IDLEntity
1308 :
1309 2 : str.Tab() << "final public class " << strName << endl ;
1310 2 : str.IncTab() ;
1311 2 : str.Tab() << "implements org.omg.CORBA.portable.IDLEntity" << endl ;
1312 2 : str.DecTab() ;
1313 :
1314 2 : str.BeginBloc() ;
1315 :
1316 2 : const MemberList& memberList = structure->GetMembers() ;
1317 : Member *member = NULL ;
1318 : IDLType *memberType = NULL ;
1319 2 : String memberName ;
1320 : JavaInfo *memberInfo = NULL ;
1321 :
1322 : MemberListIt it(memberList) ;
1323 6 : while (it.GetNext())
1324 : {
1325 : member = it.GetItem() ;
1326 4 : memberType = member->GetType() ;
1327 4 : memberInfo = GetJavaInfo(member) ;
1328 4 : memberName = memberInfo->_javaName ;
1329 :
1330 : // public <type> <member> ;
1331 :
1332 4 : str.Tab() << "public " ;
1333 4 : PrintType(str, memberType, JAVA_PRINT_NORMAL) ;
1334 4 : str.Str() << " " << memberName << " ;" << endl ;
1335 : }
1336 2 : str.Endl() ;
1337 :
1338 : // public <struct_name>() {}
1339 :
1340 2 : str.Tab() << "public " << strName << "() {}" << endl ;
1341 :
1342 2 : if (memberList.isEmpty() == false)
1343 : {
1344 : // public <struct_name>(
1345 :
1346 2 : str.Tab() << "public " << strName << "(" << endl ;
1347 2 : str.IncTab() ;
1348 :
1349 : bool first = true ;
1350 : MemberListIt it2(memberList) ;
1351 6 : while (it2.GetNext())
1352 : {
1353 : member = it2.GetItem() ;
1354 4 : memberType = member->GetType() ;
1355 4 : memberInfo = GetJavaInfo(member) ;
1356 4 : memberName = memberInfo->_javaName ;
1357 :
1358 : // <type> <param>,
1359 : // <type> <param>
1360 :
1361 4 : if (first == true)
1362 : {
1363 : first = false ;
1364 : }
1365 : else
1366 : {
1367 2 : str.Str() << "," << endl ;
1368 : }
1369 :
1370 4 : str.Tab() ;
1371 4 : PrintType(str, memberType, JAVA_PRINT_NORMAL) ;
1372 4 : str.Str() << " " << memberName ;
1373 : }
1374 2 : str.Str() << ")" << endl ;
1375 2 : str.DecTab() ;
1376 :
1377 2 : str.BeginBloc() ;
1378 2 : str.Tab() << "throw new org.omg.CORBA.NO_IMPLEMENT() ;" << endl ;
1379 2 : str.EndBloc() ;
1380 : }
1381 :
1382 2 : str.EndBloc() ;
1383 2 : str.close() ;
1384 :
1385 : //============================ CONTENT ===================================
1386 :
1387 2 : String name = structure->GetName() ;
1388 2 : Context *c = symTab->findLocalContext(name) ;
1389 2 : GenerateContext(c, pseudo) ;
1390 : }
1391 :
1392 : void LangJava::GenerateStructHelper(
1393 2 : Struct *structure)
1394 : {
1395 : //-------------------------------------------------------------------------
1396 : // REFERENCE : OMG 02-08-05.pdf, section 1.8, page 1-20
1397 : //-------------------------------------------------------------------------
1398 :
1399 2 : JavaInfo *info = GetJavaInfo(structure) ;
1400 :
1401 2 : String dirName = _outputDirName ;
1402 2 : String fileName = info->_fileFullHelperName ;
1403 :
1404 2 : CodePrinter str ;
1405 :
1406 2 : str.open(dirName, fileName) ;
1407 :
1408 2 : str.PrintText(g_header) ;
1409 :
1410 2 : String pkgName = info->_javaPackageName ;
1411 2 : String strName = info->_javaName ;
1412 2 : String strHelperName = info->_javaHelperName ;
1413 :
1414 2 : if (pkgName != "")
1415 : {
1416 2 : str.Tab() << "package " << pkgName << " ;" << endl << endl ;
1417 : }
1418 :
1419 : // abstract public class <str_helper>
1420 :
1421 2 : str.Tab() << "abstract public class " << strHelperName << endl ;
1422 2 : str.BeginBloc() ;
1423 :
1424 : // public static void insert(
1425 : // org.omg.CORBA.Any a,
1426 : // <str_name> t)
1427 : // {
1428 : // -- Implementation is ORB Specific --
1429 : // }
1430 :
1431 2 : str.Tab() << "public static void insert(" << endl ;
1432 2 : str.IncTab() ;
1433 2 : str.Tab() << "org.omg.CORBA.Any a," << endl ;
1434 2 : str.Tab() << strName << " t)" << endl ;
1435 2 : str.DecTab() ;
1436 2 : str.BeginBloc() ;
1437 2 : str.Tab() << "// FIXME" << endl ;
1438 2 : str.Tab() << "throw new org.omg.CORBA.NO_IMPLEMENT() ;" << endl ;
1439 2 : str.EndBloc() ;
1440 2 : str.Endl() ;
1441 :
1442 : // public static <str_name> extract(org.omg.CORBA.Any a)
1443 : // {
1444 : // -- Implementation is ORB Specific --
1445 : // }
1446 :
1447 2 : str.Tab() << "public static " << strName << " extract(org.omg.CORBA.Any a)" << endl ;
1448 2 : str.BeginBloc() ;
1449 2 : str.Tab() << "// FIXME" << endl ;
1450 2 : str.Tab() << "throw new org.omg.CORBA.NO_IMPLEMENT() ;" << endl ;
1451 2 : str.EndBloc() ;
1452 2 : str.Endl() ;
1453 :
1454 : // public static org.omg.CORBA.TypeCode type()
1455 : // {
1456 : // -- Implementation is ORB Specific --
1457 : // }
1458 :
1459 2 : str.Tab() << "public static org.omg.CORBA.TypeCode type()" << endl ;
1460 2 : str.BeginBloc() ;
1461 2 : str.Tab() << "// FIXME" << endl ;
1462 2 : str.Tab() << "throw new org.omg.CORBA.NO_IMPLEMENT() ;" << endl ;
1463 2 : str.EndBloc() ;
1464 2 : str.Endl() ;
1465 :
1466 : // public static String id()
1467 : // {
1468 : // -- Implementation is ORB Specific --
1469 : // }
1470 :
1471 2 : str.Tab() << "public static String id()" << endl ;
1472 2 : str.BeginBloc() ;
1473 2 : str.Tab() << "// FIXME" << endl ;
1474 2 : str.Tab() << "throw new org.omg.CORBA.NO_IMPLEMENT() ;" << endl ;
1475 2 : str.EndBloc() ;
1476 2 : str.Endl() ;
1477 :
1478 : // public static <str_name> read(
1479 : // org.omg.CORBA.portable.InputStream is)
1480 : // {
1481 : // -- Implementation is ORB Specific --
1482 : // }
1483 :
1484 2 : str.Tab() << "public static " << strName << " read(" << endl ;
1485 2 : str.IncTab() ;
1486 2 : str.Tab() << "org.omg.CORBA.portable.InputStream is)" << endl ;
1487 2 : str.DecTab() ;
1488 2 : str.BeginBloc() ;
1489 2 : str.Tab() << "// FIXME" << endl ;
1490 2 : str.Tab() << "throw new org.omg.CORBA.NO_IMPLEMENT() ;" << endl ;
1491 2 : str.EndBloc() ;
1492 2 : str.Endl() ;
1493 :
1494 : // public static void write(
1495 : // org.omg.CORBA.portable.OutputStream os,
1496 : // <str_name> val)
1497 : // {
1498 : // -- Implementation is ORB Specific --
1499 : // }
1500 :
1501 2 : str.Tab() << "public static void write(" << endl ;
1502 2 : str.IncTab() ;
1503 2 : str.Tab() << "org.omg.CORBA.portable.OutputStream os," << endl ;
1504 2 : str.Tab() << strName << " val)" << endl ;
1505 2 : str.DecTab() ;
1506 2 : str.BeginBloc() ;
1507 2 : str.Tab() << "// FIXME" << endl ;
1508 2 : str.Tab() << "throw new org.omg.CORBA.NO_IMPLEMENT() ;" << endl ;
1509 2 : str.EndBloc() ;
1510 :
1511 2 : str.EndBloc() ;
1512 2 : str.close() ;
1513 : }
1514 :
1515 : void LangJava::GenerateStructHolder(
1516 2 : Struct *structure)
1517 : {
1518 : //-------------------------------------------------------------------------
1519 : // REFERENCE : OMG 02-08-05.pdf, section 1.8, page 1-20
1520 : //-------------------------------------------------------------------------
1521 :
1522 2 : JavaInfo *info = GetJavaInfo(structure) ;
1523 :
1524 2 : String dirName = _outputDirName ;
1525 2 : String fileName = info->_fileFullHolderName ;
1526 :
1527 2 : CodePrinter str ;
1528 :
1529 2 : str.open(dirName, fileName) ;
1530 :
1531 2 : str.PrintText(g_header) ;
1532 :
1533 2 : String pkgName = info->_javaPackageName ;
1534 2 : String strName = info->_javaName ;
1535 2 : String strHolderName = info->_javaHolderName ;
1536 :
1537 2 : if (pkgName != "")
1538 : {
1539 2 : str.Tab() << "package " << pkgName << " ;" << endl << endl ;
1540 : }
1541 :
1542 : // final public class <str_holder>
1543 : // implements org.omg.CORBA.portable.Streamable
1544 :
1545 2 : str.Tab() << "final public class " << strHolderName << endl ;
1546 2 : str.IncTab() ;
1547 2 : str.Tab() << "implements org.omg.CORBA.portable.Streamable" << endl ;
1548 2 : str.DecTab() ;
1549 2 : str.BeginBloc() ;
1550 :
1551 : // public <str_name> value ;
1552 :
1553 2 : str.Tab() << "public " << strName << " value ;" << endl ;
1554 :
1555 : // public <ex_holder>()
1556 : // {
1557 : // }
1558 :
1559 2 : str.Tab() << "public " << strHolderName << "()" << endl ;
1560 2 : str.BeginBloc() ;
1561 2 : str.EndBloc() ;
1562 2 : str.Endl() ;
1563 :
1564 : // public <str_holder>(<str_name> initial)
1565 : // {
1566 : // -- Implementation is ORB Specific --
1567 : // }
1568 :
1569 : str.Tab() << "public " << strHolderName << "("
1570 2 : << strName << " initial)" << endl ;
1571 2 : str.BeginBloc() ;
1572 2 : str.Tab() << "// FIXME" << endl ;
1573 2 : str.Tab() << "throw new org.omg.CORBA.NO_IMPLEMENT() ;" << endl ;
1574 2 : str.EndBloc() ;
1575 2 : str.Endl() ;
1576 :
1577 : // public void _read(
1578 : // org.omg.CORBA.portable.InputStream is)
1579 : // {
1580 : // -- Implementation is ORB Specific --
1581 : // }
1582 :
1583 2 : str.Tab() << "public void _read(" << endl ;
1584 2 : str.IncTab() ;
1585 2 : str.Tab() << "org.omg.CORBA.portable.InputStream is)" << endl ;
1586 2 : str.DecTab() ;
1587 2 : str.BeginBloc() ;
1588 2 : str.Tab() << "// FIXME" << endl ;
1589 2 : str.Tab() << "throw new org.omg.CORBA.NO_IMPLEMENT() ;" << endl ;
1590 2 : str.EndBloc() ;
1591 2 : str.Endl() ;
1592 :
1593 : // public void _write(
1594 : // org.omg.CORBA.portable.OutputStream os)
1595 : // {
1596 : // -- Implementation is ORB Specific --
1597 : // }
1598 :
1599 2 : str.Tab() << "public void _write(" << endl ;
1600 2 : str.IncTab() ;
1601 2 : str.Tab() << "org.omg.CORBA.portable.OutputStream os)" << endl ;
1602 2 : str.DecTab() ;
1603 2 : str.BeginBloc() ;
1604 2 : str.Tab() << "// FIXME" << endl ;
1605 2 : str.Tab() << "throw new org.omg.CORBA.NO_IMPLEMENT() ;" << endl ;
1606 2 : str.EndBloc() ;
1607 2 : str.Endl() ;
1608 :
1609 : // public org.omg.CORBA.TypeCode _type()
1610 : // {
1611 : // -- Implementation is ORB Specific --
1612 : // }
1613 :
1614 2 : str.Tab() << "public org.omg.CORBA.TypeCode _type()" << endl ;
1615 2 : str.BeginBloc() ;
1616 2 : str.Tab() << "// FIXME" << endl ;
1617 2 : str.Tab() << "throw new org.omg.CORBA.NO_IMPLEMENT() ;" << endl ;
1618 2 : str.EndBloc() ;
1619 :
1620 2 : str.EndBloc() ;
1621 2 : str.close() ;
1622 : }
1623 :
1624 : void LangJava::GenerateUnion(
1625 : SymbolContainer *symTab,
1626 0 : Union *union_symbol)
1627 : {
1628 0 : NON_DEV("GenerateUnionDecl") ;
1629 : }
1630 :
1631 : void LangJava::BuildConstantInfo(
1632 : SymbolContainer *symTab,
1633 : Constant *constant,
1634 7 : JavaInfo *parentInfo)
1635 : {
1636 7 : JavaInfo *info = GetJavaInfo(constant) ;
1637 :
1638 7 : info->_hasHelper = false ;
1639 7 : info->_hasHolder = false ;
1640 :
1641 7 : NON_DEV("Build Info") ;
1642 : }
1643 :
1644 : void LangJava::GenerateConstant(
1645 : SymbolContainer *symTab,
1646 7 : Constant *constant)
1647 : {
1648 : //-------------------------------------------------------------------------
1649 : // REFERENCE : OMG 02-08-05.pdf, section 1.6.2, page 1-17
1650 : //-------------------------------------------------------------------------
1651 :
1652 7 : JavaInfo *info = GetJavaInfo(constant) ;
1653 :
1654 7 : String dirName = _outputDirName ;
1655 7 : String fileName = info->_fileFullName ;
1656 :
1657 7 : CodePrinter str ;
1658 :
1659 7 : str.open(dirName, fileName) ;
1660 :
1661 7 : str.PrintText(g_header) ;
1662 :
1663 7 : String pkgName = info->_javaPackageName ;
1664 7 : String constantName = info->_javaName ;
1665 7 : IDLValue *value = constant->GetValue() ;
1666 7 : IDLType *type = value->GetValueType() ;
1667 :
1668 7 : if (pkgName != "")
1669 : {
1670 7 : str.Tab() << "package " << pkgName << " ;" << endl << endl ;
1671 : }
1672 :
1673 : // public interface <constant_name>
1674 :
1675 7 : str.Tab() << "public interface " << constantName << endl ;
1676 7 : str.BeginBloc() ;
1677 :
1678 : // <type> value = <value> ;
1679 :
1680 7 : str.Tab() ;
1681 7 : PrintType(str, type, JAVA_PRINT_NORMAL) ;
1682 7 : str.Str() << " value = " ;
1683 7 : PrintValue(str, value) ;
1684 7 : str.Str() << " ;" << endl ;
1685 :
1686 7 : str.EndBloc() ;
1687 7 : str.close() ;
1688 : }
1689 :
1690 : void LangJava::BuildEnumInfo(
1691 : SymbolContainer *symTab,
1692 : Enum *enum_symbol,
1693 8 : JavaInfo *parentInfo)
1694 : {
1695 8 : JavaInfo *info = GetJavaInfo(enum_symbol) ;
1696 :
1697 8 : info->_hasHelper = true ;
1698 8 : info->_hasHolder = true ;
1699 : }
1700 :
1701 : void LangJava::GenerateEnum(
1702 : SymbolContainer *symTab,
1703 8 : Enum *enum_symbol)
1704 : {
1705 : //-------------------------------------------------------------------------
1706 : // REFERENCE : OMG 02-08-05.pdf, section 1.7, page 1-17
1707 : //-------------------------------------------------------------------------
1708 :
1709 8 : JavaInfo *info = GetJavaInfo(enum_symbol) ;
1710 :
1711 8 : String dirName = _outputDirName ;
1712 8 : String fileName = info->_fileFullName ;
1713 :
1714 8 : CodePrinter str ;
1715 :
1716 8 : str.open(dirName, fileName) ;
1717 :
1718 8 : str.PrintText(g_header) ;
1719 :
1720 8 : String pkgName = info->_javaPackageName ;
1721 8 : String enumName = info->_javaName ;
1722 :
1723 8 : if (pkgName != "")
1724 : {
1725 8 : str.Tab() << "package " << pkgName << " ;" << endl << endl ;
1726 : }
1727 :
1728 : // public class <enum_name>
1729 : // implements org.omg.CORBA.portable.IDLEntity
1730 :
1731 8 : str.Tab() << "public class " << enumName << endl ;
1732 8 : str.IncTab() ;
1733 8 : str.Tab() << "implements org.omg.CORBA.portable.IDLEntity" << endl ;
1734 8 : str.DecTab() ;
1735 :
1736 8 : str.BeginBloc() ;
1737 :
1738 8 : const EnumItemList& itemList = enum_symbol->GetItems() ;
1739 : int itemValue = 0 ;
1740 : EnumItem *item ;
1741 8 : String itemName ;
1742 : JavaInfo *itemInfo = NULL ;
1743 :
1744 : EnumItemListIt it(itemList) ;
1745 25 : while (it.GetNext())
1746 : {
1747 : item = it.GetItem() ;
1748 17 : itemInfo = GetJavaInfo(item) ;
1749 17 : itemName = itemInfo->_javaName ;
1750 :
1751 : // public static final int _<label> = <value> ;
1752 :
1753 : str.Tab() << "public static final int _" << itemName
1754 34 : << " = " << itemValue << " ; " << endl ;
1755 :
1756 : // public static final <enum_name> <label>
1757 : // = new <enum_name>(_<label>) ;
1758 :
1759 : str.Tab() << "public static final "
1760 17 : << enumName << " " << itemName << endl ;
1761 :
1762 : str.Tab() << "= new " << enumName
1763 17 : << "(_" << itemName << ") ;" << endl << endl ;
1764 :
1765 17 : itemValue ++ ;
1766 : }
1767 :
1768 : // -- Implementation is ORB Specific --
1769 : // private int _value ;
1770 :
1771 8 : str.Tab() << "private int _value ; " << endl << endl ;
1772 :
1773 : // public int value ()
1774 : // {
1775 : // -- Implementation is ORB Specific --
1776 : // return _value ;
1777 : // }
1778 :
1779 8 : str.Tab() << "public int value()" << endl ;
1780 8 : str.BeginBloc() ;
1781 8 : str.Tab() << "return _value ;" << endl ;
1782 8 : str.EndBloc() ;
1783 8 : str.Endl() ;
1784 :
1785 : // public static <enum_name> from_int(int value)
1786 : // {
1787 : // -- Implementation is ORB Specific --
1788 : // switch(value)
1789 : // {
1790 : // case _<label> :
1791 : // {
1792 : // return <enum_item> ;
1793 : // }
1794 : // default :
1795 : // {
1796 : // throw new org.omg.CORBA.BAD_PARAM();
1797 : // }
1798 : // }
1799 : // }
1800 :
1801 : str.Tab() << "public static " << enumName
1802 8 : << " from_int(int value)" << endl ;
1803 8 : str.BeginBloc() ;
1804 8 : str.Tab() << "switch(value)" << endl ;
1805 8 : str.BeginBloc() ;
1806 :
1807 : EnumItemListIt it2(itemList) ;
1808 25 : while (it2.GetNext())
1809 : {
1810 : item = it2.GetItem() ;
1811 17 : itemInfo = GetJavaInfo(item) ;
1812 17 : itemName = itemInfo->_javaName ;
1813 :
1814 17 : str.Tab() << "case _" << itemName << " :" << endl ;
1815 17 : str.BeginBloc() ;
1816 17 : str.Tab() << "return " << itemName << " ;" << endl ;
1817 17 : str.EndBloc() ;
1818 : }
1819 :
1820 8 : str.Tab() << "default :" << endl ;
1821 8 : str.BeginBloc() ;
1822 8 : str.Tab() << "throw new org.omg.CORBA.BAD_PARAM() ;" << endl ;
1823 8 : str.EndBloc() ;
1824 :
1825 8 : str.EndBloc() ;
1826 8 : str.EndBloc() ;
1827 8 : str.Endl() ;
1828 :
1829 : // protected <enum_name>(int)
1830 : // {
1831 : // -- Implementation is ORB Specific --
1832 : // _value = value ;
1833 : // }
1834 :
1835 8 : str.Tab() << "protected " << enumName << "(int value)" << endl ;
1836 8 : str.BeginBloc() ;
1837 8 : str.Tab() << "_value = value ;" << endl ;
1838 8 : str.EndBloc() ;
1839 8 : str.Endl() ;
1840 :
1841 : // public java.lang.Object readResolve()
1842 : // throws java.io.ObjectStreamException
1843 : // {
1844 : // -- Implementation is ORB Specific --
1845 : // return from_int( value() ) ;
1846 : // }
1847 :
1848 8 : str.Tab() << "public java.lang.Object readResolve()" << endl ;
1849 8 : str.IncTab() ;
1850 8 : str.Tab() << "throws java.io.ObjectStreamException" << endl ;
1851 8 : str.DecTab() ;
1852 8 : str.BeginBloc() ;
1853 8 : str.Tab() << "return from_int( value() ) ;" << endl ;
1854 8 : str.EndBloc() ;
1855 :
1856 8 : str.EndBloc() ;
1857 8 : str.close() ;
1858 : }
1859 :
1860 : void LangJava::GenerateEnumHelper(
1861 8 : Enum *enum_symbol)
1862 : {
1863 : //-------------------------------------------------------------------------
1864 : // REFERENCE : OMG 02-08-05.pdf, section 1.7, page 1-17
1865 : //-------------------------------------------------------------------------
1866 :
1867 8 : JavaInfo *info = GetJavaInfo(enum_symbol) ;
1868 :
1869 8 : String dirName = _outputDirName ;
1870 8 : String fileName = info->_fileFullHelperName ;
1871 :
1872 8 : CodePrinter str ;
1873 :
1874 8 : str.open(dirName, fileName) ;
1875 :
1876 8 : str.PrintText(g_header) ;
1877 :
1878 8 : String pkgName = info->_javaPackageName ;
1879 8 : String enumName = info->_javaName ;
1880 8 : String enumHelperName = info->_javaHelperName ;
1881 :
1882 8 : if (pkgName != "")
1883 : {
1884 8 : str.Tab() << "package " << pkgName << " ;" << endl << endl ;
1885 : }
1886 :
1887 : // abstract public class <enum_helper>
1888 :
1889 8 : str.Tab() << "abstract public class " << enumHelperName << endl ;
1890 8 : str.BeginBloc() ;
1891 :
1892 : // public static void insert(
1893 : // org.omg.CORBA.Any a,
1894 : // <enum_name> t)
1895 : // {
1896 : // -- Implementation is ORB Specific --
1897 : // }
1898 :
1899 8 : str.Tab() << "public static void insert(" << endl ;
1900 8 : str.IncTab() ;
1901 8 : str.Tab() << "org.omg.CORBA.Any a," << endl ;
1902 8 : str.Tab() << enumName << " t)" << endl ;
1903 8 : str.DecTab() ;
1904 8 : str.BeginBloc() ;
1905 8 : str.Tab() << "// FIXME" << endl ;
1906 8 : str.Tab() << "throw new org.omg.CORBA.NO_IMPLEMENT() ;" << endl ;
1907 8 : str.EndBloc() ;
1908 8 : str.Endl() ;
1909 :
1910 : // public static <enum_name> extract(org.omg.CORBA.Any a)
1911 : // {
1912 : // -- Implementation is ORB Specific --
1913 : // }
1914 :
1915 8 : str.Tab() << "public static " << enumName << " extract(org.omg.CORBA.Any a)" << endl ;
1916 8 : str.BeginBloc() ;
1917 8 : str.Tab() << "// FIXME" << endl ;
1918 8 : str.Tab() << "throw new org.omg.CORBA.NO_IMPLEMENT() ;" << endl ;
1919 8 : str.EndBloc() ;
1920 8 : str.Endl() ;
1921 :
1922 : // public static org.omg.CORBA.TypeCode type()
1923 : // {
1924 : // -- Implementation is ORB Specific --
1925 : // }
1926 :
1927 8 : str.Tab() << "public static org.omg.CORBA.TypeCode type()" << endl ;
1928 8 : str.BeginBloc() ;
1929 8 : str.Tab() << "// FIXME" << endl ;
1930 8 : str.Tab() << "throw new org.omg.CORBA.NO_IMPLEMENT() ;" << endl ;
1931 8 : str.EndBloc() ;
1932 8 : str.Endl() ;
1933 :
1934 : // public static String id()
1935 : // {
1936 : // -- Implementation is ORB Specific --
1937 : // }
1938 :
1939 8 : str.Tab() << "public static String id()" << endl ;
1940 8 : str.BeginBloc() ;
1941 8 : str.Tab() << "// FIXME" << endl ;
1942 8 : str.Tab() << "throw new org.omg.CORBA.NO_IMPLEMENT() ;" << endl ;
1943 8 : str.EndBloc() ;
1944 8 : str.Endl() ;
1945 :
1946 : // public static <enum_name> read(
1947 : // org.omg.CORBA.portable.InputStream is)
1948 : // {
1949 : // -- Implementation is ORB Specific --
1950 : // }
1951 :
1952 8 : str.Tab() << "public static " << enumName << " read(" << endl ;
1953 8 : str.IncTab() ;
1954 8 : str.Tab() << "org.omg.CORBA.portable.InputStream is)" << endl ;
1955 8 : str.DecTab() ;
1956 8 : str.BeginBloc() ;
1957 8 : str.Tab() << "// FIXME" << endl ;
1958 8 : str.Tab() << "throw new org.omg.CORBA.NO_IMPLEMENT() ;" << endl ;
1959 8 : str.EndBloc() ;
1960 8 : str.Endl() ;
1961 :
1962 : // public static void write(
1963 : // org.omg.CORBA.portable.OutputStream os,
1964 : // <enum_name> val)
1965 : // {
1966 : // -- Implementation is ORB Specific --
1967 : // }
1968 :
1969 8 : str.Tab() << "public static void write(" << endl ;
1970 8 : str.IncTab() ;
1971 8 : str.Tab() << "org.omg.CORBA.portable.OutputStream os," << endl ;
1972 8 : str.Tab() << enumName << " val)" << endl ;
1973 8 : str.DecTab() ;
1974 8 : str.BeginBloc() ;
1975 8 : str.Tab() << "// FIXME" << endl ;
1976 8 : str.Tab() << "throw new org.omg.CORBA.NO_IMPLEMENT() ;" << endl ;
1977 8 : str.EndBloc() ;
1978 :
1979 8 : str.EndBloc() ;
1980 8 : str.close() ;
1981 : }
1982 :
1983 : void LangJava::GenerateEnumHolder(
1984 8 : Enum *enum_symbol)
1985 : {
1986 : //-------------------------------------------------------------------------
1987 : // REFERENCE : OMG 02-08-05.pdf, section 1.7, page 1-17
1988 : //-------------------------------------------------------------------------
1989 :
1990 8 : JavaInfo *info = GetJavaInfo(enum_symbol) ;
1991 :
1992 8 : String dirName = _outputDirName ;
1993 8 : String fileName = info->_fileFullHolderName ;
1994 :
1995 8 : CodePrinter str ;
1996 :
1997 8 : str.open(dirName, fileName) ;
1998 :
1999 8 : str.PrintText(g_header) ;
2000 :
2001 8 : String pkgName = info->_javaPackageName ;
2002 8 : String enumName = info->_javaName ;
2003 8 : String enumHolderName = info->_javaHolderName ;
2004 :
2005 8 : if (pkgName != "")
2006 : {
2007 8 : str.Tab() << "package " << pkgName << " ;" << endl << endl ;
2008 : }
2009 :
2010 : // final public class <enum_holder>
2011 : // implements org.omg.CORBA.portable.Streamable
2012 :
2013 8 : str.Tab() << "final public class " << enumHolderName << endl ;
2014 8 : str.IncTab() ;
2015 8 : str.Tab() << "implements org.omg.CORBA.portable.Streamable" << endl ;
2016 8 : str.DecTab() ;
2017 8 : str.BeginBloc() ;
2018 :
2019 : // public <enum_name> value ;
2020 :
2021 8 : str.Tab() << "public " << enumName << " value ;" << endl ;
2022 :
2023 : // public <enum_holder>()
2024 : // {
2025 : // }
2026 :
2027 8 : str.Tab() << "public " << enumHolderName << "()" << endl ;
2028 8 : str.BeginBloc() ;
2029 8 : str.EndBloc() ;
2030 8 : str.Endl() ;
2031 :
2032 : // public <enum_holder>(<enum_name> initial)
2033 : // {
2034 : // -- Implementation is ORB Specific --
2035 : // }
2036 :
2037 : str.Tab() << "public " << enumHolderName << "("
2038 8 : << enumName << " initial)" << endl ;
2039 8 : str.BeginBloc() ;
2040 8 : str.Tab() << "// FIXME" << endl ;
2041 8 : str.Tab() << "throw new org.omg.CORBA.NO_IMPLEMENT() ;" << endl ;
2042 8 : str.EndBloc() ;
2043 8 : str.Endl() ;
2044 :
2045 : // public void _read(
2046 : // org.omg.CORBA.portable.InputStream is)
2047 : // {
2048 : // -- Implementation is ORB Specific --
2049 : // }
2050 :
2051 8 : str.Tab() << "public void _read(" << endl ;
2052 8 : str.IncTab() ;
2053 8 : str.Tab() << "org.omg.CORBA.portable.InputStream is)" << endl ;
2054 8 : str.DecTab() ;
2055 8 : str.BeginBloc() ;
2056 8 : str.Tab() << "// FIXME" << endl ;
2057 8 : str.Tab() << "throw new org.omg.CORBA.NO_IMPLEMENT() ;" << endl ;
2058 8 : str.EndBloc() ;
2059 8 : str.Endl() ;
2060 :
2061 : // public void _write(
2062 : // org.omg.CORBA.portable.OutputStream os)
2063 : // {
2064 : // -- Implementation is ORB Specific --
2065 : // }
2066 :
2067 8 : str.Tab() << "public void _write(" << endl ;
2068 8 : str.IncTab() ;
2069 8 : str.Tab() << "org.omg.CORBA.portable.OutputStream os)" << endl ;
2070 8 : str.DecTab() ;
2071 8 : str.BeginBloc() ;
2072 8 : str.Tab() << "// FIXME" << endl ;
2073 8 : str.Tab() << "throw new org.omg.CORBA.NO_IMPLEMENT() ;" << endl ;
2074 8 : str.EndBloc() ;
2075 8 : str.Endl() ;
2076 :
2077 : // public org.omg.CORBA.TypeCode _type()
2078 : // {
2079 : // -- Implementation is ORB Specific --
2080 : // }
2081 :
2082 8 : str.Tab() << "public org.omg.CORBA.TypeCode _type()" << endl ;
2083 8 : str.BeginBloc() ;
2084 8 : str.Tab() << "// FIXME" << endl ;
2085 8 : str.Tab() << "throw new org.omg.CORBA.NO_IMPLEMENT() ;" << endl ;
2086 8 : str.EndBloc() ;
2087 :
2088 8 : str.EndBloc() ;
2089 8 : str.close() ;
2090 : }
2091 :
2092 : void LangJava::PrintType(
2093 : CodePrinter & str,
2094 : IDLType *type,
2095 22 : javaPrintMode mode)
2096 : {
2097 22 : switch (type->isA())
2098 : {
2099 : case idl_errorType :
2100 : {
2101 0 : str.Endl() ;
2102 0 : str.Str() << "#error IDL->Java generation failed due to previous errors." ;
2103 0 : str.Endl() ;
2104 : break ;
2105 : }
2106 : case idl_intType :
2107 : {
2108 : IDLIntType *t = (IDLIntType*) type ;
2109 7 : PrintIntType(str, t, mode) ;
2110 : break ;
2111 : }
2112 : case idl_floatType :
2113 : {
2114 : IDLFloatType *t = (IDLFloatType*) type ;
2115 0 : PrintFloatType(str, t, mode) ;
2116 : break ;
2117 : }
2118 : case idl_charType :
2119 : {
2120 0 : PrintCharType(str, mode) ;
2121 : break ;
2122 : }
2123 : case idl_wcharType :
2124 : {
2125 0 : PrintWCharType(str, mode) ;
2126 : break ;
2127 : }
2128 : case idl_boolType :
2129 : {
2130 0 : PrintBoolType(str, mode) ;
2131 : break ;
2132 : }
2133 : case idl_struct :
2134 : {
2135 : IDLStructType *t = (IDLStructType*) type ;
2136 0 : PrintStructType(str, t, mode) ;
2137 : break ;
2138 : }
2139 : case idl_enum :
2140 : {
2141 : IDLEnumType *t = (IDLEnumType*) type ;
2142 2 : PrintEnumType(str, t, mode) ;
2143 : break ;
2144 : }
2145 : case idl_typedef :
2146 : {
2147 : IDLTypedefType *t = (IDLTypedefType*) type ;
2148 6 : PrintTypedefType(str, t, mode) ;
2149 : break ;
2150 : }
2151 : case idl_array :
2152 : {
2153 0 : str.Str() << "FIXME idl_array" ;
2154 : break ;
2155 : }
2156 : case idl_sequence :
2157 : {
2158 : IDLSequenceType *t = (IDLSequenceType*) type ;
2159 0 : PrintSequenceType(str, t, mode) ;
2160 : break ;
2161 : }
2162 : case idl_string :
2163 : {
2164 4 : PrintStringType(str, mode) ;
2165 : break ;
2166 : }
2167 : case idl_wstring :
2168 : {
2169 0 : PrintWStringType(str, mode) ;
2170 : break ;
2171 : }
2172 : case idl_any :
2173 : {
2174 0 : PrintAnyType(str, mode) ;
2175 : break ;
2176 : }
2177 : case idl_object :
2178 : {
2179 3 : PrintObjectType(str, mode) ;
2180 : break ;
2181 : }
2182 : case idl_octet :
2183 : {
2184 0 : PrintOctetType(str, mode) ;
2185 : break ;
2186 : }
2187 : case idl_interface :
2188 : {
2189 : IDLInterfaceType *i = (IDLInterfaceType*) type ;
2190 0 : PrintInterfaceType(str, i, mode) ;
2191 : break ;
2192 : }
2193 : case idl_void :
2194 : {
2195 : ASSERT(mode == JAVA_PRINT_RETURN) ;
2196 0 : str.Str() << "void" ;
2197 : break ;
2198 : }
2199 : case idl_native :
2200 : {
2201 : IDLNativeType *t = (IDLNativeType*) type ;
2202 0 : PrintNativeType(str, t, mode) ;
2203 : break ;
2204 : }
2205 : }
2206 : }
2207 :
2208 : void LangJava::PrintCDR(
2209 : const String& dataName,
2210 : IDLType *type,
2211 : const String& cdrName,
2212 : bool isConst,
2213 : bool isPointer,
2214 0 : ostream& str)
2215 : {
2216 0 : switch (type->isA())
2217 : {
2218 : case idl_errorType :
2219 : {
2220 : str << endl ;
2221 0 : str << "#error IDL->C++ generation failed due to previous errors." ;
2222 : str << endl ;
2223 : break ;
2224 : }
2225 : case idl_intType :
2226 : {
2227 : IDLIntType *t = (IDLIntType*) type ;
2228 : PrintCDRInt(
2229 : dataName,
2230 : t,
2231 : cdrName,
2232 : isConst,
2233 : isPointer,
2234 0 : str) ;
2235 : break ;
2236 : }
2237 : case idl_floatType :
2238 : {
2239 0 : str << "FIXME idl_floatType" ;
2240 : break ;
2241 : }
2242 : case idl_charType :
2243 : {
2244 : PrintCDRChar(
2245 : dataName,
2246 : cdrName,
2247 : isConst,
2248 : isPointer,
2249 0 : str) ;
2250 : break ;
2251 : }
2252 : case idl_wcharType :
2253 : {
2254 : PrintCDRWChar(
2255 : dataName,
2256 : cdrName,
2257 : isConst,
2258 : isPointer,
2259 0 : str) ;
2260 : break ;
2261 : }
2262 : case idl_boolType :
2263 : {
2264 : PrintCDRBool(
2265 : dataName,
2266 : cdrName,
2267 : isConst,
2268 : isPointer,
2269 0 : str) ;
2270 : break ;
2271 : }
2272 : case idl_struct :
2273 : {
2274 : IDLStructType *t = (IDLStructType*) type ;
2275 : PrintCDRStruct(
2276 : dataName,
2277 : t,
2278 : cdrName,
2279 : isConst,
2280 : isPointer,
2281 0 : str) ;
2282 : break ;
2283 : }
2284 : case idl_enum :
2285 : {
2286 : IDLEnumType *t = (IDLEnumType*) type ;
2287 : PrintCDREnum(
2288 : dataName,
2289 : t,
2290 : cdrName,
2291 : isConst,
2292 : isPointer,
2293 0 : str) ;
2294 : break ;
2295 : }
2296 : case idl_typedef :
2297 : {
2298 : IDLTypedefType *t = (IDLTypedefType*) type ;
2299 : PrintCDRTypedef(
2300 : dataName,
2301 : t,
2302 : cdrName,
2303 : isConst,
2304 : isPointer,
2305 0 : str) ;
2306 : break ;
2307 : }
2308 : case idl_array :
2309 : {
2310 0 : str << "FIXME idl_array" ;
2311 : break ;
2312 : }
2313 : case idl_sequence :
2314 : {
2315 : IDLSequenceType *t = (IDLSequenceType*) type ;
2316 : PrintCDRSequence(
2317 : dataName,
2318 : t,
2319 : cdrName,
2320 : isConst,
2321 : isPointer,
2322 0 : str) ;
2323 : break ;
2324 : }
2325 : case idl_string :
2326 : {
2327 : PrintCDRString(
2328 : dataName,
2329 : cdrName,
2330 : isConst,
2331 : isPointer,
2332 0 : str) ;
2333 : break ;
2334 : }
2335 : case idl_wstring :
2336 : {
2337 : PrintCDRWString(
2338 : dataName,
2339 : cdrName,
2340 : isConst,
2341 : isPointer,
2342 0 : str) ;
2343 : break ;
2344 : }
2345 : case idl_any :
2346 : {
2347 : PrintCDRAny(
2348 : dataName,
2349 : cdrName,
2350 : isConst,
2351 : isPointer,
2352 0 : str) ;
2353 : break ;
2354 : }
2355 : case idl_octet :
2356 : {
2357 : PrintCDROctet(
2358 : dataName,
2359 : cdrName,
2360 : isConst,
2361 : isPointer,
2362 0 : str) ;
2363 : break ;
2364 : }
2365 : case idl_interface :
2366 : {
2367 : IDLInterfaceType *t = (IDLInterfaceType*) type ;
2368 : PrintCDRInterface(
2369 : dataName,
2370 : t,
2371 : cdrName,
2372 : isConst,
2373 : isPointer,
2374 0 : str) ;
2375 : break ;
2376 : }
2377 : case idl_object :
2378 : {
2379 : PrintCDRObject(
2380 : dataName,
2381 : cdrName,
2382 : isConst,
2383 : isPointer,
2384 0 : str) ;
2385 : break ;
2386 : }
2387 : case idl_void :
2388 : {
2389 0 : str << "FIXME idl_void" ;
2390 : break ;
2391 : }
2392 : case idl_native :
2393 : {
2394 0 : str << "FIXME idl_native" ;
2395 : break ;
2396 : }
2397 : }
2398 : }
2399 :
2400 : void LangJava::PrintCDRInt(
2401 : const String& dataName,
2402 : IDLIntType *type,
2403 : const String& cdrName,
2404 : bool isConst,
2405 : bool isPointer,
2406 0 : ostream& str)
2407 : {
2408 0 : str << cdrName << "->" ;
2409 :
2410 0 : switch(type->GetType())
2411 : {
2412 : case idl_signed_short :
2413 : {
2414 0 : str << "cdr_Short" ;
2415 0 : break ;
2416 : }
2417 : case idl_signed_long :
2418 : {
2419 0 : str << "cdr_Long" ;
2420 0 : break ;
2421 : }
2422 : case idl_signed_long_long :
2423 : {
2424 0 : str << "cdr_LongLong" ;
2425 0 : break ;
2426 : }
2427 : case idl_unsigned_short :
2428 : {
2429 0 : str << "cdr_UShort" ;
2430 0 : break ;
2431 : }
2432 : case idl_unsigned_long :
2433 : {
2434 0 : str << "cdr_ULong" ;
2435 0 : break ;
2436 : }
2437 : case idl_unsigned_long_long :
2438 : {
2439 0 : str << "cdr_ULongLong" ;
2440 : break ;
2441 : }
2442 : }
2443 :
2444 : ASSERT(isConst == false) ;
2445 : ASSERT(isPointer == false) ;
2446 0 : str << "(& " << dataName << ") ;" << endl ;
2447 : }
2448 :
2449 : void LangJava::PrintCDRBool(
2450 : const String& dataName,
2451 : const String& cdrName,
2452 : bool isConst,
2453 : bool isPointer,
2454 0 : ostream& str)
2455 : {
2456 0 : str << cdrName << "->cdr_Boolean(" ;
2457 :
2458 0 : if (isConst)
2459 : {
2460 0 : str << "(CORBA::Boolean*)" ;
2461 : }
2462 :
2463 0 : if ( ! isPointer)
2464 : {
2465 0 : str << " & " ;
2466 : }
2467 :
2468 0 : str << dataName << ") ;" << endl ;
2469 : }
2470 :
2471 : void LangJava::PrintCDRChar(
2472 : const String& dataName,
2473 : const String& cdrName,
2474 : bool isConst,
2475 : bool isPointer,
2476 0 : ostream& str)
2477 : {
2478 0 : str << cdrName << "->cdr_Char(" ;
2479 :
2480 0 : if (isConst)
2481 : {
2482 0 : str << "(CORBA::Char*)" ;
2483 : }
2484 :
2485 0 : if ( ! isPointer)
2486 : {
2487 0 : str << " & " ;
2488 : }
2489 :
2490 0 : str << dataName << ") ;" << endl ;
2491 : }
2492 :
2493 : void LangJava::PrintCDRWChar(
2494 : const String& dataName,
2495 : const String& cdrName,
2496 : bool isConst,
2497 : bool isPointer,
2498 0 : ostream& str)
2499 : {
2500 0 : str << cdrName << "->cdr_WChar(" ;
2501 :
2502 0 : if (isConst)
2503 : {
2504 0 : str << "(CORBA::WChar*)" ;
2505 : }
2506 :
2507 0 : if ( ! isPointer)
2508 : {
2509 0 : str << " & " ;
2510 : }
2511 :
2512 0 : str << dataName << ") ;" << endl ;
2513 : }
2514 :
2515 : void LangJava::PrintCDRStruct(
2516 : const String& dataName,
2517 : IDLStructType *type,
2518 : const String& cdrName,
2519 : bool isConst,
2520 : bool isPointer,
2521 0 : ostream& str)
2522 : {
2523 0 : Struct *s = type->GetSymbol() ;
2524 0 : JavaInfo *info = GetJavaInfo(s) ;
2525 :
2526 0 : if (isConst == true)
2527 : {
2528 0 : str << "((" << info->_javaFullName ;
2529 :
2530 0 : if (isPointer == true)
2531 : {
2532 0 : str << "*" ;
2533 : }
2534 :
2535 0 : str << ")" << dataName << ")" ;
2536 : }
2537 : else
2538 : {
2539 0 : str << dataName ;
2540 : }
2541 :
2542 :
2543 0 : if (isPointer == true)
2544 : {
2545 0 : str << "->cdr(" << cdrName << ") ;" << endl ;
2546 : }
2547 : else
2548 : {
2549 0 : str << ".cdr(" << cdrName << ") ;" << endl ;
2550 : }
2551 :
2552 : return ;
2553 : }
2554 :
2555 : void LangJava::PrintCDREnum(
2556 : const String& dataName,
2557 : IDLEnumType *type,
2558 : const String& cdrName,
2559 : bool isConst,
2560 : bool isPointer,
2561 0 : ostream& str)
2562 : {
2563 0 : Enum *e = type->GetSymbol() ;
2564 0 : JavaInfo *info = GetJavaInfo(e) ;
2565 0 : const String& prefix = Prefix(info->_javaFullName) ;
2566 :
2567 0 : str << prefix << "::CDR_" << info->_javaName ;
2568 0 : str << "(" << cdrName << ", & " << dataName << ") ;" << endl ;
2569 :
2570 0 : return ;
2571 : }
2572 :
2573 : void LangJava::PrintCDRTypedef(
2574 : const String& dataName,
2575 : IDLTypedefType *type,
2576 : const String& cdrName,
2577 : bool isConst,
2578 : bool isPointer,
2579 0 : ostream& str)
2580 : {
2581 0 : Typedef *symbol = type->GetSymbol() ;
2582 0 : IDLType* t = symbol->GetType() ;
2583 :
2584 0 : PrintCDR(dataName, t, cdrName, isConst, isPointer, str) ;
2585 : }
2586 :
2587 : void LangJava::PrintCDRSequence(
2588 : const String& dataName,
2589 : IDLSequenceType *type,
2590 : const String& cdrName,
2591 : bool isConst,
2592 : bool isPointer,
2593 0 : ostream& str)
2594 : {
2595 : char *call ;
2596 :
2597 0 : if (isPointer)
2598 : {
2599 : call = "->" ;
2600 : }
2601 : else
2602 : {
2603 : call = "." ;
2604 : }
2605 :
2606 0 : str << dataName << call << "cdr(" << cdrName << ") ;" << endl ;
2607 : }
2608 :
2609 : void LangJava::PrintCDRString(
2610 : const String& dataName,
2611 : const String& cdrName,
2612 : bool isConst,
2613 : bool isPointer,
2614 0 : ostream& str)
2615 : {
2616 : char *call ;
2617 :
2618 0 : if (isPointer)
2619 : {
2620 : call = "->" ;
2621 : }
2622 : else
2623 : {
2624 : call = "." ;
2625 : }
2626 :
2627 0 : str << dataName << call << "cdr(" << cdrName << ") ;" << endl ;
2628 : }
2629 :
2630 : void LangJava::PrintCDRWString(
2631 : const String& dataName,
2632 : const String& cdrName,
2633 : bool isConst,
2634 : bool isPointer,
2635 0 : ostream& str)
2636 : {
2637 : char *call ;
2638 :
2639 0 : if (isPointer)
2640 : {
2641 : call = "->" ;
2642 : }
2643 : else
2644 : {
2645 : call = "." ;
2646 : }
2647 :
2648 0 : str << dataName << call << "cdr(" << cdrName << ") ;" << endl ;
2649 : }
2650 :
2651 : void LangJava::PrintCDRAny(
2652 : const String& dataName,
2653 : const String& cdrName,
2654 : bool isConst,
2655 : bool isPointer,
2656 0 : ostream& str)
2657 : {
2658 0 : str << "// FIXME CDR" << endl ;
2659 : }
2660 :
2661 : void LangJava::PrintCDROctet(
2662 : const String& dataName,
2663 : const String& cdrName,
2664 : bool isConst,
2665 : bool isPointer,
2666 0 : ostream& str)
2667 : {
2668 0 : str << cdrName << "->cdr_Octet(" ;
2669 :
2670 0 : if (isConst)
2671 : {
2672 0 : str << "(CORBA::Octet*) " ;
2673 : }
2674 :
2675 0 : if ( ! isPointer)
2676 : {
2677 0 : str << "& " ;
2678 : }
2679 :
2680 0 : str << dataName << ") ;" << endl ;
2681 : }
2682 :
2683 : void LangJava::PrintCDRInterface(
2684 : const String& dataName,
2685 : IDLInterfaceType *type,
2686 : const String& cdrName,
2687 : bool isConst,
2688 : bool isPointer,
2689 0 : ostream& str)
2690 : {
2691 0 : str << "NON_DEV(\"LangJava::PrintCDRInterface\") ;" << endl ;
2692 :
2693 0 : Interface *i = type->GetSymbol() ;
2694 0 : JavaInfo *info = GetJavaInfo(i) ;
2695 :
2696 0 : str << dataName << " = " << info->_javaFullName << "::_nil() ;" << endl ;
2697 :
2698 : #ifdef LATER
2699 : // Brain damaged : get rid of "encode"
2700 : if (encode)
2701 : {
2702 : str << dataName << "->cdr(" << cdrName << ") ;"
2703 : << endl ;
2704 : }
2705 : else
2706 : {
2707 : Interface *i = type->GetSymbol() ;
2708 : JavaInfo *info = GetJavaInfo(i) ;
2709 :
2710 : str << dataName << " = " << info->_javaFullName ;
2711 : str << "::_bind(" << cdrName << ") ;" << endl ;
2712 : }
2713 : #endif
2714 : }
2715 :
2716 : void LangJava::PrintCDRObject(
2717 : const String& dataName,
2718 : const String& cdrName,
2719 : bool isConst,
2720 : bool isPointer,
2721 0 : ostream& str)
2722 : {
2723 0 : str << "NON_DEV(\"LangJava::PrintCDRObject\") ;" << endl ;
2724 :
2725 0 : if (isConst == false)
2726 : {
2727 0 : str << dataName << " = CORBA::Object::_nil() ;" << endl ;
2728 : }
2729 :
2730 : #ifdef LATER
2731 : // Brain damaged :
2732 : if (encode)
2733 : {
2734 : str << dataName << "->cdr(" << cdrName << ") ;" << endl ;
2735 : }
2736 : else
2737 : {
2738 : str << dataName << " = CORBA::Object::_bind(" << cdrName << ") ;" << endl ;
2739 : }
2740 : #endif
2741 : }
2742 :
2743 : void LangJava::PrintNativeType(
2744 : CodePrinter & str,
2745 : IDLNativeType *type,
2746 0 : javaPrintMode mode)
2747 : {
2748 0 : SymNative *symbol = type->GetSymbol() ;
2749 0 : const String& name = symbol->GetFullyQualifiedName() ;
2750 :
2751 0 : if (name == "PortableServer::ServantLocator::Cookie")
2752 : {
2753 0 : switch(mode)
2754 : {
2755 : case JAVA_PRINT_NORMAL :
2756 : case JAVA_PRINT_IN :
2757 : case JAVA_PRINT_RETURN :
2758 : {
2759 0 : str.Str() << "void*" ;
2760 : break ;
2761 : }
2762 : case JAVA_PRINT_OUT :
2763 : case JAVA_PRINT_INOUT :
2764 : {
2765 0 : str.Str() << "void*&" ;
2766 : break ;
2767 : }
2768 : case JAVA_PRINT_PTR :
2769 : case JAVA_PRINT_VAR :
2770 : {
2771 0 : str.Str() << endl ;
2772 0 : str.Str() << "#error Unsupported native Cookie usage." << endl ;
2773 : break ;
2774 : }
2775 : }
2776 : return ;
2777 : }
2778 :
2779 : // Default Native mapping, also used for "PortableServer::Servant"
2780 :
2781 0 : switch(mode)
2782 : {
2783 : case JAVA_PRINT_NORMAL :
2784 : case JAVA_PRINT_RETURN :
2785 : {
2786 0 : str.Str() << name;
2787 : break ;
2788 : }
2789 : case JAVA_PRINT_IN :
2790 : {
2791 0 : str.Str() << "const " << name << "&" ;
2792 : break ;
2793 : }
2794 : case JAVA_PRINT_OUT :
2795 : {
2796 0 : str.Str() << name << "&" ;
2797 : break ;
2798 : }
2799 : case JAVA_PRINT_INOUT :
2800 : {
2801 0 : str.Str() << name << "*&" ;
2802 : break ;
2803 : }
2804 : case JAVA_PRINT_PTR :
2805 : {
2806 0 : str.Str() << name << "_ptr" ;
2807 : break ;
2808 : }
2809 : case JAVA_PRINT_VAR :
2810 : {
2811 0 : str.Str() << name << "_var" ;
2812 : break ;
2813 : }
2814 : }
2815 : }
2816 :
2817 : void LangJava::PrintIntType(
2818 : CodePrinter & str,
2819 : IDLIntType *type,
2820 7 : javaPrintMode mode)
2821 : {
2822 : const char* name = NULL ;
2823 : const char* holderName = NULL ;
2824 :
2825 7 : switch(type->GetType())
2826 : {
2827 : case idl_signed_short :
2828 : case idl_unsigned_short :
2829 : {
2830 : name = "short" ;
2831 : holderName = "org.omg.CORBA.ShortHolder" ;
2832 0 : break ;
2833 : }
2834 : case idl_signed_long :
2835 : case idl_unsigned_long :
2836 : {
2837 : name = "int" ;
2838 : holderName = "org.omg.CORBA.IntHolder" ;
2839 : break ;
2840 : }
2841 : case idl_signed_long_long :
2842 : case idl_unsigned_long_long :
2843 : {
2844 : name = "long" ;
2845 : holderName = "org.omg.CORBA.LongHolder" ;
2846 : break ;
2847 : }
2848 : }
2849 :
2850 7 : switch (mode)
2851 : {
2852 : case JAVA_PRINT_VAR:
2853 : case JAVA_PRINT_NORMAL:
2854 : case JAVA_PRINT_IN:
2855 : case JAVA_PRINT_RETURN:
2856 : {
2857 7 : str.Str() << name ;
2858 : break ;
2859 : }
2860 : case JAVA_PRINT_OUT:
2861 : case JAVA_PRINT_INOUT:
2862 : {
2863 0 : str.Str() << holderName ;
2864 : break ;
2865 : }
2866 : case JAVA_PRINT_PTR:
2867 : {
2868 : ASSERT(false) ;
2869 : }
2870 : }
2871 : }
2872 :
2873 : void LangJava::PrintFloatType(
2874 : CodePrinter & str,
2875 : IDLFloatType *type,
2876 0 : javaPrintMode mode)
2877 : {
2878 : const char* name = NULL ;
2879 : const char* holderName = NULL ;
2880 :
2881 0 : switch(type->GetType())
2882 : {
2883 : case idl_float :
2884 : {
2885 : name = "float" ;
2886 : holderName = "org.omg.CORBA.FloatHolder" ;
2887 0 : break ;
2888 : }
2889 : case idl_double :
2890 : {
2891 : name = "double" ;
2892 : holderName = "org.omg.CORBA.DoubleHolder" ;
2893 : break ;
2894 : }
2895 : case idl_long_double :
2896 : {
2897 0 : str.Endl() ;
2898 0 : str.Str() << "#error IDL long double not supported in Java" << endl ;
2899 : name = "double" ;
2900 : holderName = "org.omg.CORBA.DoubleHolder" ;
2901 : break ;
2902 : }
2903 : }
2904 :
2905 0 : switch (mode)
2906 : {
2907 : case JAVA_PRINT_VAR:
2908 : case JAVA_PRINT_NORMAL:
2909 : case JAVA_PRINT_IN:
2910 : case JAVA_PRINT_RETURN:
2911 : {
2912 0 : str.Str() << name ;
2913 : break ;
2914 : }
2915 : case JAVA_PRINT_OUT:
2916 : case JAVA_PRINT_INOUT:
2917 : {
2918 0 : str.Str() << holderName ;
2919 : break ;
2920 : }
2921 : case JAVA_PRINT_PTR:
2922 : {
2923 : ASSERT(false) ;
2924 : }
2925 : }
2926 : }
2927 :
2928 : void LangJava::PrintStringType(
2929 : CodePrinter & str,
2930 4 : javaPrintMode mode)
2931 : {
2932 4 : switch (mode)
2933 : {
2934 : case JAVA_PRINT_NORMAL :
2935 : case JAVA_PRINT_RETURN :
2936 : case JAVA_PRINT_IN :
2937 : {
2938 4 : str.Str() << "java.lang.String" ;
2939 : break ;
2940 : }
2941 : case JAVA_PRINT_OUT :
2942 : case JAVA_PRINT_INOUT :
2943 : {
2944 0 : str.Str() << "org.omg.CORBA.StringHolder" ;
2945 : break ;
2946 : }
2947 : case JAVA_PRINT_VAR :
2948 : {
2949 0 : str.Str() << "CORBA::String_var" ;
2950 : break ;
2951 : }
2952 : case JAVA_PRINT_PTR :
2953 : {
2954 0 : str.Str() << "CORBA::String_ptr" ;
2955 : break ;
2956 : }
2957 : }
2958 : }
2959 :
2960 : void LangJava::PrintWStringType(
2961 : CodePrinter & str,
2962 0 : javaPrintMode mode)
2963 : {
2964 0 : PrintStringType(str, mode) ;
2965 : }
2966 :
2967 : void LangJava::PrintEnumType(
2968 : CodePrinter & str,
2969 : IDLEnumType* type,
2970 2 : javaPrintMode mode)
2971 : {
2972 2 : Enum* e = type->GetSymbol() ;
2973 2 : JavaInfo *info = GetJavaInfo(e) ;
2974 :
2975 2 : str.Str() << info->_javaFullName ;
2976 :
2977 2 : if ( (mode == JAVA_PRINT_OUT)
2978 : || (mode == JAVA_PRINT_INOUT))
2979 : {
2980 0 : str.Str() << "&" ;
2981 : }
2982 : }
2983 :
2984 : void LangJava::PrintTypedefType(
2985 : CodePrinter & str,
2986 : IDLTypedefType* type,
2987 6 : javaPrintMode mode)
2988 : {
2989 6 : Typedef *symbol = type->GetSymbol() ;
2990 6 : JavaInfo *info = GetJavaInfo(symbol) ;
2991 :
2992 6 : IDLType* t = symbol->GetType() ;
2993 :
2994 6 : if (t->isA() == idl_sequence)
2995 : {
2996 : // For IDL sequence, the typedef name is the C++ type.
2997 2 : switch (mode)
2998 : {
2999 : case JAVA_PRINT_NORMAL :
3000 : {
3001 2 : str.Str() << info->_javaFullName ;
3002 : break ;
3003 : }
3004 : case JAVA_PRINT_IN :
3005 : {
3006 0 : str.Str() << "const " << info->_javaFullName << "&" ;
3007 : break ;
3008 : }
3009 : case JAVA_PRINT_OUT :
3010 : {
3011 0 : str.Str() << info->_javaFullName << "*&" ;
3012 : break ;
3013 : }
3014 : case JAVA_PRINT_INOUT :
3015 : {
3016 0 : str.Str() << info->_javaFullName << "&" ;
3017 : break ;
3018 : }
3019 : case JAVA_PRINT_RETURN :
3020 : {
3021 0 : str.Str() << info->_javaFullName << "*" ;
3022 : break ;
3023 : }
3024 : case JAVA_PRINT_PTR :
3025 : {
3026 0 : str.Str() << info->_javaFullName << "_ptr" ;
3027 : break ;
3028 : }
3029 : case JAVA_PRINT_VAR :
3030 : {
3031 0 : str.Str() << info->_javaFullName << "_var" ;
3032 : break ;
3033 : }
3034 : }
3035 : }
3036 : else
3037 : {
3038 : // For other IDL types, the C++ type resolves to the aliased type.
3039 4 : PrintType(str, t, mode) ;
3040 : }
3041 : }
3042 :
3043 : void LangJava::PrintSequenceType(
3044 : CodePrinter & str,
3045 : IDLSequenceType* type,
3046 0 : javaPrintMode mode)
3047 : {
3048 0 : IDLType *elem = type->GetType() ;
3049 0 : bool bounded = type->IsBounded() ;
3050 :
3051 : const char* name = NULL ;
3052 : const char* bname = NULL ;
3053 :
3054 : // Primitive types have dedicated sequences.
3055 :
3056 0 : switch (elem->isA())
3057 : {
3058 : case idl_boolType:
3059 : {
3060 : name = "CORBABooleanSeq" ;
3061 : bname = "CORBABooleanBSeq" ;
3062 0 : break ;
3063 : }
3064 : case idl_charType:
3065 : {
3066 : name = "CORBACharSeq" ;
3067 : bname = "CORBACharBSeq" ;
3068 0 : break ;
3069 : }
3070 : case idl_wcharType:
3071 : {
3072 : name = "CORBAWCharSeq" ;
3073 : bname = "CORBAWCharBSeq" ;
3074 0 : break ;
3075 : }
3076 : case idl_intType:
3077 : {
3078 : IDLIntType *elem2 = (IDLIntType*) elem ;
3079 :
3080 0 : switch(elem2->GetType())
3081 : {
3082 : case idl_signed_short:
3083 : {
3084 : name = "CORBAShortSeq" ;
3085 : bname = "CORBAShortBSeq" ;
3086 0 : break ;
3087 : }
3088 : case idl_signed_long:
3089 : {
3090 : name = "CORBALongSeq" ;
3091 : bname = "CORBALongBSeq" ;
3092 0 : break ;
3093 : }
3094 : case idl_signed_long_long:
3095 : {
3096 : name = "CORBALongLongSeq" ;
3097 : bname = "CORBALongLongBSeq" ;
3098 0 : break ;
3099 : }
3100 : case idl_unsigned_short:
3101 : {
3102 : name = "CORBAUShortSeq" ;
3103 : bname = "CORBAUShortBSeq" ;
3104 0 : break ;
3105 : }
3106 : case idl_unsigned_long:
3107 : {
3108 : name = "CORBAULongSeq" ;
3109 : bname = "CORBAULongBSeq" ;
3110 0 : break ;
3111 : }
3112 : case idl_unsigned_long_long:
3113 : {
3114 : name = "CORBAULongLongSeq" ;
3115 : bname = "CORBAULongLongBSeq" ;
3116 : break ;
3117 : }
3118 : }
3119 : break ;
3120 : }
3121 : case idl_floatType:
3122 : {
3123 : IDLFloatType *elem2 = (IDLFloatType*) elem ;
3124 :
3125 0 : switch(elem2->GetType())
3126 : {
3127 : case idl_float:
3128 : {
3129 : name = "CORBAFloatSeq" ;
3130 : bname = "CORBAFloatBSeq" ;
3131 0 : break ;
3132 : }
3133 : case idl_double:
3134 : {
3135 : name = "CORBADoubleSeq" ;
3136 : bname = "CORBADoubleBSeq" ;
3137 0 : break ;
3138 : }
3139 : case idl_long_double:
3140 : {
3141 : name = "CORBALongDoubleSeq" ;
3142 : bname = "CORBALongDoubleBSeq" ;
3143 : break ;
3144 : }
3145 : }
3146 : break ;
3147 : }
3148 : case idl_octet:
3149 : {
3150 : name = "CORBAOctetSeq" ;
3151 : bname = "CORBAOctetBSeq" ;
3152 : break ;
3153 : }
3154 : default:
3155 : {
3156 : break ;
3157 : }
3158 : }
3159 :
3160 0 : if (bounded)
3161 : {
3162 0 : if (bname)
3163 : {
3164 0 : NON_DEV("bounded sequences for raw types") ;
3165 : }
3166 : else
3167 : {
3168 0 : str.Str() << "CORBABSequence<" ;
3169 0 : PrintType(str, elem, JAVA_PRINT_VAR) ;
3170 0 : str.Str() << ", " << type->GetMaxSize() << ">" ;
3171 : }
3172 : }
3173 : else
3174 : {
3175 0 : if (name != NULL)
3176 : {
3177 0 : str.Str() << name ;
3178 : }
3179 : else
3180 : {
3181 0 : str.Str() << "CORBASequence<" ;
3182 0 : PrintType(str, elem, JAVA_PRINT_VAR) ;
3183 0 : str.Str() << ">" ;
3184 : }
3185 : }
3186 : }
3187 :
3188 : void LangJava::PrintAnyType(
3189 : CodePrinter & str,
3190 0 : javaPrintMode mode)
3191 : {
3192 0 : switch(mode)
3193 : {
3194 : case JAVA_PRINT_NORMAL:
3195 : {
3196 0 : str.Str() << "CORBA::Any" ;
3197 : break ;
3198 : }
3199 : case JAVA_PRINT_IN:
3200 : {
3201 0 : str.Str() << "const CORBA::Any&" ;
3202 : break ;
3203 : }
3204 : case JAVA_PRINT_OUT:
3205 : {
3206 0 : str.Str() << "CORBA::Any*&" ;
3207 : break ;
3208 : }
3209 : case JAVA_PRINT_INOUT:
3210 : {
3211 0 : str.Str() << "CORBA::Any&";
3212 : break ;
3213 : }
3214 : case JAVA_PRINT_RETURN:
3215 : {
3216 0 : str.Str() << "CORBA::Any*" ;
3217 : break ;
3218 : }
3219 : case JAVA_PRINT_VAR:
3220 : {
3221 0 : str.Str() << "CORBA::Any_var" ;
3222 : break ;
3223 : }
3224 : case JAVA_PRINT_PTR:
3225 : {
3226 0 : str.Str() << "CORBA::Any_ptr" ;
3227 : break ;
3228 : }
3229 : }
3230 : }
3231 :
3232 : void LangJava::PrintObjectType(
3233 : CodePrinter & str,
3234 3 : javaPrintMode mode)
3235 : {
3236 3 : switch(mode)
3237 : {
3238 : case JAVA_PRINT_NORMAL:
3239 : case JAVA_PRINT_IN:
3240 : case JAVA_PRINT_RETURN:
3241 : {
3242 3 : str.Str() << "org.omg.CORBA.Object" ;
3243 : break ;
3244 : }
3245 : case JAVA_PRINT_OUT:
3246 : case JAVA_PRINT_INOUT:
3247 : {
3248 0 : str.Str() << "org.omg.CORBA.ObjectHolder" ;
3249 : break ;
3250 : }
3251 : case JAVA_PRINT_VAR:
3252 : {
3253 0 : str.Str() << "CORBA::Object_var" ;
3254 : break ;
3255 : }
3256 : case JAVA_PRINT_PTR:
3257 : {
3258 0 : str.Str() << "CORBA::Object_ptr" ;
3259 : break ;
3260 : }
3261 : }
3262 : }
3263 :
3264 : void LangJava::PrintOctetType(
3265 : CodePrinter & str,
3266 0 : javaPrintMode mode)
3267 : {
3268 0 : if ( (mode == JAVA_PRINT_OUT)
3269 : || (mode == JAVA_PRINT_INOUT))
3270 : {
3271 0 : str.Str() << "org.omg.CORBA.ByteHolder" ;
3272 : }
3273 : else
3274 : {
3275 0 : str.Str() << "byte" ;
3276 : }
3277 : }
3278 :
3279 : void LangJava::PrintBoolType(
3280 : CodePrinter & str,
3281 0 : javaPrintMode mode)
3282 : {
3283 0 : if ( (mode == JAVA_PRINT_OUT)
3284 : || (mode == JAVA_PRINT_INOUT))
3285 : {
3286 0 : str.Str() << "org.omg.CORBA.BooleanHolder" ;
3287 : }
3288 : else
3289 : {
3290 0 : str.Str() << "boolean" ;
3291 : }
3292 : }
3293 :
3294 : void LangJava::PrintCharType(
3295 : CodePrinter & str,
3296 0 : javaPrintMode mode)
3297 : {
3298 0 : if ( (mode == JAVA_PRINT_OUT)
3299 : || (mode == JAVA_PRINT_INOUT))
3300 : {
3301 0 : str.Str() << "org.omg.CORBA.CharHolder" ;
3302 : }
3303 : else
3304 : {
3305 0 : str.Str() << "char" ;
3306 : }
3307 : }
3308 :
3309 : void LangJava::PrintWCharType(
3310 : CodePrinter & str,
3311 0 : javaPrintMode mode)
3312 : {
3313 0 : PrintCharType(str, mode) ;
3314 : }
3315 :
3316 : void LangJava::PrintInterfaceType(
3317 : CodePrinter & str,
3318 : IDLInterfaceType* type,
3319 0 : javaPrintMode mode)
3320 : {
3321 0 : Symbol *symbol = type->GetSymbol() ;
3322 0 : JavaInfo *info = GetJavaInfo(symbol) ;
3323 :
3324 0 : str.Str() << info->_javaFullName ;
3325 :
3326 0 : switch(mode)
3327 : {
3328 : case JAVA_PRINT_NORMAL:
3329 : case JAVA_PRINT_IN:
3330 : case JAVA_PRINT_PTR:
3331 : case JAVA_PRINT_RETURN:
3332 : {
3333 0 : str.Str() << "_ptr" ;
3334 : break ;
3335 : }
3336 : case JAVA_PRINT_OUT:
3337 : case JAVA_PRINT_INOUT:
3338 : {
3339 0 : str.Str() << "_ptr&" ;
3340 : break ;
3341 : }
3342 : case JAVA_PRINT_VAR:
3343 : {
3344 0 : str.Str() << "_var" ;
3345 : break ;
3346 : }
3347 : }
3348 : }
3349 :
3350 : void LangJava::PrintStructType(
3351 : CodePrinter & str,
3352 : IDLStructType *type,
3353 0 : javaPrintMode mode)
3354 : {
3355 0 : NON_DEV("PrintStructType") ;
3356 : return ;
3357 : }
3358 :
3359 : void LangJava::PrintValue(
3360 : CodePrinter & str,
3361 7 : IDLValue *value)
3362 : {
3363 7 : switch(value->isA())
3364 : {
3365 : case idl_errorType:
3366 : {
3367 0 : str.Str() << "FIXME idl_errorType" ;
3368 : break ;
3369 : }
3370 : case idl_intType:
3371 : {
3372 : IDLIntValue *v = (IDLIntValue*) value ;
3373 7 : PrintIntValue(str, v) ;
3374 : break ;
3375 : }
3376 : case idl_floatType:
3377 : {
3378 0 : str.Str() << "FIXME idl_floatType" ;
3379 : break ;
3380 : }
3381 : case idl_charType:
3382 : {
3383 : IDLCharValue *v = (IDLCharValue*) value ;
3384 0 : PrintCharValue(str, v) ;
3385 : break ;
3386 : }
3387 : case idl_wcharType:
3388 : {
3389 : IDLWCharValue *v = (IDLWCharValue*) value ;
3390 0 : PrintWCharValue(str, v) ;
3391 : break ;
3392 : }
3393 : case idl_boolType:
3394 : {
3395 0 : str.Str() << "FIXME idl_boolType" ;
3396 : break ;
3397 : }
3398 : case idl_struct:
3399 : {
3400 0 : str.Str() << "FIXME idl_struct" ;
3401 : break ;
3402 : }
3403 : case idl_enum:
3404 : {
3405 0 : str.Str() << "FIXME idl_enum" ;
3406 : break ;
3407 : }
3408 : case idl_typedef:
3409 : {
3410 0 : str.Str() << "FIXME idl_typedef" ;
3411 : break ;
3412 : }
3413 : case idl_array:
3414 : {
3415 0 : str.Str() << "FIXME idl_array" ;
3416 : break ;
3417 : }
3418 : case idl_sequence:
3419 : {
3420 0 : str.Str() << "FIXME idl_sequence" ;
3421 : break ;
3422 : }
3423 : case idl_string:
3424 : {
3425 : IDLStringValue *v = (IDLStringValue*) value ;
3426 0 : PrintStringValue(str, v) ;
3427 : break ;
3428 : }
3429 : case idl_wstring:
3430 : {
3431 : IDLWStringValue *v = (IDLWStringValue*) value ;
3432 0 : PrintWStringValue(str, v) ;
3433 : break ;
3434 : }
3435 : case idl_any:
3436 : {
3437 0 : str.Str() << "FIXME idl_any" ;
3438 : break ;
3439 : }
3440 : case idl_octet:
3441 : {
3442 0 : str.Str() << "FIXME idl_octet" ;
3443 : break ;
3444 : }
3445 : case idl_interface:
3446 : {
3447 0 : str.Str() << "FIXME idl_interface" ;
3448 : break ;
3449 : }
3450 : case idl_object:
3451 : {
3452 0 : str.Str() << "FIXME idl_object" ;
3453 : break ;
3454 : }
3455 : case idl_void:
3456 : {
3457 0 : str.Str() << "FIXME idl_void" ;
3458 : break ;
3459 : }
3460 : case idl_native:
3461 : {
3462 0 : str.Str() << "FIXME idl_native" ;
3463 : break ;
3464 : }
3465 : }
3466 : }
3467 :
3468 : void LangJava::PrintCharValue(
3469 : CodePrinter & str,
3470 0 : IDLCharValue *value)
3471 : {
3472 0 : char c = value->GetChar() ;
3473 :
3474 0 : str.Str() << '\'' ;
3475 0 : PrintNiceChar(c, str) ;
3476 0 : str.Str() << '\'' ;
3477 : }
3478 :
3479 : void LangJava::PrintWCharValue(
3480 : CodePrinter & str,
3481 0 : IDLWCharValue *value)
3482 : {
3483 0 : wchar_t wc = value->GetWChar() ;
3484 : char buf[10] ;
3485 0 : sprintf (buf, "L'\\x%x'", wc) ;
3486 0 : str.Str() << buf ;
3487 : }
3488 :
3489 : void LangJava::PrintStringValue(
3490 : CodePrinter & str,
3491 0 : IDLStringValue *value)
3492 : {
3493 0 : const String& str1 = value->GetString() ;
3494 0 : const char* str2 = str1 ;
3495 :
3496 0 : str.Str() << '\"' ;
3497 0 : while (*str2 != '\0')
3498 : {
3499 0 : PrintNiceChar(*str2, str) ;
3500 : str2 ++ ;
3501 : }
3502 0 : str.Str() << '\"' ;
3503 : }
3504 :
3505 : void LangJava::PrintWStringValue(
3506 : CodePrinter & str,
3507 0 : IDLWStringValue *value)
3508 : {
3509 0 : str.Str() << "L\"" << value->GetWString() << "\"" ;
3510 : }
3511 :
3512 : void LangJava::PrintIntValue(
3513 : CodePrinter & str,
3514 7 : IDLIntValue *value)
3515 : {
3516 7 : switch(value->GetType())
3517 : {
3518 : case idl_signed_short:
3519 : {
3520 0 : str.Str() << value->GetS16() ;
3521 : break ;
3522 : }
3523 : case idl_signed_long:
3524 : {
3525 0 : str.Str() << "(int) (" << value->GetS32() << "L)" ;
3526 : break ;
3527 : }
3528 : case idl_signed_long_long:
3529 : {
3530 0 : str.Str() << value->GetS64() << "L" ;
3531 : break ;
3532 : }
3533 : case idl_unsigned_short:
3534 : {
3535 0 : str.Str() << "(short) (" << value->GetU16() << ")" ;
3536 : break ;
3537 : }
3538 : case idl_unsigned_long:
3539 : {
3540 14 : str.Str() << "(int) (" << value->GetU32() << "L)" ;
3541 : break ;
3542 : }
3543 : case idl_unsigned_long_long:
3544 : {
3545 0 : str.Str() << "(long) (" << value->GetU64() << "L)" ;
3546 : break ;
3547 : }
3548 : }
3549 : }
3550 :
3551 0 : bool LangJava::IsTypeFixedLength(IDLType* type)
3552 : {
3553 0 : NON_DEV("IsTypeFixedLength") ;
3554 : return true ;
3555 : }
3556 :
3557 1 : void LangJava::BuildNativeInfo(SymNative *native)
3558 : {
3559 1 : NON_DEV("BuildNativeInfo") ;
3560 : return ;
3561 : }
3562 :
3563 1 : void LangJava::GenerateNative(SymNative *native)
3564 : {
3565 1 : NON_DEV("GenerateNative") ;
3566 : return ;
3567 33 : }
3568 33 :
|