51 } |
51 } |
52 return -1; |
52 return -1; |
53 } |
53 } |
54 |
54 |
55 int flib_teamlist_insert(flib_teamlist *list, flib_team *team, int pos) { |
55 int flib_teamlist_insert(flib_teamlist *list, flib_team *team, int pos) { |
56 if(!list || !team) { |
56 if(!log_badargs_if2(list==NULL, team==NULL) |
57 flib_log_e("null parameter in flib_teamlist_insert"); |
57 && !insertTeam(&list->teams, &list->teamCount, team, pos)) { |
58 } else if(!insertTeam(&list->teams, &list->teamCount, team, pos)) { |
|
59 flib_team_retain(team); |
58 flib_team_retain(team); |
60 return 0; |
59 return 0; |
61 } |
60 } |
62 return -1; |
61 return -1; |
63 } |
62 } |
64 |
63 |
65 int flib_teamlist_delete(flib_teamlist *list, const char *name) { |
64 int flib_teamlist_delete(flib_teamlist *list, const char *name) { |
66 int result = -1; |
65 int result = -1; |
67 if(!list || !name) { |
66 if(!log_badargs_if2(list==NULL, name==NULL)) { |
68 flib_log_e("null parameter in flib_teamlist_delete"); |
|
69 } else { |
|
70 int itemid = findTeam(list, name); |
67 int itemid = findTeam(list, name); |
71 if(itemid>=0) { |
68 if(itemid>=0) { |
72 flib_team *team = list->teams[itemid]; |
69 flib_team *team = list->teams[itemid]; |
73 if(!deleteTeam(&list->teams, &list->teamCount, itemid)) { |
70 if(!deleteTeam(&list->teams, &list->teamCount, itemid)) { |
74 flib_team_release(team); |
71 flib_team_release(team); |
79 return result; |
76 return result; |
80 } |
77 } |
81 |
78 |
82 flib_team *flib_teamlist_find(const flib_teamlist *list, const char *name) { |
79 flib_team *flib_teamlist_find(const flib_teamlist *list, const char *name) { |
83 flib_team *result = NULL; |
80 flib_team *result = NULL; |
84 if(!list || !name) { |
81 if(!log_badargs_if2(list==NULL, name==NULL)) { |
85 flib_log_e("null parameter in flib_teamlist_find"); |
|
86 } else { |
|
87 int itemid = findTeam(list, name); |
82 int itemid = findTeam(list, name); |
88 if(itemid>=0) { |
83 if(itemid>=0) { |
89 result = list->teams[itemid]; |
84 result = list->teams[itemid]; |
90 } |
85 } |
91 } |
86 } |
92 return result; |
87 return result; |
93 } |
88 } |
94 |
89 |
95 void flib_teamlist_clear(flib_teamlist *list) { |
90 void flib_teamlist_clear(flib_teamlist *list) { |
96 if(!list) { |
91 if(!log_badargs_if(list==NULL)) { |
97 flib_log_e("null parameter in flib_teamlist_clear"); |
|
98 } else { |
|
99 for(int i=0; i<list->teamCount; i++) { |
92 for(int i=0; i<list->teamCount; i++) { |
100 flib_team_release(list->teams[i]); |
93 flib_team_release(list->teams[i]); |
101 } |
94 } |
102 free(list->teams); |
95 free(list->teams); |
103 list->teams = NULL; |
96 list->teams = NULL; |
104 list->teamCount = 0; |
97 list->teamCount = 0; |
105 } |
98 } |
106 } |
99 } |
|
100 |
|
101 flib_teamlist *flib_teamlist_copy(flib_teamlist *list) { |
|
102 if(!list) { |
|
103 return NULL; |
|
104 } |
|
105 flib_teamlist *result = flib_teamlist_create(); |
|
106 if(result) { |
|
107 bool error = false; |
|
108 for(int i=0; !error && i<list->teamCount; i++) { |
|
109 flib_team *teamcopy = flib_team_copy(list->teams[i]); |
|
110 if(!teamcopy) { |
|
111 error = true; |
|
112 } else { |
|
113 error |= flib_teamlist_insert(result, teamcopy, i); |
|
114 } |
|
115 flib_team_release(teamcopy); |
|
116 } |
|
117 if(error) { |
|
118 flib_teamlist_destroy(result); |
|
119 result = NULL; |
|
120 } |
|
121 } |
|
122 return result; |
|
123 } |