language: en

Program Generalization for Software Reuse: From C to C++

Michael Siff and Thomas Reps
University of Wisconsin-Madison
1210 West Dayton Street Madison, WI 53706
{siff, reps}@cs.wisc.edu

Abstract We consider the problem of software generalization: Given a program component C, create a parameterized program component C 0 such that C 0 is usable in a wider variety of syntactic contexts than C. Furthermore, C 0 should be a semantically meaningful generalization of C; namely, there must exist an instantiation of C 0 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++.

1 Introduction