Contents
Chapter 1 Preface
Chapter 2 Introduction
2.1 Babel Facilitates Language Interoperability
2.2 Scientific Interface Definition Language (SIDL)
2.3 Benefits to Customers
2.4 Beyond Babel’s Scope
2.5 Summary
2.6 Organization
Part I Foundations
Chapter 3 Installation
3.1 Simple Installation
3.2 External Software Requirements
Chapter 4 Basic Babel Code Generation
4.1 Babel is a Compiler
4.2 Command Line Options
Chapter 5 Hello World Tutorial
5.1 Introduction
5.2 Minimal Makefiles
5.3 Portable Makefiles: using
babel-config
5.4 Final Remarks
Chapter 6 SIDL Basics
6.1 Introduction
6.2 SIDL Files
6.3 Fundamental Types
6.4 Arrays
6.5 Interface Contracts
6.6 SIDL Runtime
6.7 Objects
6.8 XML Repositories
Chapter 7 Upgrade Notes
7.1 Upgrading from Babel 1.0 to 1.4
Part II Supported Language Bindings
Chapter 8 C Bindings
8.1 Introduction
8.2 Basics
8.3 Client-side
8.4 Implementation-side
Chapter 9 C++ Bindings
9.1 Introduction
9.2 Basics
9.3 Client-side
9.4 Implementation-side
Chapter 10 FORTRAN 77 Bindings
10.1 Introduction
10.2 Basics
10.3 Client-side
10.4 Implementation-side
Chapter 11 Fortran 90/95 Bindings
11.1 Introduction
11.2 Basics
11.3 Client-side
11.4 Implementation-side
Chapter 12 Fortran 2003/2008 Bindings
12.1 Introduction
12.2 Basics
12.3 Client-side
12.4 Implementation-side
Chapter 13 Java Bindings
13.1 Introduction
13.2 Basics
13.3 Client-side
13.4 Implementation-side
Chapter 14 Python Bindings
14.1 Introduction
14.2 Basics
14.3 Client-side
14.4 Implementation-side
Chapter 15 SIDL Backend
15.1 Introduction
15.2 Purpose
15.3 Generated versus Original SIDL files
15.4 XML File Comparison
15.5 Babel Command Line Options
Chapter 16 XML Backend
16.1 Introduction
16.2 Purpose
16.3 Basic Structure
16.4 Command Line Options
Chapter 17 HTML Interface Documentation
17.1 Introduction
Part III Advanced Topics
Chapter 18 Remote Method Invocation
18.1 What is RMI?
18.2 Babel RMI Concepts
18.3 Babel RMI Usage
18.4 Babel Object Servers
18.5 Non-Blocking Babel RMI
Chapter 19 Building Portable Polyglot Software
19.1 Layout of Generated Files
19.2 Grouping compiled assets into Libraries
19.3 Dynamic vs. Static Linking
19.4 SIDL Library Issues
19.5 Language Bindings for the
sidl
Package
19.6 SCL Files for Dynamic Loading
19.7 Deployment of Babel-Enabled Libraries
Chapter 20 Creating Objects with Pre-Initialized State
20.1 Introduction to the Backdoor Initializer
20.2 Motivation
20.3 Example
20.4 The Backdoor Initializer in C
20.5 The Backdoor Initializer in
fortran 77
20.6 The Backdoor Initializer in Fortran 90/95
20.7 The Backdoor Initializer in C++
20.8 The Backdoor Initializer in Java
20.9 The Backdoor Initializer in Python
Chapter 21 Interface Contracts
21.1 Introduction
21.2 Specifications
21.3 Enforcement
21.4 Summary
Chapter 22 Troubleshooting
22.1 Introduction
22.2 Common Errors
22.3 Common Warnings
Chapter 23 Lessons Learned
23.1 Introduction
23.2 Compilation Consistency is Key
Part IV Appendices
Appendix A Reserved Words
A.1 Introduction
A.2 Reserved Words
A.3 Suggested Things To Avoid
Appendix B SIDL Grammar
B.1 Introduction
B.2 Backus-Naur Form
Appendix C Extensible Markup Language (XML)
C.1 Introduction
C.2 SIDL Document Type Declaration (DTD)
Appendix D Glossary
ibliography