-
-
Save ageldama/fc8c7a14ad626bb84226de5def7c8a35 to your computer and use it in GitHub Desktop.
Uncrustify configuration inspired by Google's C++ styleguide.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <sys/socket.h> | |
#include <sys/types.h> | |
#include <netinet/in.h> | |
#include <arpa/inet.h> | |
#include <netdb.h> | |
#include <unistd.h> | |
#include <string.h> | |
#include <iostream> | |
#include <stdarg.h> | |
#include <stdio.h> | |
#include "Network.hpp" | |
#include "Channel.hpp" | |
#include "Command.hpp" | |
using namespace std; | |
namespace perlite { | |
// Destroy every channel joined on this network and close the socket connection. | |
Network::~Network() { | |
// Iterate over every channel instance and wipe it from memory. | |
for (Channel *channel : m_channels) delete channel; | |
if (m_socket) ::close(m_socket); | |
} | |
// Establish a basic blocking IPv4 TCP connection. | |
// Returns true on success, otherwise false. | |
bool Network::connect(const string& host, int port) { | |
m_host = host; | |
m_port = port; | |
struct hostent *remote_host; | |
struct sockaddr_in remote_addr; | |
m_socket = ::socket(AF_INET, SOCK_STREAM, 0); | |
memset(&remote_addr, 0, sizeof(struct sockaddr_in)); | |
if (m_socket == -1) { | |
cerr << "::socket() failed" << endl; | |
return false; | |
} | |
remote_host = ::gethostbyname(host.c_str()); | |
if (!remote_host) { | |
cerr << "::gethostbyname() failed" << endl; | |
return false; | |
} | |
remote_addr.sin_family = AF_INET; | |
remote_addr.sin_port = htons(port); | |
memcpy(&remote_addr.sin_addr, remote_host->h_addr, remote_host->h_length); | |
if (::connect(m_socket, (struct sockaddr *)&remote_addr, | |
sizeof(struct sockaddr)) == -1) { | |
cerr << "::connect() failed" << endl; | |
return false; | |
} | |
return true; | |
} | |
size_t Network::readLine(string& destination) { | |
char buffer[kMinBufferSize], tmp; | |
size_t size = 0, read = 0, i = 0; | |
for (i = 0; i < sizeof(buffer); i++) { | |
read = ::recv(m_socket, &tmp, sizeof(char), 0); | |
if ((int)read == -1) break; | |
if (tmp == '\r') continue; | |
else if (tmp == '\n') break; | |
buffer[i] = tmp; | |
size += read; | |
} | |
buffer[size] = '\0'; | |
destination = string(buffer); | |
return size; | |
} | |
size_t Network::sendCommand(const string& format, ...) { | |
va_list vargs; | |
char buffer[kMinBufferSize]; | |
size_t result = 0, length = 0; | |
va_start(vargs, format); | |
if (vsprintf(buffer, format.c_str(), vargs) < 0) return -1; | |
va_end(vargs); | |
length = strlen(buffer); | |
if (!strstr(buffer, "\r\n")) { | |
strcpy(&buffer[length], "\r\n"); | |
length += 2; | |
} | |
result = sendData(buffer, length); | |
return result; | |
} | |
size_t Network::sendData(const char *data, size_t length) { | |
int size = 0; | |
size = ::send(m_socket, data, length, 0); | |
return size; | |
} | |
void Network::disconnect() { | |
::close(m_socket); | |
m_socket = 0; | |
} | |
User * Network::getUserByNick(const string& nick) { | |
for (User *user : m_users) { | |
if (user->getNick() == nick) return user; | |
} | |
return 0; | |
} | |
Channel * Network::getChannelByName(const string& name) { | |
for (Channel *channel : m_channels) { | |
if (channel->getName() == name) return channel; | |
} | |
return 0; | |
} | |
void Network::delUser(User *user) { | |
UserTable::iterator it; | |
for (it = m_users.begin(); it < m_users.end(); it++) { | |
if (*it == user) { | |
m_users.erase(it); | |
delete user; | |
} | |
} | |
} | |
void Network::delChannel(Channel *channel) { | |
ChannelTable::iterator it; | |
for (it = m_channels.begin(); it < m_channels.end(); it++) { | |
if (*it == channel) { | |
m_channels.erase(it); | |
delete channel; | |
} | |
} | |
} | |
} // namespace perlite |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
indent_align_string=true | |
indent_braces=false | |
indent_braces_no_func=false | |
indent_brace_parent=false | |
indent_namespace=false | |
indent_extern=false | |
indent_class=true | |
indent_class_colon=true | |
indent_else_if=false | |
indent_func_call_param=false | |
indent_func_def_param=false | |
indent_func_proto_param=false | |
indent_func_class_param=false | |
indent_func_ctor_var_param=false | |
indent_template_param=false | |
indent_func_param_double=false | |
indent_relative_single_line_comments=false | |
indent_col1_comment=true | |
indent_access_spec_body=false | |
indent_paren_nl=false | |
indent_comma_paren=false | |
indent_bool_paren=false | |
indent_square_nl=false | |
indent_preserve_sql=false | |
indent_align_assign=true | |
sp_balance_nested_parens=false | |
align_keep_tabs=false | |
align_with_tabs=false | |
align_on_tabstop=false | |
align_number_left=true | |
align_func_params=true | |
align_same_func_call_params=true | |
align_var_def_colon=true | |
align_var_def_attribute=true | |
align_var_def_inline=true | |
align_right_cmt_mix=false | |
align_on_operator=true | |
align_mix_var_proto=false | |
align_single_line_func=true | |
align_single_line_brace=true | |
align_nl_cont=true | |
align_left_shift=true | |
nl_collapse_empty_body=true | |
nl_assign_leave_one_liners=false | |
nl_class_leave_one_liners=false | |
nl_enum_leave_one_liners=false | |
nl_getset_leave_one_liners=false | |
nl_func_leave_one_liners=false | |
nl_if_leave_one_liners=false | |
nl_multi_line_cond=false | |
nl_multi_line_define=false | |
nl_before_case=true | |
nl_after_case=false | |
nl_after_return=true | |
nl_after_semicolon=false | |
nl_after_brace_open=false | |
nl_after_brace_open_cmt=false | |
nl_after_vbrace_open=false | |
nl_after_brace_close=false | |
nl_define_macro=true | |
nl_squeeze_ifdef=false | |
nl_ds_struct_enum_cmt=true | |
nl_ds_struct_enum_close_brace=true | |
nl_create_if_one_liner=true | |
nl_create_for_one_liner=true | |
nl_create_while_one_liner=true | |
ls_for_split_full=false | |
ls_func_split_full=true | |
nl_after_multiline_comment=true | |
eat_blanks_after_open_brace=true | |
eat_blanks_before_close_brace=true | |
mod_pawn_semicolon=false | |
mod_full_paren_if_bool=true | |
mod_remove_extra_semicolon=true | |
mod_sort_import=false | |
mod_sort_using=false | |
mod_sort_include=false | |
mod_move_case_break=true | |
mod_remove_empty_return=true | |
cmt_indent_multi=true | |
cmt_c_group=false | |
cmt_c_nl_start=false | |
cmt_c_nl_end=false | |
cmt_cpp_group=false | |
cmt_cpp_nl_start=false | |
cmt_cpp_nl_end=false | |
cmt_cpp_to_c=false | |
cmt_star_cont=false | |
cmt_multi_check_last=true | |
cmt_insert_before_preproc=false | |
pp_indent_at_level=false | |
pp_region_indent_code=false | |
pp_if_indent_code=false | |
pp_define_at_level=false | |
indent_columns=2 | |
align_var_def_span=1 | |
align_var_def_star_style=2 | |
align_var_def_amp_style=2 | |
align_var_def_thresh=3 | |
align_var_def_gap=1 | |
align_assign_span=1 | |
align_enum_equ_span=1 | |
align_var_struct_span=1 | |
align_struct_init_span=1 | |
align_typedef_span=1 | |
align_typedef_star_style=2 | |
align_typedef_amp_style=2 | |
align_right_cmt_span=4 | |
align_right_cmt_at_col=1 | |
align_func_proto_span=3 | |
nl_end_of_file_min=1 | |
nl_func_var_def_blk=1 | |
code_width=82 | |
nl_max=3 | |
nl_after_func_proto=0 | |
nl_after_func_body=2 | |
nl_after_func_body_one_liner=2 | |
nl_before_block_comment=2 | |
nl_before_c_comment=2 | |
nl_before_cpp_comment=2 | |
nl_before_access_spec=2 | |
nl_after_access_spec=2 | |
nl_comment_func_def=1 | |
nl_after_try_catch_finally=1 | |
mod_full_brace_nl=1 | |
mod_add_long_ifdef_endif_comment=1 | |
mod_add_long_ifdef_else_comment=1 | |
cmt_width=80 | |
newlines=auto | |
indent_with_tabs=0 | |
sp_arith=add | |
sp_assign=add | |
sp_enum_assign=add | |
sp_pp_concat=add | |
sp_pp_stringify=add | |
sp_bool=add | |
sp_compare=add | |
sp_inside_paren=remove | |
sp_paren_paren=remove | |
sp_paren_brace=add | |
sp_before_ptr_star=add | |
sp_before_unnamed_ptr_star=add | |
sp_between_ptr_star=remove | |
sp_after_ptr_star=remove | |
sp_after_ptr_star_func=add | |
sp_before_ptr_star_func=remove | |
sp_before_byref=remove | |
sp_before_unnamed_byref=remove | |
sp_after_byref=add | |
sp_after_byref_func=add | |
sp_before_byref_func=remove | |
sp_after_type=add | |
sp_before_angle=remove | |
sp_inside_angle=remove | |
sp_after_angle=remove | |
sp_angle_paren=remove | |
sp_angle_word=remove | |
sp_before_sparen=add | |
sp_inside_sparen=remove | |
sp_sparen_brace=add | |
sp_special_semi=remove | |
sp_before_semi=remove | |
sp_before_semi_for=remove | |
sp_before_semi_for_empty=remove | |
sp_after_semi_for_empty=remove | |
sp_before_square=remove | |
sp_before_squares=remove | |
sp_inside_square=remove | |
sp_after_comma=add | |
sp_before_comma=remove | |
sp_after_class_colon=add | |
sp_before_class_colon=add | |
sp_before_case_colon=remove | |
sp_after_operator=remove | |
sp_after_operator_sym=remove | |
sp_after_cast=remove | |
sp_inside_paren_cast=remove | |
sp_cpp_cast_paren=remove | |
sp_sizeof_paren=remove | |
sp_inside_braces_enum=add | |
sp_inside_braces_struct=add | |
sp_inside_braces=add | |
sp_inside_braces_empty=remove | |
sp_type_func=add | |
sp_func_proto_paren=remove | |
sp_func_def_paren=remove | |
sp_inside_fparens=remove | |
sp_inside_fparen=remove | |
sp_square_fparen=remove | |
sp_fparen_brace=add | |
sp_func_call_paren=remove | |
sp_func_call_user_paren=remove | |
sp_func_class_paren=remove | |
sp_return_paren=add | |
sp_attribute_paren=remove | |
sp_defined_paren=remove | |
sp_throw_paren=remove | |
sp_macro=add | |
sp_macro_func=remove | |
sp_else_brace=add | |
sp_brace_else=add | |
sp_brace_typedef=add | |
sp_catch_brace=add | |
sp_brace_catch=add | |
sp_finally_brace=add | |
sp_brace_finally=add | |
sp_try_brace=add | |
sp_getset_brace=add | |
sp_before_dc=remove | |
sp_after_dc=remove | |
sp_not=remove | |
sp_inv=remove | |
sp_addr=remove | |
sp_member=remove | |
sp_deref=remove | |
sp_sign=remove | |
sp_incdec=remove | |
sp_before_nl_cont=remove | |
sp_after_oc_scope=remove | |
sp_after_oc_colon=remove | |
sp_before_oc_colon=remove | |
sp_after_send_oc_colon=add | |
sp_before_send_oc_colon=remove | |
sp_after_oc_type=remove | |
sp_cond_colon=add | |
sp_cond_question=add | |
sp_cmt_cpp_start=add | |
nl_end_of_file=add | |
nl_namespace_brace=remove | |
nl_class_brace=remove | |
nl_class_init_args=add | |
nl_func_decl_args=add | |
nl_before_if=add | |
nl_before_for=add | |
nl_before_while=add | |
nl_before_switch=add | |
nl_before_do=add | |
mod_full_brace_do=remove | |
mod_full_brace_for=remove | |
mod_full_brace_if=remove | |
mod_full_brace_while=remove | |
mod_paren_on_return=remove | |
pp_space=add |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment