ProjectDatabase, which is our in-memory representation of retrogram.db, should not be specific to one architecture type. It should be architecture-agnostic, so that programs from multiple architectures can be analyzed in the same database.
Database<AR> should be separated into an architecture-erased trait that includes Any and a concrete database type. ProjectDatabase will store boxed, type-erased databases and use Any to type-check AR for methods that need to interact with an architecture.
ProjectDatabase
, which is our in-memory representation ofretrogram.db
, should not be specific to one architecture type. It should be architecture-agnostic, so that programs from multiple architectures can be analyzed in the same database.Database<AR>
should be separated into an architecture-erased trait that includesAny
and a concrete database type.ProjectDatabase
will store boxed, type-erased databases and useAny
to type-checkAR
for methods that need to interact with an architecture.