Emulating Multiple Inheritance in Fortran 2003/2008
- Sandia National Laboratories, 7011 East Avenue, Livermore, CA 94550-9610, USA
Although the high-performance computing (HPC) community increasingly embraces object-oriented programming (OOP), most HPC OOP projects employ the C++ programming language. Until recently, Fortran programmers interested in mining the benefits of OOP had to emulate OOP in Fortran 90/95. The advent of widespread compiler support for Fortran 2003 now facilitates explicitly constructing object-oriented class hierarchies via inheritance and leveraging related class behaviors such as dynamic polymorphism. Although C++ allows a class to inherit from multiple parent classes, Fortran and several other OOP languages restrict or prohibit explicit multiple inheritance relationships in order to circumvent several pitfalls associated with them. Nonetheless, what appears as an intrinsic feature in one language can be modeled as a user-constructed design pattern in another language. The present paper demonstrates how to apply the facade structural design pattern to support a multiple inheritance class relationship in Fortran 2003. As a result, the design unleashes the power of the associated class relationships for modeling complicated data structures yet avoids the ambiguities that plague some multiple inheritance scenarios.
- Research Organization:
- Sandia National Laboratories (SNL), Albuquerque, NM, and Livermore, CA (United States); Sandia National Lab. (SNL-CA), Livermore, CA (United States)
- Sponsoring Organization:
- USDOE National Nuclear Security Administration (NNSA)
- Grant/Contract Number:
- AC04-94AL85000
- OSTI ID:
- 1197680
- Alternate ID(s):
- OSTI ID: 1214234; OSTI ID: 1320516
- Report Number(s):
- SAND2016-8334J; PII: 126069; 126069
- Journal Information:
- Scientific Programming, Journal Name: Scientific Programming Vol. 2015; ISSN 1058-9244
- Publisher:
- Hindawi Publishing CorporationCopyright Statement
- Country of Publication:
- Egypt
- Language:
- English
Similar Records
Final Report, Center for Programming Models for Scalable Parallel Computing: Co-Array Fortran, Grant Number DE-FC02-01ER25505
Using Coarrays to Parallelize Legacy Fortran Applications: Strategy and Case Study