they are only represented as a ds_list or ds_map if you set the debugger to read it as a ds_map or ds_list...
But yeah... all instances, data structures, arrays and.... should be given specific index ids..
for example:
8xxxxxxxx - for instances
7xxxxxxxx - for ds_grids
6xxxxxxxx - for ds_queue
5xxxxxxxx - for ds_priority
4xxxxxxxx - for ds_stack
3xxxxxxxx - for ds_list
2xxxxxxxx - for ds_map
1xxxxxxxx - for arrays
this way the debugger would instantly know which data type to read,
unless you store the number: 800000001 in and array...
and the debugger would think the number is a instance (which could not be)
Don't think GameMaker is build with that in mind... there are only two types of vars STRING and REAL
so if you have 1 ds_list, 1 ds_map and 1 ds_grid...
they are all given the index 0...
Code:
var map = ds_map_create();
var list = ds_list_create();
var grid = ds_grid_create(3,3);
a[| 2] = 10;
now if you write:
Code:
ds_list_find_value(map, 2); // will print 10
ds_list_find_value(grid, 2); // will print 10
ds_list_find_value(list, 2); // will print 10
ds_list_find_value(0, 2); // will print 10
it will work the same as reading the list!
So... making it undefined would not solve your problem.
because you can still get it confused...
but you can make then undefined using the function I gave in the previous post
EDIT::
Going even further:
Code:
a = ds_list_create(); // reference will be 0
b = ds_list_create(); // reference will be 1
a[| 0] = 1;
b[| 0] = 10;
now:
Code:
var c = ds_list_find_value(a[|0], 0); // now c is 10!!!! because you just accessed list "b"