class SystemFunction(object): name = None @classmethod def getFunctionName(cls): return cls.name @classmethod def getMakeName(cls): return cls.name.upper() @classmethod def iterHeaders(cls, targetPlatform): raise NotImplementedError class FTruncateFunction(SystemFunction): name = 'ftruncate' @classmethod def iterHeaders(cls, targetPlatform): yield '' class MMapFunction(SystemFunction): name = 'mmap' @classmethod def iterHeaders(cls, targetPlatform): if targetPlatform in ('darwin', 'openbsd'): yield '' yield '' # Build a list of system functions using introspection. systemFunctions = [ obj for obj in locals().values() if isinstance(obj, type) and issubclass(obj, SystemFunction) and obj is not SystemFunction ]