Metaprogramming Facilities in Oberon for Windows and Power Macintosh

Christoph Steindl, Hanspeter Mössenböck
Johannes Kepler Universität Linz
Institute for Practical Computer Science
Altenbergerstraße 69, A-4040 Linz
{steindl, moessenboeck}@ssw.uni-linz.ac.at


Abstract

This report describes metaprogramming facilities in the Oberon V4 system for Power Macintosh and Windows. Metaprogramming means that a module can access the structure of other modules (i.e., procedures, types, run-time data) at run time. The purpose of this report is threefold:

  • It explains the use and the internals of some existing but hardly known modules of the Oberon V4 system (i.e., Modules and Types).
  • It introduces a new module Ref for exploring the structure of types, procedures, stack frames, global data and heap data as well as for accessing the contents of arbitrary variables at run time.
  • It explains the layout of module descriptors, type descriptors, dynamic array descriptors, and stack frames in the Oberon implementations for Windows and Power Macintosh.

We show how metaprogramming can be used in a number of interesting applications such as a post mortem debugger that allows the user to zoom into records, arrays and pointers, a heap inspector, a database interface, and a general output module.


Technical Report 8, University of Linz, Institute of Computer Science (System Software), July 1996.

You can download the report in compressed postscript.