The following class subclasses the Database class to provide support for RapidFile tables. The code shown here implements the getSchema( ) method:

class RapidFileDatabase of Database

this.path = "" 

function getSchema( cArg ) 

local cItem 

cItem = upper( cArg ) 

do case 

case cItem == "DATABASES" 

return super::getSchema( "DATABASES" ) 

case cItem == "TABLES" 

local aRet, nFiles 

aRet = new Array( ) 

nFiles = aRet.dir( this.path + "*.RPD" ) // Get all RapidFile files 

if nFiles > 0 

aRet.resize( nFiles, 1, 1 ) // Filenames only in 2-D array 

aRet.resize( nFiles, 0 ) // Convert to 1-D array 

endif 

return aRet 

case cItem == "PROCEDURES" or cItem == "VIEWS" 

return new Array( ) 

otherwise 

return super::getSchema( cItem ) 

endcase 

endclass