Abstract
Compared to other languages, the C++ language offers a less powerful runtime type system, but a very powerful static type system. In AspectC++, this is addressed by an extended join-point API that provides static type information at compile-time and type-safe access to join-point-specific context information. In this paper we show, how the use of static type information leads to the development highly generic, but type-safe aspects that fit well into the C++ language model. This is demonstrated by an example.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
AspectC++ homepage, http://www.aspectc.org/
Alexandrescu, A.: Modern C++ Design: Generic Programming and Design Patterns Applied. Addison-Wesley, Reading (2001)
Czarnecki, K., Dominick, L., Eisenecker, U.W.: Aspektorientierte Programmierung in C++, Teil 1–3. iX, Magazin für professionelle Informationstechnik, 8–10 (2001)
Diggins, C.: Aspect-Oriented Programming & C++. Dr. Dobb’s Journal of Software Tools 408(8) (August 2004)
Hanenberg, S., Unland, R.: Parametric introductions. In: Akşit, M. (ed.) Proceedings of the 2nd International Conference on Aspect-Oriented Software Development (AOSD 2003), Boston, MA, USA, pp. 80–89. ACM Press, New York (2003)
Kennedy, A., Syme, D.: The design and implementation of generics for the .NET Common Language Runtime. In: Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2000) (June 2001)
Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, W.G.: Getting started with AspectJ. Communications of the ACM, 59–65 (2001)
Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, W.G.: An overview of aspectJ. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 327–353. Springer, Heidelberg (2001)
Kniesel, G., Rho, T., Hanenberg, S.: Evolvable pattern implementations need generic aspects. In: Proceedings of the ECOOP 2004 Workshop on Reflection, AOP and Meta-Data for Software Evolution (RAM-SE 2004), Oslo, Norway (June 2004)
Lohmann, D., Blaschke, G., Spinczyk, O.: Generic advice: On the combination of AOP with generative programming in aspectC++. In: Karsai, G., Visser, E. (eds.) GPCE 2004. LNCS, vol. 3286, pp. 55–74. Springer, Heidelberg (2004)
Rajan, H., Sullivan, K.: Eos: Instance-level aspects for integrated system design. In: Proceedings of the 4th Joint European Software Engineering Conference and ACM Symposium on the Foundations of Software Engineering (ESEC/FSE 2003) (September 2003)
Schüpany, M., Schwanninger, C., Wuchner, E.: Aspect-oriented programming for .NET. In: Proceedings of the 1st AOSDWorkshop on Aspects, Components and Patterns for Infrastructure Software (AOSD-ACP4IS 2002) (March 2002)
Spinczyk, O., Gal, A., Schröder-Preikschat, W.: AspectC++: An aspect-oriented extension to C++. In: Proceedings of the 40th International Conference on Technology of Object-Oriented Languages and Systems (TOOLS Pacific 2002), Sydney, Australia, February 2002, pp. 53–60 (2002)
Vandevoorde, D.: Reflective metagrogramming. In: Presentation held on the ACCU 2003 Spring Conference, Oxford, UK (April 2003), http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1471.pdf
Vollmann, D.: Visibility of join-points in AOP and implementation languages. In: Second GI Workshop on Aspect-Oriented Software Development, Bonn, Germany (February 2002)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2005 IFIP International Federation for Information Processing
About this paper
Cite this paper
Lohmann, D., Spinczyk, O. (2005). On Typesafe Aspect Implementations in C++. In: Gschwind, T., Aßmann, U., Nierstrasz, O. (eds) Software Composition. SC 2005. Lecture Notes in Computer Science, vol 3628. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11550679_11
Download citation
DOI: https://doi.org/10.1007/11550679_11
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-28748-3
Online ISBN: 978-3-540-28749-0
eBook Packages: Computer ScienceComputer Science (R0)