Static types and Pointers

BlitzMax Forums/BlitzMax Beginners Area/Static types and Pointers

PaulJG(Posted 2005) [#1]
I've written my .X importer proggie, but I've comeup with a few problems I could do with a hand with.

1) At the mo I hold all the shape data in a static type:
Type obj_data
  
  Global num_of_verts:Int
  Global num_of_faces:Int

  Field face1:Int[80]
  Field face2:Int[80]
  Field face3:Int[80]
	
  Field vertx:Float[50]
  Field verty:Float[50]
  Field vertz:Float[50]
  
  End Type


Which of course is fine as long as it isnt a big object..

But, is it possible to use variable allocated space - when I read the file and find out the number of arrays I need to hold the data, can these be allocated/increased at runtime ?.

2) How can I pass a pointer to the object type, over to the function ? At the mo its hard coded - so it knows what object type to use.

Some advice please ;)


Beaker(Posted 2005) [#2]
1) You can increase the size of all your arrays as you need to.
2) You can pass it like this:
Function Blah(thing:Object)

Not sure why you want to.


PaulJG(Posted 2005) [#3]
ok.. I got the type passing to function thingy working, but can you give me a clue as to what commands I need to lookup for the extended allocating types stuff.

I know I can use:

Field vertx:Int[]

to make the template type, but how I'd then suddenly say I want to have space for 80 vertx coords - once its allocated ???.


Yan(Posted 2005) [#4]
I think you can just use:
teapot:obj_data = new obj_data

teapot.vertx = new int[80]
...or...
teapot.vertx = teapot.vertx[..80] - use this to 're-dim' the array too
You could also use a 'new' method or a 'create' function to do this as well.


Extron(Posted 2005) [#5]
Or also look here :
http://www.blitzbasic.com/Community/posts.php?topic=42756


PaulJG(Posted 2005) [#6]
Did the trick ! - Thankyou.