System Simulated Hashtable

kingkingyyk3

Visitor (Welcome to the Jungle, Baby!)
Reaction score
216
>>You started off with v1, then v1 beta, now you're on alpha... o_O
First 2 versions are pre-v1.

>>Why?
Removed in new version

>>Also, there's a collision if I do something like this:
It should works well in new version without any collision.

Beta is released!
 

Romek

Super Moderator
Reaction score
963
> First 2 versions are pre-v1.
All alpha and betas are pre-v1.
v1 -> Beta -> Alpha -> Beta again. Great. :rolleyes:

Why the retarded naming convention in the StorageStruct?

JASS:
    local StorageStruct H = GetStoredInteger(TABLE,I2S(parent),I2S(child))
    return H.i[ht]

Could be:
JASS:
    return StorageStruct(GetStoredInteger(TABLE,I2S(parent),I2S(child))).i[ht]


Also, how about something like this, to avoid the horrible arrays?
JASS:
.
    function SaveInteger takes hashtable table, integer parentKey, integer childKey, integer value returns nothing
        call StoreInteger(hashtable.gc, SubString(I2S(integer(table)) + "____", 0, 4) + I2S(parentKey), I2S(childKey), value)
    endfunction
    
    function LoadInteger takes hashtable table, integer parentKey, integer childKey returns integer
        return GetStoredInteger(hashtable.gc, SubString(I2S(integer(table)) + "____", 0, 4) + I2S(parentKey), I2S(childKey))
    endfunction
 

kingkingyyk3

Visitor (Welcome to the Jungle, Baby!)
Reaction score
216
v1 -> Beta -> Alpha -> Beta again. Great.
:p

Also, how about something like this, to avoid the horrible arrays?
Fixed.

See the new v1.

~Bump~
 
Reaction score
91
> People living in certain countries still can't download it.
Where the hell are you living then? o_O
I'm sure you can find an original CD Key and update your Warcraft through Westfall or just wait for a formal release of it and download it from Blizzard's site.
 

T.s.e

Wish I was old and a little sentimental
Reaction score
133
Yes. It can corrupt the handle index, giving two handles the same id.
 

Jesus4Lyf

Good Idea™
Reaction score
397
What a dumb thing to say without explaining to users how to use it "properly". Do you know how to use it properly? I don't know how to use it properly. Is it used properly in your system? Does it effect how users should use your system?

There's a much better alternative, anyway...
JASS:
struct UnitStruct
    unit u
endstruct

For each unit to store, attach a struct wrapper of it. It's safe. :D
 

kingkingyyk3

Visitor (Welcome to the Jungle, Baby!)
Reaction score
216
What a dumb thing to say without explaining to users how to use it "properly". Do you know how to use it properly? I don't know how to use it properly. Is it used properly in your system? Does it effect how users should use your system?

There's a much better alternative, anyway...
JASS:
struct UnitStruct
    unit u
endstruct

For each unit to store, attach a struct wrapper of it. It's safe. :D

Okay. I will improve it.

Yeah, isn't it also faster than I2H?
I2H vs array, which is faster? I think you know it.
 

kingkingyyk3

Visitor (Welcome to the Jungle, Baby!)
Reaction score
216
Well, when I start editing the code... I found it is no need to change since it uses different strings on different handles.

Classic example :

Attach unit to hashtable :

Assume : hashtable's id : 30, timer id's : 104852, unit's id : 102222

The system will attaches to gamecache by using :
Mission key -> 104852_30_UnitData
key -> 1

It is safe.
 

Jesus4Lyf

Good Idea™
Reaction score
397
Yeah, isn't it also faster than I2H?
I2H vs array, which is faster? I think you know it.
I don't know what you were insinuating, but arrays are definitely faster.

Your explanation has nothing to do with safety of handle stack corruption. What are you on about?

Change your code for both or either reason, or I say +Graveyard vote. -_-

Seriously, I2H is a noob's way of doing things. It's not fast or stable, kingking...
 

Jesus4Lyf

Good Idea™
Reaction score
397
Cool.
JASS:
function Load$Type$Handle takes hashtable ht, integer parent, integer child returns $type$
    return $Type$Data(GetStoredInteger(TABLE,I2S(parent)+"_"+I2S(ht)+"$Type$Data",I2S(child))).h
    return null
endfunction

No return null, then this should inline.

And your FlushHashtable thing doesn't appear to flush anything. Just destroys the struct... <_<
 

kingkingyyk3

Visitor (Welcome to the Jungle, Baby!)
Reaction score
216
And your FlushHashtable thing doesn't appear to flush anything. Just destroys the struct... <_<
Huh? If I put flushing here, I should need a history storing record...
 

Troll-Brain

You can change this now in User CP.
Reaction score
85
I'm just wondering, will it be finished one day, before the official patch release ?
 
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