LispWorks Foreign Language Interface User Guide and Reference Manual > 5 Function and Macro Reference

NextPrevUpTopContentsIndex

make-pointer

Function
Summary

Creates a pointer to a specified address.

Package

fli

Signature
make-pointer &key address
 type
 pointer-type
 symbol-name
 functionp
 module
 encoding
 => pointer
Arguments

address

The address pointed to by the pointer to be created.

type

The type of the object pointed to by the pointer to be created.

pointer-type

The type of the pointer to be made.

symbol-name

A string or a symbol.

functionp

If type or pointer-type are not specified, then functionp can be used.

If t , the pointer made is a pointer to type :function . This is the default value.

If nil , the pointer made is a pointer to type :void .

module

A symbol or string naming a module, or nil .

encoding

One of :source , :object , :lisp or :dbcs .

Values

pointer

A pointer to address .

Description

The function make-pointer creates a pointer of a specified type pointing to a given address, or optionally to a function or foreign callable.

symbol-name is either a string containing the name of a foreign symbol defined in a DLL, or a string or symbol naming a foreign callable defined by define-foreign-callable.

encoding controls how symbol-name is processed. The values are interpreted like the encode argument of define-foreign-callable. The default value of encoding is :source if symbol-name is a string and :lisp if symbol-name is a symbol.

In the case of a pointer to a foreign callable or foreign function, the module keyword can be used to ensure that the pointer points to the function in the correct DLL if there are other DLLs containing functions with the same name. module is processed as by define-foreign-function.

Example

In the following example a module is defined, and the variable setpoint is set equal to a pointer to a function in the module.

(fli:register-module :user-dll :real-name "user32")
(setq setpoint
      (fli:make-pointer :symbol-name "SetCursorPos"
                        :module :user-dll)
See also

copy-pointer
define-foreign-callable
register-module
with-coerced-pointer


LispWorks Foreign Language Interface User Guide and Reference Manual - 21 Dec 2009

NextPrevUpTopContentsIndex