# # # import types # # class which reads a "config file" (variable assignments using # Python syntax) and allows queries of the files contents # class configfile : def __init__( self, fileName ) : self.fileName = fileName self.VarVals = {} execfile( fileName, globals(), self.VarVals ) def __del__( self ) : print "DELETING CF INSTANCE FOR: %s" % self.fileName def getFileName( self ) : return self.fileName def getVars( self ) : return self.VarVals.keys() def getValue( self, var ) : return self.VarVals[var] # # helper functions for C/C++ since it does not have native lists/maps # def getType( obj ) : t = type( obj ) # return vals: # 0 = UNKNOWN # 1 = INT # 2 = STRING # 3 = FLOAT # 4 = DOUBLE # 5 = LIST # 6 = DICT if( t == types.IntType ) : return 1 elif( t == types.StringType ) : return 2 elif( t == types.FloatType ) : return 3 elif( t == types.LongType ) : return 4 elif( t == types.ListType ) : return 5 elif( t == types.DictType ) : return 6 else : return 0 def extractInt( obj ) : if( type( obj ) == types.IntType ) : return obj else : raise TypeError def extractString( obj ) : if( type( obj ) == types.StringType ) : return obj else : raise TypeError def extractFloat( obj ) : if( type( obj ) == types.FloatType ) : return obj else : raise TypeError def extractDouble( obj ) : if( type( obj ) == types.LongType ) : return obj else : raise TypeError # # LIST HELPERS # def getListLength( obj ) : if( type( obj ) == types.ListType ) : return len( obj ) else : raise TypeError def getNthItemInList( obj, i ) : if( type( obj ) == types.ListType ) : return obj[i] else : raise TypeError # # MAP HELPERS # def getKeys( obj ) : if( type( obj ) == types.DictType ) : return obj.keys() else : raise TypeError def getItemInMap( obj, k ) : if( type( obj ) == types.DictType ) : return obj[k] else : raise TypeError getItemInMapIntKey = getItemInMap getItemInMapStringKey = getItemInMap getItemInMapFloatKey = getItemInMap getItemInMapDoubleKey = getItemInMap # # TESTER # if( __name__ == "__main__" ) : # # so freeze dosent get it # exec( "import sys" ) if( len( sys.argv ) != 2 ) : print "USAGE: ", sys.argv[0], " " sys.exit( 1 ) cf = configfile( sys.argv[1] ) for k in cf.getVars() : print "KEY: %s VAL: %s" % (k, cf.getValue( k ))