System DAS - Data Attachment System

Flare

Stops copies me!
Reaction score
662
Because when you use the textmacro, you generate a new attaching data global, which makes it harder to have maximum data at the same, even though that's nearly impossible... if you reached the maximum, you're fucked.
The number of macro calls won't really change limitations at all - it would allow you to associate more data with a single handle (since you have 2+ variables available for use) which shouldn't really be needed since a struct should be capable of containing everything you need, but you still have the 400000 limitation either way

You could run the macro a thousand times, but that won't change how the data is organised in the variable (since the handle's H2I value shouldn't change)
 

Flare

Stops copies me!
Reaction score
662
Well...
Are the mods lazy, or is it just me?

And why would that be? Personally, I don't think there's anything really special, or new, or better with this than every other attachment system which would make it worthy for approval* because this is, pretty much, CSData with a textmacro, and people already use ABC/CSData/HAIL/HSAS/TimerUtils/no system/whatever, so there would be no need to change to this

Also
JASS:
            $SCOPE$ integer TIMES = 0
            // Counter

You don't need a counter - you could easily replace it with
JASS:
local integer index = H2I (h) - H2I_FIRST //Or whatever the first handle index var is called
if index > MAXIMUM then
...
endif
set data[index] = d


*I assume you're talking about approval :p
 

Darius34

New Member
Reaction score
30
IIRC, the purpose of such a textmacro would be to allow association of data with any handle, as opposed to a private one only accessible to private code. It sort of allows an unlimited number of 'custom values' that a handle can be assigned to contain structs from anywhere - one 'value' per struct.

But then, the concept isn't new either. grim001's variant of CSData pretty much does the same thing:

JASS:
library DataSystem

public function H2I takes handle h returns integer
    return h
    return 0
endfunction

//! textmacro DataDeclareFast takes NAME, TYPE
globals
    $TYPE$ array DS_$NAME$
endglobals

function Set$NAME$ takes handle h, $TYPE$ v returns nothing
    set DS_$NAME$[DataSystem_H2I(h) - 0x100000] = v
endfunction

function Get$NAME$ takes handle h returns $TYPE$
    return DS_$NAME$[DataSystem_H2I(h) - 0x100000]
endfunction
//! endtextmacro

//! textmacro DataDeclare takes NAME, TYPE
globals
    $TYPE$ array DS_$NAME$[40955]
endglobals

function Set$NAME$ takes handle h, $TYPE$ v returns nothing
    set DS_$NAME$[DataSystem_H2I(h) - 0x100000] = v
endfunction

function Get$NAME$ takes handle h returns $TYPE$
    return DS_$NAME$[DataSystem_H2I(h) - 0x100000]
endfunction
//! endtextmacro

//! runtextmacro DataDeclare("Struct", "integer")

endlibrary
 

emjlr3

Change can be a good thing
Reaction score
395
i see no reason this should be approved, it in no way stands out from the plethora of other attachment systems, and actually makes things harder then they need to be
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top