## 12.2 Foreign Pointers

Module `ForeignPointer` provides an interface to encapsulated raw pointers to foreign data. This is useful for implementors of foreign libraries: any C pointer can be encapsulated as a ForeignPointer and passed around as an Oz value. However, you should consider subclassing the `Oz_Extension` class instead, to encapsulate your C++ data structures into new Oz (abstract) datatypes.

`IsForeignPointer`

  > `{ForeignPointer.is` `+X``` `?B``}`

  tests whether `X` is a foreign pointer

`toInt`

  > `{ForeignPointer.toInt` `+X``` `?I``}`

  converts a foreign pointer to an integer. Two foreign pointers convert to the same integer iff they point to the same location.