Number of instances of a type
Blitz3D Forums/Blitz3D Beginners Area/Number of instances of a type| 
 | ||
| I know this is probaly really easy, but I want to know if theres an easy way to get the amount of instances in a type. I mean if I have a type called thing, I want to know how many things there are. | 
| 
 | ||
| After alternate help, I have solved the problem, I'll do it by adding it up. the way I was going to:P | 
| 
 | ||
| Just a thought.... If types are actually allocated using some kind of reference counting and/or standard library list functions, there might be a way of using thing.Last - thing.First and dividing by the size of the type to calculate the number without having to iterate through the list. I don't think we have a sizeof() function, but there might be ways of calculating it for a given 'thing' if speed was going to be an issue. Anyone tried anything like this ?? | 
| 
 | ||
| You can use a function for counting all Things: Type Thing Field Name$ End Type SeedRnd MilliSecs() ; Create a random number of Thing's For i = 1 To Rand(10,100) temppointer.Thing = New Thing Next Print CountThings() WaitKey() End Function CountThings() Local Count ; Loop through all Thing's and count them For temppointer.Thing = Each Thing Count = Count + 1 Next Return Count End Function | 
| 
 | ||
| Why waste time looping.  Just use a Global variable to keep track and add 1 when using New and subtract 1 when using Delete.  That's what an internal type counter would do anyways. | 
| 
 | ||
|  If types are actually allocated using some kind of reference counting and/or standard library list functions, there might be a way of using thing.Last - thing.First and dividing by the size of the type to calculate the number without having to iterate through the list.  Unfortunately, this method can't/shouldn't be used as type instances aren't necessarily allocated contiguously in memory. Instead, each type instance is linked via forward/backward pointers which can be accessed using the Before/After commands. |