PRO POINTER_FREE, POINTER ;+ ; NAME: ; POINTER_FREE ; ; PURPOSE: ; Free an existing pointer. ; ; This routine uses pointers if run under IDL5 or higher, ; and handles if run under IDL4. ; ; CATEGORY: ; Pointers ; ; CALLING SEQUENCE: ; POINTER_FREE, POINTER ; ; INPUTS: ; POINTER Pointer variable ; ; OPTIONAL INPUTS: ; None. ; ; INPUT KEYWORD PARAMETERS: ; None. ; ; OUTPUT KEYWORD PARAMETERS: ; None. ; ; OUTPUTS: ; None. ; ; OPTIONAL OUTPUTS: ; None. ; ; COMMON BLOCKS: ; None. ; ; SIDE EFFECTS: ; None. ; ; RESTRICTIONS: ; POINTER must be a valid pointer variable. ; ; See also POINTER_CREATE, POINTER_VALID, POINTER_VALUE. ; ; EXAMPLE: ; ; ;Create and then free a pointer ; ; pointer_create, ptr ; help, pointer_valid(ptr) ; pointer_free, ptr ; help, pointer_valid(ptr) ; ; MODIFICATION HISTORY: ; http://cimss.ssec.wisc.edu/~gumley ; $Id: pointer_free.pro,v 1.7 1999/06/18 16:43:46 gumley Exp $ ;- rcs_id = '$Id: pointer_free.pro,v 1.7 1999/06/18 16:43:46 gumley Exp $' ;- Check arguments if n_params() ne 1 then message, 'Usage: POINTER_FREE, POINTER' if n_elements(pointer) eq 0 then message, 'Argument POINTER is undefined' ;- Free any valid pointers version = long(!version.release) case 1 of version ge 5 : begin result = size(pointer) if result[result[0] + 1] eq 10 then ptr_free, pointer end else : begin for i = 0, n_elements(pointer) - 1 do begin if pointer_valid(pointer(i)) then handle_free, pointer(i) endfor end endcase ;- Make the pointer variable undefined null = temporary(pointer) END