Bmax code style

BlitzMax Forums/BlitzMax Beginners Area/Bmax code style

verfum(Posted 2008) [#1]
Hi, I'm trying to write some C++ code from an example peice of code from this forum but I'm stuck, can someone tell me what this is doing?
Local array:Int[10]

For a:int = 0 to 10
     Local type:TType = TType( array[a] )
Next



I can't figure out what the type:TType is doing, what is it doing here TType(array[a]) ?? in C++ that would be a constructor!

Thanks.


Brucey(Posted 2008) [#2]
Must be one of the worst examples you can find :-)

You'll get an ArrayOutOfBounds with that loop for starters...
"type" is not a valid variable name.
TType() looks like a cast, but it is also defined as a Type. It might be a function too, but I'm not sure you can do that.
Certainly you won't be able to cast from int to a type, with much success!


verfum(Posted 2008) [#3]
HAHA Yeah I know of the code errors.

Ah, so it could be a cast of somekind?
It's just so bloody vague?!


tonyg(Posted 2008) [#4]
... but isn't it vague due to poor variable names and dodgy coding? Where did you get the example from?


verfum(Posted 2008) [#5]
Yep the code example was too vague for an answer, it's basically from what I can tell a c++ type_cast to loop though inherited/derived types in a list to find the Type you want, so in Bmax you do this, roughly:
For local ent:Entity = EachIn entity_list
     Local player:Player = Player(ent)  ' Player is derived from Entity
     '  Do some player code
Next

and my conversion in C++
list<Entity*>::iterator iter;

for(iter = entity_list->begin(); iter != entity_list->end(); iter++)
{
      Player* player = dynamic_cast<Player*>(*iter);
      // Do some player code
}



SSS(Posted 2009) [#6]
But you can more succinctly just write,

for local ent:Player = EachIn entity_list
'do stuff
next


even if entity_list contains objects that are not of type "player".