Abstract
Motivated to support the needs of component-based applications, we have developed a system called MetaFlex that generates metaclasses to extend the behavior of our C++ classes without inventing variants of the original classes. We make the case that a flexible metaclass generator service that allows developers to freely choose the kind and degree of detail for each metaclass is needed and present our architecture for making this specification. We also illustrate a powerful use of this technique with a scripting extension to our application framework. With an evaluation of our current MetaFlex implementation and its use with the scripting extension, we conclude that this service is best provided by compiler vendors.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Apple Computer, Inc, Inside Macintosh Volume VI, Addison-Wesley, Reading, MA, 1991.
[Böcker90] Heinz-Dieter Böcker, Jürgen Herczeg, “What Tracers Are Made Of” OOPSLA/ECOOP’ 90 Proceedings, 21–25 October, 1990.
Erik Christiansen, Mark Cutter, Pat Ferrel, Robert Meyer, Scott Moody, Murugappan Palaniappan, “Platypus: Aldus Scalable Component Architecture,” Aldus Technical Report (1992).
Pierre Cointe, “Metaclasses are First Class: the ObjVlisp Model,” Conference Proceedings of OOPSLA’ 87, October 4–8, 1987.
Brad Cox, Object-Oriented Programming: An Evolutionary Approach, Addison-Wesley, Reading, MA, 1986.
Margaret A. Ellis, Bjarne Stroustrup, The Annotated C++ Reference Manual, Addison-Wesley, Reading, MA, 1990.
Patrick J. Ferrel, Robert F. Meyer, “Vamp: The Aldus Application Framework,” Conference Proceedings of OOPSLA’ 89, October 1–6, 1989.
Adele Goldberg, David Robson, Smalltalk-80: The Language and Its Implementation, Addison-Wesley, Reading, MA, 1983.
Michael F. Kleyn, Paul C. Gingrich, “GraphTrace-Understanding Object-Oriented Systems Using Concurrently Animated Views,” Conference Proceedings of OOPSLA’ 88, September 25–30, 1988.
Pattie Maes, “Concepts and Experiments in Computational Reflections,” Conference Proceedings of OOPSLA’ 87, October 4–8, 1987.
Robert B. Murray, “A Statically Typed Abstract Representation for C++ Programs,” Usenix C++ Conference Proceedings, USENIX Association, August 10–13, 1992.
Andrew J. Palay, “C++ in a Changing Environment,” Usenix C++ Conference Proceedings, USENIX Association, August 10–13, 1992.
Edward R. Pérez, Moira Mallison, “Sentries and Policy Managers: Providing Extended Operations for Objects,” Texas Instruments Inc, October 16, 1992.
Joel Richardson, Peter Schwarz, Luis Felipé Cabrera, “CACL: Efficient Fine Grained Protection for Objects” Conference Proceedings of OOPSLA’ 92, Andreas Paepcke, ed. (1992).
Bjarne Stroustrup, “Run Time Type Identification for C++,” Usenix C++ Conference Proceedings, USENIX Association (1992).
Roger Voss, “Virtual Member Function Dispatching for C++ Evolvable Classes,” Aldus Technical Report (1992).
Roger Voss, “C++ Evolvable Base Classes Residing In Dynamic Link Libraries,” To appear in C++ Journal, Vol. 3, No. 1 (1993).
David L. Wells, José A. Blakeley, Craig W. Thompson, “Architecture of an Open Object-Oriented Database Management System,” IEEE Computer, Vol. 25, No. 10 (1992).
David L. Wells, Moira Mallison, Edward R. Pérez, “Behavioral Extension Mechanisms in Open Object-Oriented Database System,” Texas Instruments Inc. (1992).
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1993 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Johnson, R., Palaniappan, M. (1993). MetaFlex: A Flexible Metaclass Generator. In: Nierstrasz, O.M. (eds) ECOOP’ 93 — Object-Oriented Programming. ECOOP 1993. Lecture Notes in Computer Science, vol 707. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-47910-4_25
Download citation
DOI: https://doi.org/10.1007/3-540-47910-4_25
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-57120-9
Online ISBN: 978-3-540-47910-9
eBook Packages: Springer Book Archive