class CConfig: """ Definitions for platform integration. Note: this must be processed through platform.configure() to provide usable objects. For example:: CLOCK_T = platform.configure(CConfig)['CLOCK_T'] register(function, [CLOCK_T], ...) """ _compilation_info_ = ExternalCompilationInfo( includes=includes ) if not sys.platform.startswith('win'): CLOCK_T = platform.SimpleType('clock_t', rffi.INT) TMS = platform.Struct( 'struct tms', [('tms_utime', rffi.INT), ('tms_stime', rffi.INT), ('tms_cutime', rffi.INT), ('tms_cstime', rffi.INT)]) SEEK_SET = platform.DefinedConstantInteger('SEEK_SET') SEEK_CUR = platform.DefinedConstantInteger('SEEK_CUR') SEEK_END = platform.DefinedConstantInteger('SEEK_END') UTIMBUF = platform.Struct('struct '+underscore_on_windows+'utimbuf', [('actime', rffi.INT), ('modtime', rffi.INT)])
class CConfig: _compilation_info_ = compilation_info size_t = platform.SimpleType("size_t", rffi.ULONG) off_t = platform.SimpleType("off_t", rffi.LONG) MAP_PRIVATE = platform.ConstantInteger("MAP_PRIVATE") MAP_ANON = platform.DefinedConstantInteger("MAP_ANON") MAP_ANONYMOUS = platform.DefinedConstantInteger("MAP_ANONYMOUS") PROT_READ = platform.ConstantInteger("PROT_READ") PROT_WRITE = platform.ConstantInteger("PROT_WRITE") PROT_EXEC = platform.ConstantInteger("PROT_EXEC")
class CConfig: _compilation_info_ = ExternalCompilationInfo( includes=["time.h"], libraries=libraries, ) HAS_CLOCK_GETTIME = rffi_platform.Has('clock_gettime') CLOCK_REALTIME = rffi_platform.DefinedConstantInteger("CLOCK_REALTIME") CLOCK_MONOTONIC = rffi_platform.DefinedConstantInteger("CLOCK_MONOTONIC") CLOCK_MONOTONIC_RAW = rffi_platform.DefinedConstantInteger("CLOCK_MONOTONIC_RAW") CLOCK_PROCESS_CPUTIME_ID = rffi_platform.DefinedConstantInteger("CLOCK_PROCESS_CPUTIME_ID") CLOCK_THREAD_CPUTIME_ID = rffi_platform.DefinedConstantInteger("CLOCK_THREAD_CPUTIME_ID")
class CConfig: _compilation_info_ = eci RTLD_LOCAL = rffi_platform.DefinedConstantInteger('RTLD_LOCAL') RTLD_GLOBAL = rffi_platform.DefinedConstantInteger('RTLD_GLOBAL') RTLD_NOW = rffi_platform.DefinedConstantInteger('RTLD_NOW') FFI_OK = rffi_platform.ConstantInteger('FFI_OK') FFI_BAD_TYPEDEF = rffi_platform.ConstantInteger('FFI_BAD_TYPEDEF') FFI_DEFAULT_ABI = rffi_platform.ConstantInteger('FFI_DEFAULT_ABI') if _MS_WINDOWS: FFI_STDCALL = rffi_platform.ConstantInteger('FFI_STDCALL') FFI_TYPE_STRUCT = rffi_platform.ConstantInteger('FFI_TYPE_STRUCT') size_t = rffi_platform.SimpleType("size_t", rffi.ULONG) ffi_type = rffi_platform.Struct('ffi_type', [('size', rffi.ULONG), ('alignment', rffi.USHORT), ('type', rffi.USHORT), ('elements', FFI_TYPE_PP)]) ffi_closure = rffi_platform.Struct('ffi_closure', [])
('bzfree', lltype.Ptr(_free_type)), ('opaque', rffi.VOIDP), ]) FILE = rffi.COpaquePtr('FILE') BZFILE = rffi.COpaquePtr('BZFILE') constants = {} constant_names = ['BZ_RUN', 'BZ_FLUSH', 'BZ_FINISH', 'BZ_OK', 'BZ_RUN_OK', 'BZ_FLUSH_OK', 'BZ_FINISH_OK', 'BZ_STREAM_END', 'BZ_SEQUENCE_ERROR', 'BZ_PARAM_ERROR', 'BZ_MEM_ERROR', 'BZ_DATA_ERROR', 'BZ_DATA_ERROR_MAGIC', 'BZ_IO_ERROR', 'BZ_UNEXPECTED_EOF', 'BZ_OUTBUFF_FULL', 'BZ_CONFIG_ERROR'] for name in constant_names: setattr(CConfig, name, platform.DefinedConstantInteger(name)) class cConfig(object): pass for k, v in platform.configure(CConfig).items(): setattr(cConfig, k, v) if not cConfig.CHECK_LIBRARY: raise ImportError("Invalid bz2 library") for name in constant_names: value = getattr(cConfig, name) if value is not None: constants[name] = value locals().update(constants) off_t = cConfig.off_t
class CConfig: _compilation_info_ = eci ub1 = platform.SimpleType('ub1', rffi.UINT) sb1 = platform.SimpleType('sb1', rffi.INT) ub2 = platform.SimpleType('ub2', rffi.UINT) sb2 = platform.SimpleType('sb2', rffi.INT) ub4 = platform.SimpleType('ub4', rffi.UINT) sb4 = platform.SimpleType('sb4', rffi.INT) sword = platform.SimpleType('sword', rffi.INT) uword = platform.SimpleType('uword', rffi.UINT) boolean = platform.SimpleType('oci_boolean', rffi.UINT) OCIDuration = platform.SimpleType('OCIDuration', rffi.UINT) OCIInd = platform.SimpleType('OCIInd', rffi.INT) OCIPinOpt = platform.SimpleType('OCIPinOpt', rffi.INT) OCILockOpt = platform.SimpleType('OCILockOpt', rffi.INT) OCITypeCode = platform.SimpleType('OCITypeCode', rffi.UINT) OCINumber = platform.Struct('OCINumber', []) OCITime = platform.Struct('OCITime', [ ('OCITimeHH', rffi.INT), ('OCITimeMI', rffi.INT), ('OCITimeSS', rffi.INT), ]) OCIDate = platform.Struct('OCIDate', [ ('OCIDateYYYY', rffi.INT), ('OCIDateMM', rffi.INT), ('OCIDateDD', rffi.INT), ('OCIDateTime', OCITime), ]) defines = ''' OCI_ATTR_SERVER OCI_ATTR_SESSION OCI_ATTR_USERNAME OCI_ATTR_PASSWORD OCI_ATTR_STMT_TYPE OCI_ATTR_PARAM OCI_ATTR_PARAM_COUNT OCI_ATTR_ROW_COUNT OCI_ATTR_NAME OCI_ATTR_INTERNAL_NAME OCI_ATTR_EXTERNAL_NAME OCI_ATTR_SCALE OCI_ATTR_PRECISION OCI_ATTR_IS_NULL OCI_ATTR_DATA_SIZE OCI_ATTR_DATA_TYPE OCI_ATTR_REF_TDO OCI_ATTR_SCHEMA_NAME OCI_ATTR_TYPE_NAME OCI_ATTR_TYPECODE OCI_ATTR_NUM_TYPE_ATTRS OCI_ATTR_LIST_TYPE_ATTRS OCI_ATTR_COLLECTION_ELEMENT OCI_ATTR_MAXDATA_SIZE OCI_ATTR_CHARSET_FORM OCI_ATTR_CHARSET_ID OCI_ATTR_ENV_CHARSET_ID OCI_ATTR_PARSE_ERROR_OFFSET OCI_ATTR_SPOOL_OPEN_COUNT OCI_ATTR_SPOOL_BUSY_COUNT OCI_ATTR_SPOOL_TIMEOUT OCI_ATTR_SPOOL_GETMODE OCI_ATTR_PURITY OCI_ATTR_CONNECTION_CLASS OCI_ATTR_PURITY_DEFAULT SQLT_CHR SQLT_LNG SQLT_AFC SQLT_RDD SQLT_BIN SQLT_LBI SQLT_LVC SQLT_LVB SQLT_BFLOAT SQLT_IBFLOAT SQLT_BDOUBLE SQLT_IBDOUBLE SQLT_NUM SQLT_VNU SQLT_DAT SQLT_ODT SQLT_DATE SQLT_TIMESTAMP SQLT_TIMESTAMP_TZ SQLT_TIMESTAMP_LTZ SQLT_INTERVAL_DS SQLT_CLOB SQLT_CLOB SQLT_BLOB SQLT_BFILE SQLT_RSET SQLT_NTY '''.split() constants = ''' OCI_DEFAULT OCI_OBJECT OCI_THREADED OCI_EVENTS OCI_SUCCESS OCI_SUCCESS_WITH_INFO OCI_INVALID_HANDLE OCI_NO_DATA OCI_HTYPE_ERROR OCI_HTYPE_SVCCTX OCI_HTYPE_SERVER OCI_HTYPE_SESSION OCI_HTYPE_STMT OCI_HTYPE_DESCRIBE OCI_HTYPE_BIND OCI_HTYPE_DEFINE OCI_HTYPE_ENV OCI_HTYPE_SPOOL OCI_HTYPE_AUTHINFO OCI_DTYPE_PARAM OCI_DTYPE_TIMESTAMP OCI_DTYPE_INTERVAL_DS OCI_DTYPE_LOB OCI_CRED_RDBMS OCI_CRED_EXT OCI_SPOOL_ATTRVAL_NOWAIT OCI_NTV_SYNTAX OCI_COMMIT_ON_SUCCESS OCI_FETCH_NEXT OCI_IND_NULL OCI_IND_NOTNULL OCI_PIN_ANY OCI_LOCK_NONE OCI_OBJECTFREE_FORCE OCI_OTYPE_PTR OCI_PTYPE_TYPE OCI_STMT_SELECT OCI_STMT_CREATE OCI_STMT_DROP OCI_STMT_ALTER OCI_STMT_INSERT OCI_STMT_DELETE OCI_STMT_UPDATE SQLCS_IMPLICIT SQLCS_NCHAR OCI_TEMP_CLOB OCI_TEMP_BLOB OCI_DURATION_SESSION OCI_ONE_PIECE OCI_NUMBER_SIGNED OCI_TYPECODE_CHAR OCI_TYPECODE_VARCHAR OCI_TYPECODE_VARCHAR2 OCI_TYPECODE_NUMBER OCI_TYPECODE_DATE OCI_TYPECODE_TIMESTAMP OCI_TYPECODE_NAMEDCOLLECTION OCI_TYPECODE_OBJECT OCI_NLS_MAXBUFSZ OCI_NLS_CS_ORA_TO_IANA OCI_UTF16ID OCI_SPC_STMTCACHE OCI_SPC_HOMOGENEOUS OCI_SESSGET_SPOOL OCI_SESSGET_CREDPROXY OCI_SESSGET_STMTCACHE OCI_SESSGET_CREDEXT OCI_SESSRLS_DROPSESS '''.split() for c in defines: locals()[c] = platform.DefinedConstantInteger(c) for c in constants: locals()[c] = platform.ConstantInteger(c) INT_MAX = platform.ConstantInteger('INT_MAX')
"KQ_FILTER_SIGNAL": "EVFILT_SIGNAL", "KQ_FILTER_TIMER": "EVFILT_TIMER", "KQ_EV_ADD": "EV_ADD", "KQ_EV_DELETE": "EV_DELETE", "KQ_EV_ENABLE": "EV_ENABLE", "KQ_EV_DISABLE": "EV_DISABLE", "KQ_EV_ONESHOT": "EV_ONESHOT", "KQ_EV_CLEAR": "EV_CLEAR", # "KQ_EV_SYSFLAGS": None, # Python docs says "internal event" .. not defined on FreeBSD # "KQ_EV_FLAG1": None, # Python docs says "internal event" .. not defined on FreeBSD "KQ_EV_EOF": "EV_EOF", "KQ_EV_ERROR": "EV_ERROR" } for symbol in symbol_map.values(): setattr(CConfig, symbol, rffi_platform.DefinedConstantInteger(symbol)) cconfig = rffi_platform.configure(CConfig) kevent = cconfig["kevent"] timespec = cconfig["timespec"] for symbol in symbol_map: globals()[symbol] = cconfig[symbol_map[symbol]] syscall_kqueue = rffi.llexternal("kqueue", [], rffi.INT, compilation_info=eci) syscall_kevent = rffi.llexternal("kevent", [ rffi.INT, lltype.Ptr(rffi.CArray(kevent)), rffi.INT, lltype.Ptr(rffi.CArray(kevent)), rffi.INT,
USE_SHORT_FLOAT_REPR = True # XXX make it a translation option? class CConfig: _compilation_info_ = ExternalCompilationInfo(includes=["float.h"]) float_constants = ["DBL_MAX", "DBL_MIN", "DBL_EPSILON"] int_constants = [ "DBL_MAX_EXP", "DBL_MAX_10_EXP", "DBL_MIN_EXP", "DBL_MIN_10_EXP", "DBL_DIG", "DBL_MANT_DIG", "FLT_RADIX", "FLT_ROUNDS" ] for const in float_constants: setattr(CConfig, const, rffi_platform.DefinedConstantDouble(const)) for const in int_constants: setattr(CConfig, const, rffi_platform.DefinedConstantInteger(const)) del float_constants, int_constants, const globals().update(rffi_platform.configure(CConfig)) def rstring_to_float(s): return rstring_to_float_impl(s) def rstring_to_float_impl(s): if USE_SHORT_FLOAT_REPR: from pypy.rlib.rdtoa import strtod return strtod(s) sign, before_point, after_point, exponent = break_up_float(s) if not before_point and not after_point:
constants = {} if _POSIX: # constants, look in sys/mman.h and platform docs for the meaning # some constants are linux only so they will be correctly exposed outside # depending on the OS constant_names = [ 'MAP_SHARED', 'MAP_PRIVATE', 'PROT_READ', 'PROT_WRITE', 'MS_SYNC' ] opt_constant_names = [ 'MAP_ANON', 'MAP_ANONYMOUS', 'PROT_EXEC', 'MAP_DENYWRITE', 'MAP_EXECUTABLE' ] for name in constant_names: setattr(CConfig, name, rffi_platform.ConstantInteger(name)) for name in opt_constant_names: setattr(CConfig, name, rffi_platform.DefinedConstantInteger(name)) CConfig.MREMAP_MAYMOVE = ( rffi_platform.DefinedConstantInteger("MREMAP_MAYMOVE")) CConfig.has_mremap = rffi_platform.Has('mremap(NULL, 0, 0, 0)') # a dirty hack, this is probably a macro elif _MS_WINDOWS: constant_names = [ 'PAGE_READONLY', 'PAGE_READWRITE', 'PAGE_WRITECOPY', 'FILE_MAP_READ', 'FILE_MAP_WRITE', 'FILE_MAP_COPY', 'DUPLICATE_SAME_ACCESS', 'MEM_COMMIT', 'MEM_RESERVE', 'MEM_RELEASE', 'PAGE_EXECUTE_READWRITE' ] for name in constant_names: setattr(CConfig, name, rffi_platform.ConstantInteger(name))
class CConfig: _compilation_info_ = eci NCCS = rffi_platform.DefinedConstantInteger('NCCS')
class CConfig: _compilation_info_ = eci # constants linux = platform.Defined('linux') WIN32 = platform.Defined('_WIN32') O_NONBLOCK = platform.DefinedConstantInteger('O_NONBLOCK') F_GETFL = platform.DefinedConstantInteger('F_GETFL') F_SETFL = platform.DefinedConstantInteger('F_SETFL') FIONBIO = platform.DefinedConstantInteger('FIONBIO') INVALID_SOCKET = platform.DefinedConstantInteger('INVALID_SOCKET') INET_ADDRSTRLEN = platform.DefinedConstantInteger('INET_ADDRSTRLEN') INET6_ADDRSTRLEN = platform.DefinedConstantInteger('INET6_ADDRSTRLEN') EINPROGRESS = platform.DefinedConstantInteger('EINPROGRESS') WSAEINPROGRESS = platform.DefinedConstantInteger('WSAEINPROGRESS') EWOULDBLOCK = platform.DefinedConstantInteger('EWOULDBLOCK') WSAEWOULDBLOCK = platform.DefinedConstantInteger('WSAEWOULDBLOCK') EAFNOSUPPORT = platform.DefinedConstantInteger('EAFNOSUPPORT') WSAEAFNOSUPPORT = platform.DefinedConstantInteger('WSAEAFNOSUPPORT') EISCONN = platform.DefinedConstantInteger('EISCONN') WSAEISCONN = platform.DefinedConstantInteger('WSAEISCONN')
class CConfig: _compilation_info_ = eci RTLD_LOCAL = rffi_platform.DefinedConstantInteger('RTLD_LOCAL') RTLD_GLOBAL = rffi_platform.DefinedConstantInteger('RTLD_GLOBAL') RTLD_NOW = rffi_platform.DefinedConstantInteger('RTLD_NOW')