/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* channel_utils.cpp :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: apommier +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/02/09 17:21:57 by apommier #+# #+# */ /* Updated: 2023/03/13 01:12:07 by apommier ### ########.fr */ /* */ /* ************************************************************************** */ #include "../../../includes/ft_irc.hpp" int is_chan_op(fdList &allFds, channelData *chanName, int userNbr) { std::vector::iterator start = chanName->opList.begin(); std::vector::iterator pastEnd = chanName->opList.end(); //std::cout << "name1= ---" << chanName << "---\n"; if (allFds.userData[userNbr].op) return (1); while (start != pastEnd) { //std::cout << "result in find chan = " << pastEnd - start << std::endl; //std::cout << "test = " << chanName->opList[pastEnd - start - 1]->nickname << "---\n"; if (chanName->opList[pastEnd - start - 1]->nickname == allFds.userData[userNbr].nickname) return (1); start++; } //std::cout << "chan not found in is op\n"; return (0); } int is_joined(fdList &allFds, std::string chanName, int userNbr) { std::vector::iterator start = allFds.userData[userNbr].joinedChan.begin(); std::vector::iterator pastEnd = allFds.userData[userNbr].joinedChan.end(); //std::cout << "name1= ---" << chanName << "---\n"; while (start != pastEnd) { //std::cout << "result in find chan = " << pastEnd - start << std::endl; //std::cout << "test is joined= " << allFds.userData[userNbr].joinedChan[pastEnd - start - 1]->name << "---\n"; if (allFds.userData[userNbr].joinedChan[pastEnd - start - 1]->name == chanName) return (pastEnd - start - 1); start++; } //std::cout << "chan not found in is joined\n"; return (-1); } int find_channel(fdList &allFds, std::string chanName)//return channel nbr { // std::_List_iterator start = allFds.channelList.begin(); // std::_List_iterator pastEnd = allFds.channelList.end(); // //std::cout << "name1= ---" << chanName << "---\n"; // while (start != pastEnd) // { // //std::cout << "chan = ---" << allFds.channelList[pastEnd - start - 1].name << "---" << std::endl; // //std::cout << "test = " << allFds.channelList[pastEnd - start - 1].name << "---\n"; // if (allFds.channelList[pastEnd - start - 1].name == chanName) // return (pastEnd - start - 1); // start++; // } // //std::cout << "chan not found in find \n"; // return (-1); int size = allFds.channelList.size(); for (int i = 0; i < size; i++) { if (allFds.channelList[i].name == chanName) return (i); } return (-1); } int find_user(fdList &allFds, std::string userName)//return direct user fd { // std::_List_iterator start = allFds.userData.begin(); // std::_List_iterator pastEnd = allFds.userData.end(); // //std::cout << "name1= ---" << userName << "---\n"; // while (start != pastEnd) // { // //std::cout << "result in find user = " << pastEnd - start << std::endl; // //std::cout << "name2= ---" << allFds.userData[pastEnd - start - 1].nickname << "---\n"; // if (allFds.userData[pastEnd - start - 1].nickname == userName) // return (pastEnd - start - 1); // start++; // } // //std::cout << "user not found\n"; // return (-1); int size = allFds.userData.size(); for (int i = 0; i < size; i++) { if (allFds.userData[i].nickname == userName) return (i); } return (-1); } int is_in_same(fdList &allFds, int userNbr, int userNbr2) { size_t size; if (userNbr < 0 || userNbr2 < 0) return (0); if (allFds.userData[userNbr].joinedChan.size() <= allFds.userData[userNbr2].joinedChan.size()) size = allFds.userData[userNbr].joinedChan.size(); else size = allFds.userData[userNbr2].joinedChan.size(); for (size_t i = 0; i < size; i++) { for (size_t j = 0; j < size; j++) { if (allFds.userData[userNbr].joinedChan[i] == allFds.userData[userNbr2].joinedChan[j]) return (1); } } return (0); } // int is_in_same(fdList &allFds, int userNbr, int userNbr2) // { // size_t size; // if (allFds.userData[userNbr].joinedChan.size() <= allFds.userData[userNbr2].joinedChan.size()) // size = allFds.userData[userNbr].joinedChan.size(); // else // size = allFds.userData[userNbr2].joinedChan.size(); // for (size_t i = 0; i < size; i++) // { // for (size_t j = 0; j < size; j++) // { // if (allFds.userData[userNbr].joinedChan[i] == allFds.userData[userNbr2].joinedChan[j]) // return (1); // } // } // return (0); // }