| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'src/roster/struct')
| -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}              ]           )     }. | 


