Program Generalization for Software Reuse: From C to C++
Michael Siff and Thomas Reps
We consider the problem of software generalization: Given a program
component C, create a parameterized program component
C' such that C' is usable in a wider variety of
syntactic contexts than C. Furthermore, C' should
be a semantically meaningful generalization of C; namely,
there must exist an instantiation of C' that is equivalent in
functionality to C.
In this paper, we present an algorithm that generalizes C functions
via type inference. The original functions operate on specific data
types; the result of generalization is a collection of C++ function
templates that operate on parameterized types. This version of the
generalization problem is useful in the context of converting existing
C programs to C++.
(Click here to access the paper:
PostScript,
PDF.)
University of Wisconsin