    class
    	MANAGED_POINTER

    General
    	cluster: base
    	description:
    		"To easily manage allocation and release of allocated C memory, and
    		to perform insertion of basic elements. Byte order is by default
    		platform specific.
    		Although memory allocation routines do not accept a zero sized pointer
    		MANAGED_POINTER does by allocating in fact a 1 byte sized pointer for
    		this particular case."
    	create: share_from_pointer, make_from_array, make_from_pointer, make

    Ancestors
    	DISPOSABLE*
    	PLATFORM

    Queries
    	boolean_bits: INTEGER_32
    	boolean_bytes: INTEGER_32
    	character_bits: INTEGER_32
    	character_bytes: INTEGER_32
    	count: INTEGER_32
    	double_bits: INTEGER_32
    	double_bytes: INTEGER_32
    	integer_16_bits: INTEGER_32
    	integer_16_bytes: INTEGER_32
    	integer_32_bits: INTEGER_32
    	integer_32_bytes: INTEGER_32
    	integer_64_bits: INTEGER_32
    	integer_64_bytes: INTEGER_32
    	integer_8_bits: INTEGER_32
    	integer_8_bytes: INTEGER_32
    	integer_bits: INTEGER_32
    	integer_bytes: INTEGER_32
    	Is_dotnet: BOOLEAN
    	is_equal (other: [like Current] MANAGED_POINTER): BOOLEAN
    	is_little_endian: BOOLEAN
    	is_shared: BOOLEAN
    	is_thread_capable: BOOLEAN
    	Is_unix: BOOLEAN
    	is_vms: BOOLEAN
    	is_windows: BOOLEAN
    	item: POINTER
    	maximum_character_code: INTEGER_32
    	maximum_integer: INTEGER_32
    	minimum_character_code: INTEGER_32
    	minimum_integer: INTEGER_32
    	natural_16_bits: INTEGER_32
    	natural_16_bytes: INTEGER_32
    	natural_32_bits: INTEGER_32
    	natural_32_bytes: INTEGER_32
    	natural_64_bits: INTEGER_32
    	natural_64_bytes: INTEGER_32
    	natural_8_bits: INTEGER_32
    	natural_8_bytes: INTEGER_32
    	pointer_bits: INTEGER_32
    	pointer_bytes: INTEGER_32
    	read_array (pos, a_count: INTEGER_32): ARRAY [NATURAL_8]
    	read_boolean (pos: INTEGER_32): BOOLEAN
    	read_character (pos: INTEGER_32): CHARACTER_8
    	read_integer_16 (pos: INTEGER_32): INTEGER_16
    	read_integer_16_be (pos: INTEGER_32): INTEGER_16
    	read_integer_16_le (pos: INTEGER_32): INTEGER_16
    	read_integer_32 (pos: INTEGER_32): INTEGER_32
    	read_integer_32_be (pos: INTEGER_32): INTEGER_32
    	read_integer_32_le (pos: INTEGER_32): INTEGER_32
    	read_integer_64 (pos: INTEGER_32): INTEGER_64
    	read_integer_64_be (pos: INTEGER_32): INTEGER_64
    	read_integer_64_le (pos: INTEGER_32): INTEGER_64
    	read_integer_8 (pos: INTEGER_32): INTEGER_8
    	read_integer_8_be (pos: INTEGER_32): INTEGER_8
    	read_integer_8_le (pos: INTEGER_32): INTEGER_8
    	read_natural_16 (pos: INTEGER_32): NATURAL_16
    	read_natural_16_be (pos: INTEGER_32): NATURAL_16
    	read_natural_16_le (pos: INTEGER_32): NATURAL_16
    	read_natural_32 (pos: INTEGER_32): NATURAL_32
    	read_natural_32_be (pos: INTEGER_32): NATURAL_32
    	read_natural_32_le (pos: INTEGER_32): NATURAL_32
    	read_natural_64 (pos: INTEGER_32): NATURAL_64
    	read_natural_64_be (pos: INTEGER_32): NATURAL_64
    	read_natural_64_le (pos: INTEGER_32): NATURAL_64
    	read_natural_8 (pos: INTEGER_32): NATURAL_8
    	read_natural_8_be (pos: INTEGER_32): NATURAL_8
    	read_natural_8_le (pos: INTEGER_32): NATURAL_8
    	read_pointer (pos: INTEGER_32): POINTER
    	read_real_32 (pos: INTEGER_32): REAL_32
    	read_real_64 (pos: INTEGER_32): REAL_64
    	real_32_bits: INTEGER_32
    	real_32_bytes: INTEGER_32
    	real_64_bits: INTEGER_32
    	real_64_bytes: INTEGER_32
    	real_bits: INTEGER_32
    	real_bytes: INTEGER_32
    	wide_character_bytes: INTEGER_32

    Commands
    	append (other: [like Current] MANAGED_POINTER)
    	copy (other: [like Current] MANAGED_POINTER)
    	put_array (data: ARRAY [NATURAL_8]; pos: INTEGER_32)
    	put_boolean (b: BOOLEAN; pos: INTEGER_32)
    	put_character (c: CHARACTER_8; pos: INTEGER_32)
    	put_integer_16 (i: INTEGER_16; pos: INTEGER_32)
    	put_integer_16_be (i: INTEGER_16; pos: INTEGER_32)
    	put_integer_16_le (i: INTEGER_16; pos: INTEGER_32)
    	put_integer_32 (i, pos: INTEGER_32)
    	put_integer_32_be (i, pos: INTEGER_32)
    	put_integer_32_le (i, pos: INTEGER_32)
    	put_integer_64 (i: INTEGER_64; pos: INTEGER_32)
    	put_integer_64_be (i: INTEGER_64; pos: INTEGER_32)
    	put_integer_64_le (i: INTEGER_64; pos: INTEGER_32)
    	put_integer_8 (i: INTEGER_8; pos: INTEGER_32)
    	put_integer_8_be (i: INTEGER_8; pos: INTEGER_32)
    	put_integer_8_le (i: INTEGER_8; pos: INTEGER_32)
    	put_natural_16 (i: NATURAL_16; pos: INTEGER_32)
    	put_natural_16_be (i: NATURAL_16; pos: INTEGER_32)
    	put_natural_16_le (i: NATURAL_16; pos: INTEGER_32)
    	put_natural_32 (i: NATURAL_32; pos: INTEGER_32)
    	put_natural_32_be (i: NATURAL_32; pos: INTEGER_32)
    	put_natural_32_le (i: NATURAL_32; pos: INTEGER_32)
    	put_natural_64 (i: NATURAL_64; pos: INTEGER_32)
    	put_natural_64_be (i: NATURAL_64; pos: INTEGER_32)
    	put_natural_64_le (i: NATURAL_64; pos: INTEGER_32)
    	put_natural_8 (i: NATURAL_8; pos: INTEGER_32)
    	put_natural_8_be (i: NATURAL_8; pos: INTEGER_32)
    	put_natural_8_le (i: NATURAL_8; pos: INTEGER_32)
    	put_pointer (p: POINTER; pos: INTEGER_32)
    	put_real_32 (r: REAL_32; pos: INTEGER_32)
    	put_real_64 (d: REAL_64; pos: INTEGER_32)
    	resize (n: INTEGER_32)
    	set_from_pointer (a_ptr: POINTER; n: INTEGER_32)

    Constraints
    	item not null
    	valid count