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