Foreign.C.Types
| Copyright | (c) The FFI task force 2001 |
|---|---|
| License | BSD-style (see the file libraries/base/LICENSE) |
| Maintainer | ffi@haskell.org |
| Stability | provisional |
| Portability | portable |
| Safe Haskell | Trustworthy |
| Language | Haskell2010 |
Содержание
Описание
Сопоставление типов C с соответствующими типами Haskell.
Представления типов C
Эти типы необходимы для точного представления прототипов функций C, чтобы получить доступ к интерфейсам библиотек C в Haskell. Система Haskell не обязана представлять эти типы точно так же, как C, но предоставляются следующие гарантии относительно типа Haskell CT, представляющего тип C t:
- Если прототип функции C имеет
tв качестве типа аргумента или результата, использованиеCTв соответствующей позиции во внешнем объявлении позволяет программе Haskell получить доступ ко всему диапазону значений, закодированных типом C; и наоборот, любое значение Haskell дляCTимеет допустимое представление в C. -
sizeOf (undefined :: CT)даст такое же значение, какsizeof (t)в C. -
alignment (undefined :: CT)соответствует ограничению выравнивания, налагаемому реализацией C дляt. - Члены
peekиpokeклассаStorableотображают все значенияCTна соответствующее значениеtи наоборот. - Когда экземпляр
Boundedопределен дляCT, значенияminBoundиmaxBoundсовпадают сt_MINиt_MAXв C. - Когда экземпляр
EqилиOrdопределен дляCT, предикаты, определенные классом типов, реализуют то же самое отношение, что и соответствующий предикат в C дляt. - Когда экземпляр
Num,Read,Integral,Fractional,Floating,RealFrac, илиRealFloatопределен дляCT, арифметические операции, определенные классом типов, реализуют ту же функцию, что и соответствующие арифметические операции (если доступны) в C дляt. - Когда экземпляр
Bitsопределен дляCT, побитовая операция, определенная классом типов, реализует ту же функцию, что и соответствующая побитовая операция в C дляt.
Целочисленные типы
Эти типы представлены как newtype типов в Data.Int и Data.Word, и являются экземплярами Eq, Ord, Num, Read, Show, Enum, Typeable, Storable, Bounded, Real, Integral и Bits.
Тип Haskell, представляющий тип C char.
Экземпляры
Тип Haskell, представляющий тип C signed char.
Экземпляры
Тип Haskell, представляющий тип C unsigned char.
Экземпляры
Тип Haskell, представляющий тип C short.
Экземпляры
Тип Haskell, представляющий тип C unsigned short.
Экземпляры
Тип Haskell, представляющий тип C int.
Экземпляры
Тип Haskell, представляющий тип C unsigned int.
Экземпляры
Тип Haskell, представляющий тип C long.
Экземпляры
Тип Haskell, представляющий тип C unsigned long.
Экземпляры
Тип Haskell, представляющий тип C ptrdiff_t.
Экземпляры
Тип Haskell, представляющий тип C size_t.
Экземпляры
Тип Haskell, представляющий тип C wchar_t.
Экземпляры
newtype CSigAtomic Source
Тип Haskell, представляющий тип C sig_atomic_t.
Конструкторы
| CSigAtomic Int32 |
Экземпляры
Тип Haskell, представляющий тип C long long.
Экземпляры
Тип Haskell, представляющий тип C unsigned long long.
Экземпляры
Экземпляры
Экземпляры
Экземпляры
Экземпляры
Числовые типы
Эти типы представлены как newtypes базовых внешних типов и являются экземплярами Eq, Ord, Num, Read, Show, Enum, Typeable и Storable.
Тип Haskell, представляющий тип C clock_t.
Экземпляры
Тип Haskell, представляющий тип C time_t.
Тип Haskell, представляющий тип C useconds_t.
Since: 4.4.0.0
Экземпляры
newtype CSUSeconds Source
Тип Haskell, представляющий тип C suseconds_t.
Since: 4.4.0.0
Конструкторы
| CSUSeconds Int64 |
Экземпляры
Для преобразования CTime в UTCTime, используйте следующее:
\t -> posixSecondsToUTCTime (realToFrac t :: POSIXTime)
Типы с плавающей точкой
Эти типы представлены как newtype Float и Double, и являются экземплярами Eq, Ord, Num, Read, Show, Enum, Typeable, Storable, Real, Fractional, Floating, RealFrac и RealFloat.
Тип Haskell, представляющий тип C float.
Экземпляры
Тип Haskell, представляющий тип C double.
Примеры использования
Другие типы
Тип Haskell, представляющий тип C FILE.
Тип Haskell, представляющий тип C fpos_t.
Тип Haskell, представляющий тип C jmp_buf.
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/7.10.3/docs/html/libraries/base-4.8.2.0/Foreign-C-Types.html