Snippet Extended 2D Array

kingkingyyk3

Visitor (Welcome to the Jungle, Baby!)
Reaction score
216
vJass Edition :
JASS:
///////////////////////////////////////////////
//    ___   ___    ___  
//  /  _ | |   \  / _ \  __   __   __   _  _
//  |_|/ / | || | ||_|| | _| | _| |  | ||_||
//   / /_  | || | | _ | ||   ||   |||| |__ |
//  |____| |___/  || || ||   ||   |_ \  __||
//
//  Extended 2D Array (vJass)
//
//  present by kingking
//
//  How to use?
//  //! textmacro 2DArray takes PREFIX, NAME, TYPE, LOAD
//  Here is the textmacro to let you play with it.
//  PREFIX -> private/public/nothing
//  NAME -> the variable's name
//  TYPE -> the type of variable
//  LOAD -> Functions of hashtable to store and get data. For integer, you need "Integer".
//
//  Example :
//  I need a 2d integer array vars in my library!
//  //! runtextmacro 2DArray("private","XnY","integer","Integer")
//  I need another 2d unit array vars!
//  //! runtextmacro 2DArray("private","Creeps","unit","UnitHandle")
//
//  -Pros- :
//  1) Practically unlimited array index.(Max value = 2^32)
//
//  -Cons- :
//  2) Generate a hashtable on every 2d variables.
////////////////////////////////////////////////
library ExtendedTwoDimensionalArray
    
    //! textmacro 2DArray takes PREFIX, NAME, TYPE, LOAD
    $PREFIX$ struct $NAME$
        private static hashtable ht
        
        method operator [] takes integer i returns $TYPE$
            return Load$LOAD$(thistype.ht,this,i)
        endmethod
        
        method operator []= takes integer i, unit value returns nothing
            call Save$LOAD$(thistype.ht,this,i,value)
        endmethod
        
        static method operator [] takes integer i returns thistype
            return i
        endmethod
        
        private static method onInit takes nothing returns nothing
            set thistype.ht = InitHashtable()
        endmethod
    endstruct
    //! endtextmacro

endlibrary


Zinc Edition :
JASS:
///////////////////////////////////////////////
//    ___   ___    ___  
//  /  _ | |   \  / _ \  __   __   __   _  _
//  |_|/ / | || | ||_|| | _| | _| |  | ||_||
//   / /_  | || | | _ | ||   ||   |||| |__ |
//  |____| |___/  || || ||   ||   |_ \  __||
//
//  Extended 2D Array (Zinc)
//
//  present by kingking
//
//  How to use?
//  //! textmacro 2DArray takes PREFIX, NAME, TYPE, LOAD
//  Here is the textmacro to let you play with it.
//  PREFIX -> private/public/nothing
//  NAME -> the variable's name
//  TYPE -> the type of variable
//  LOAD -> Functions of hashtable to store and get data. For integer, you need "Integer".
//
//  Example :
//  I need a 2d integer array vars in my library!
//  //! runtextmacro 2DArray("private","XnY","integer","Integer")
//  I need another 2d unit array vars!
//  //! runtextmacro 2DArray("private","Creeps","unit","UnitHandle")
//
//  -Pros- :
//  1) Practically unlimited array index.
//
//  -Cons- :
//  2) Generate a hashtable on every 2d variables.
////////////////////////////////////////////////
//! zinc
library ExtendedTwoDimensionalArray
{
    //! textmacro 2DArray takes PREFIX, NAME, TYPE, LOAD
    $PREFIX$ struct $NAME$
    {
        private static hashtable ht ;
        
        method operator[] (integer i) -> $TYPE$
        {
            return Load$LOAD$(thistype.ht,this,i);
        }
        
        method operator[]= (integer i, $TYPE$ value)
        {
            Save$LOAD$(thistype.ht,this,i,value);
        }
        
        static method operator[] (integer i) -> thistype
        {
            return i;
        }
        
        private static method onInit()
        {
            thistype.ht = InitHashtable();
        }

    }
    //! endtextmacro

}
//! endzinc
 

Hatebreeder

So many apples
Reaction score
381
Extended Arrays are nice, but I don't see any use in it since I've never used something more than one Dimensional arrays.

Might be good to create a physics system or a Vector System, but other than that, it's completly... Useless?
 

kingkingyyk3

Visitor (Welcome to the Jungle, Baby!)
Reaction score
216
I was playing around with the array. I found jasshelper's 2d array is quite limited. It does not allow me to have x*y > 409550. So, I did this little thingy for big 2d array.
 

Romek

Super Moderator
Reaction score
963
This is useless...
It's just a wrapper for hashtables.
 

Trollvottel

never aging title
Reaction score
262
Extended Arrays are nice, but I don't see any use in it since I've never used something more than one Dimensional arrays.

Might be good to create a physics system or a Vector System, but other than that, it's completly... Useless?

where would you need it in a physics system? :p
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top