project_files/frontlib/model/roomlist.c
changeset 7316 f7b49b2c5d84
parent 7314 6171f0bad318
equal deleted inserted replaced
7314:6171f0bad318 7316:f7b49b2c5d84
    84 	return -1;
    84 	return -1;
    85 }
    85 }
    86 
    86 
    87 int flib_roomlist_add(flib_roomlist *list, char **params) {
    87 int flib_roomlist_add(flib_roomlist *list, char **params) {
    88 	int result = -1;
    88 	int result = -1;
    89 	if(!list || !params) {
    89 	if(!log_badargs_if2(list==NULL, params==NULL)) {
    90 		flib_log_e("null parameter in flib_roomlist_add");
       
    91 	} else {
       
    92 		flib_room *tmpRoom = fillRoomFromParams(params);
    90 		flib_room *tmpRoom = fillRoomFromParams(params);
    93 		if(tmpRoom) {
    91 		if(tmpRoom) {
    94 			if(!insertRoom(&list->rooms, &list->roomCount, tmpRoom, 0)) {
    92 			if(!insertRoom(&list->rooms, &list->roomCount, tmpRoom, 0)) {
    95 				tmpRoom = NULL;
    93 				tmpRoom = NULL;
    96 				result = 0;
    94 				result = 0;
   101 	return result;
    99 	return result;
   102 }
   100 }
   103 
   101 
   104 int flib_roomlist_delete(flib_roomlist *list, const char *name) {
   102 int flib_roomlist_delete(flib_roomlist *list, const char *name) {
   105 	int result = -1;
   103 	int result = -1;
   106 	if(!list || !name) {
   104 	if(!log_badargs_if2(list==NULL, name==NULL)) {
   107 		flib_log_e("null parameter in flib_roomlist_delete");
       
   108 	} else {
       
   109 		int roomid = findRoom(list, name);
   105 		int roomid = findRoom(list, name);
   110 		if(roomid<0) {
   106 		if(roomid<0) {
   111 			flib_log_w("Attempt to delete unknown room %s", name);
   107 			flib_log_w("Attempt to delete unknown room %s", name);
   112 		} else {
   108 		} else {
   113 			flib_room *room = list->rooms[roomid];
   109 			flib_room *room = list->rooms[roomid];
   120 	return result;
   116 	return result;
   121 }
   117 }
   122 
   118 
   123 int flib_roomlist_update(flib_roomlist *list, const char *name, char **params) {
   119 int flib_roomlist_update(flib_roomlist *list, const char *name, char **params) {
   124 	int result = -1;
   120 	int result = -1;
   125 	if(!list || !name || !params) {
   121 	if(!log_badargs_if3(list==NULL, name==NULL, params==NULL)) {
   126 		flib_log_e("null parameter in flib_roomlist_update");
       
   127 	} else {
       
   128 		flib_room *tmpRoom = fillRoomFromParams(params);
   122 		flib_room *tmpRoom = fillRoomFromParams(params);
   129 		int roomid = findRoom(list, name);
   123 		int roomid = findRoom(list, name);
   130 		if(tmpRoom && roomid>=0) {
   124 		if(tmpRoom && roomid>=0) {
   131 			flib_roomlist_room_destroy(list->rooms[roomid]);
   125 			flib_roomlist_room_destroy(list->rooms[roomid]);
   132 			list->rooms[roomid] = tmpRoom;
   126 			list->rooms[roomid] = tmpRoom;
   138 	return result;
   132 	return result;
   139 }
   133 }
   140 
   134 
   141 flib_room *flib_roomlist_find(const flib_roomlist *list, const char *name) {
   135 flib_room *flib_roomlist_find(const flib_roomlist *list, const char *name) {
   142 	flib_room *result = NULL;
   136 	flib_room *result = NULL;
   143 	if(!list || !name) {
   137 	if(!log_badargs_if2(list==NULL, name==NULL)) {
   144 		flib_log_e("null parameter in flib_roomlist_find");
       
   145 	} else {
       
   146 		int roomid = findRoom(list, name);
   138 		int roomid = findRoom(list, name);
   147 		if(roomid>=0) {
   139 		if(roomid>=0) {
   148 			result = list->rooms[roomid];
   140 			result = list->rooms[roomid];
   149 		}
   141 		}
   150 	}
   142 	}
   151 	return result;
   143 	return result;
   152 }
   144 }
   153 
   145 
   154 void flib_roomlist_clear(flib_roomlist *list) {
   146 void flib_roomlist_clear(flib_roomlist *list) {
   155 	if(!list) {
   147 	if(!log_badargs_if(list==NULL)) {
   156 		flib_log_e("null parameter in flib_roomlist_clear");
       
   157 	} else {
       
   158 		for(int i=0; i<list->roomCount; i++) {
   148 		for(int i=0; i<list->roomCount; i++) {
   159 			flib_roomlist_room_destroy(list->rooms[i]);
   149 			flib_roomlist_room_destroy(list->rooms[i]);
   160 		}
   150 		}
   161 		free(list->rooms);
   151 		free(list->rooms);
   162 		list->rooms = NULL;
   152 		list->rooms = NULL;