summaryrefslogtreecommitdiff |
diff options
author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2018-12-21 17:23:56 +0100 |
---|---|---|
committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2018-12-21 17:23:56 +0100 |
commit | a81ff643a823dde57ebd0ed5da8a91fb75d32267 (patch) | |
tree | dc7dd9e17bb380d05d446b10e7630db340c5998e /src/roster/struct/rst_roster.erl | |
parent | c69fe90821bba84c70b020a2504fe4ed63072158 (diff) |
Removes any use of arrays.
Diffstat (limited to 'src/roster/struct/rst_roster.erl')
-rw-r--r-- | src/roster/struct/rst_roster.erl | 69 |
1 files changed, 25 insertions, 44 deletions
diff --git a/src/roster/struct/rst_roster.erl b/src/roster/struct/rst_roster.erl index 6371878..90b2f98 100644 --- a/src/roster/struct/rst_roster.erl +++ b/src/roster/struct/rst_roster.erl @@ -10,7 +10,7 @@ roster, { owner :: binary(), - characters :: array:array(rst_character:type()) + characters :: orddict:orddict(non_neg_integer(), rst_character:type()) } ). @@ -30,10 +30,7 @@ get_character/2, set_characters/2, - set_character/3, - - add_character/2, - remove_character/2 + set_character/3 ] ). @@ -62,13 +59,22 @@ -spec get_owner (type()) -> binary(). get_owner (Roster) -> Roster#roster.owner. --spec get_characters (type()) -> array:array(rst_character:type()). +-spec get_characters + ( + type() + ) + -> orddict:orddict(non_neg_integer(), rst_character:type()). get_characters (Roster) -> Roster#roster.characters. -spec get_character (non_neg_integer(), type()) -> rst_character:type(). -get_character (IX, Roster) -> array:get(IX, Roster#roster.characters). +get_character (IX, Roster) -> orddict:fetch(IX, Roster#roster.characters). --spec set_characters (array:array(rst_character:type()), type()) -> type(). +-spec set_characters + ( + orddict:orddict(non_neg_integer(), rst_character:type()), + type() + ) + -> type(). set_characters (Characters, Roster) -> Roster#roster{ characters = Characters }. -spec set_character @@ -81,32 +87,7 @@ set_characters (Characters, Roster) -> Roster#roster{ characters = Characters }. set_character (IX, Character, Roster) -> Roster#roster { - characters = array:set(IX, Character, Roster#roster.characters) - }. - --spec add_character (rst_character:type(), type()) -> type(). -add_character (Character, Roster) -> - CurrentCharacters = Roster#roster.characters, - CurrentSize = array:size(CurrentCharacters), - - Roster#roster - { - characters = array:set(CurrentSize, Character, CurrentCharacters) - }. - --spec remove_character (non_neg_integer(), type()) -> type(). -remove_character (IX, Roster) -> - CurrentCharacters = Roster#roster.characters, - CurrentSize = array:size(CurrentCharacters), - NewSize = (CurrentSize - 1), - LastCharacter = array:get(NewSize, CurrentCharacters), - - S0Characters = array:set(IX, LastCharacter, CurrentCharacters), - S1Characters = array:resize(NewSize, S0Characters), - - Roster#roster - { - characters = S1Characters + characters = orddict:store(IX, Character, Roster#roster.characters) }. -spec get_characters_field () -> non_neg_integer(). @@ -119,18 +100,18 @@ new (Owner) -> { owner = Owner, characters = - array:from_list + orddict:from_list ( [ - NewChar, - NewChar, - NewChar, - NewChar, - - NewChar, - NewChar, - NewChar, - NewChar + {0, NewChar}, + {1, NewChar}, + {2, NewChar}, + {3, NewChar}, + + {4, NewChar}, + {5, NewChar}, + {6, NewChar}, + {7, NewChar} ] ) }. |