mirror of
https://github.com/etlegacy/etlegacy-tools.git
synced 2024-12-03 17:31:53 +00:00
etlist: first working version. Receives just one packet.
This commit is contained in:
parent
b2916b1e74
commit
a89d06c8fd
6 changed files with 1307 additions and 0 deletions
7
.gitignore
vendored
Normal file
7
.gitignore
vendored
Normal file
|
@ -0,0 +1,7 @@
|
|||
/build/
|
||||
/obj/
|
||||
*.sh
|
||||
*.kdev4
|
||||
*~
|
||||
/Makefile
|
||||
/*.make
|
10
etlist/CMakeLists.txt
Normal file
10
etlist/CMakeLists.txt
Normal file
|
@ -0,0 +1,10 @@
|
|||
cmake_minimum_required(VERSION 2.8)
|
||||
project(etlist)
|
||||
|
||||
# Dependencies
|
||||
Find_Package(Boost REQUIRED COMPONENTS system program_options) # Specifying 'asio' doesn't work
|
||||
Find_Package(Threads) # asio dependency
|
||||
|
||||
add_executable(etlist connection.cpp main.cpp)
|
||||
|
||||
target_link_libraries(etlist ${Boost_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
|
194
etlist/connection.cpp
Normal file
194
etlist/connection.cpp
Normal file
|
@ -0,0 +1,194 @@
|
|||
/*
|
||||
* ET: Legacy
|
||||
* Copyright (C) 2012 Jan Simek <mail@etlegacy.com>
|
||||
*
|
||||
* This file is part of ET: Legacy - http://www.etlegacy.com
|
||||
*
|
||||
* ET: Legacy is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* ET: Legacy is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with ET: Legacy. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "connection.h"
|
||||
|
||||
Connection::Connection(std::string server_name, int server_port /*=27960*/,
|
||||
std::string message /*=getstatus*/)
|
||||
: socket_(io_service_), resolver_(io_service_), deadline_(io_service_)
|
||||
{
|
||||
udp::resolver::query query(udp::v4(), server_name,
|
||||
boost::lexical_cast<std::string>(server_port));
|
||||
udp::endpoint receiver_endpoint = *resolver_.resolve(query);
|
||||
|
||||
socket_.open(udp::v4());
|
||||
socket_.send_to(boost::asio::buffer(wrap_message(message), 1024),
|
||||
receiver_endpoint);
|
||||
|
||||
// Set to positive infinity so that there's no action until a specific
|
||||
// deadline is set.
|
||||
deadline_.expires_at(boost::posix_time::pos_infin);
|
||||
|
||||
// Start the persistent actor that checks for deadline expiry.
|
||||
check_deadline();
|
||||
}
|
||||
|
||||
/*
|
||||
* @brief Wraps messages into the Quake III protocol format
|
||||
*/
|
||||
std::string Connection::wrap_message(std::string message)
|
||||
{
|
||||
// NOTE: master server doesn't react to a message terminated with 0xfa
|
||||
return std::string(4, 0xff) + message + std::string(1, 0xfa);
|
||||
}
|
||||
|
||||
std::size_t Connection::ReceiveMessage(
|
||||
const boost::asio::mutable_buffer& buffer,
|
||||
boost::posix_time::time_duration timeout,
|
||||
boost::system::error_code& ec)
|
||||
{
|
||||
deadline_.expires_from_now(timeout);
|
||||
ec = boost::asio::error::would_block;
|
||||
std::size_t length = 0;
|
||||
|
||||
// Start the asynchronous operation itself. The handle_receive function
|
||||
// used as a callback will update the ec and length variables.
|
||||
socket_.async_receive(boost::asio::buffer(buffer),
|
||||
boost::bind(&Connection::handle_receive, _1, _2,
|
||||
&ec, &length));
|
||||
|
||||
// Block until the asynchronous operation has completed.
|
||||
do
|
||||
io_service_.run_one();
|
||||
while (ec == boost::asio::error::would_block);
|
||||
|
||||
return length;
|
||||
}
|
||||
|
||||
void Connection::handle_receive(
|
||||
const boost::system::error_code& ec, std::size_t length,
|
||||
boost::system::error_code *out_ec, std::size_t *out_length)
|
||||
{
|
||||
*out_ec = ec;
|
||||
*out_length = length;
|
||||
}
|
||||
|
||||
void Connection::check_deadline()
|
||||
{
|
||||
// Check whether the deadline has passed. We compare the deadline against
|
||||
// the current time since a new asynchronous operation may have moved the
|
||||
// deadline before this actor had a chance to run.
|
||||
if (deadline_.expires_at() <= boost::asio::deadline_timer::traits_type::now())
|
||||
{
|
||||
// The deadline has passed. The outstanding asynchronous operation needs
|
||||
// to be cancelled so that the blocked receive() function will return.
|
||||
//
|
||||
// Please note that cancel() has portability issues on some versions of
|
||||
// Microsoft Windows, and it may be necessary to use close() instead.
|
||||
// Consult the documentation for cancel() for further information.
|
||||
socket_.cancel();
|
||||
|
||||
// There is no longer an active deadline. The expiry is set to positive
|
||||
// infinity so that the actor takes no action until a new deadline is set.
|
||||
deadline_.expires_at(boost::posix_time::pos_infin);
|
||||
}
|
||||
|
||||
// Put the actor back to sleep.
|
||||
deadline_.async_wait(boost::bind(&Connection::check_deadline, this));
|
||||
}
|
||||
|
||||
void Connection::ParseMessage(std::string recv_msg)
|
||||
{
|
||||
// recv_msg.erase(recv_msg.find('\0'), recv_msg.npos);
|
||||
size_t headerEnd = recv_msg.find('\n');
|
||||
|
||||
// Omit OOB from the packet name
|
||||
std::cout << "Parsing " <<
|
||||
recv_msg.substr(4, headerEnd - 4) << " packet.... ";
|
||||
|
||||
std::map<std::string, std::string> recv_tokens;
|
||||
|
||||
std::string key, value;
|
||||
size_t tokenStart = 0;
|
||||
size_t tokenEnd = 0;
|
||||
|
||||
for (;; )
|
||||
{
|
||||
/*
|
||||
* Search for a key
|
||||
*/
|
||||
tokenStart = recv_msg.find('\\', tokenEnd++);
|
||||
tokenEnd = recv_msg.find('\\', ++tokenStart);
|
||||
|
||||
// No more keys
|
||||
if (tokenStart == std::string::npos)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
// Key without a value
|
||||
if (tokenEnd == std::string::npos)
|
||||
{
|
||||
key = recv_msg.substr(tokenStart,
|
||||
recv_msg.length() - tokenStart);
|
||||
recv_tokens[key] = "";
|
||||
std::cout << "Warning: adding a key with empty value." << std::endl;
|
||||
break;
|
||||
}
|
||||
|
||||
key = recv_msg.substr(tokenStart, tokenEnd - tokenStart);
|
||||
|
||||
/*
|
||||
* Search for a value
|
||||
*/
|
||||
tokenStart = recv_msg.find('\\', tokenEnd++);
|
||||
tokenEnd = recv_msg.find('\\', ++tokenStart);
|
||||
|
||||
// No more values
|
||||
if (tokenStart == std::string::npos)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
// Value is not at the end
|
||||
if (tokenEnd != std::string::npos)
|
||||
{
|
||||
value = recv_msg.substr(tokenStart, tokenEnd - tokenStart);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Last value
|
||||
value = recv_msg.substr(tokenStart, recv_msg.length() - tokenStart);
|
||||
}
|
||||
|
||||
/*
|
||||
* Store key->value pair in a map
|
||||
*/
|
||||
recv_tokens[key] = value;
|
||||
|
||||
// FIXME: This should not happen, but it does. Why?
|
||||
if (tokenStart >= recv_msg.length() || tokenEnd >= recv_msg.length())
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Display key->value pairs
|
||||
*/
|
||||
std::cout << recv_tokens.size() << " variables paired" << std::endl << std::endl;
|
||||
|
||||
std::map <std::string, std::string>::iterator it;
|
||||
for (it = recv_tokens.begin(); it != recv_tokens.end(); ++it)
|
||||
{
|
||||
std::cout << std::setw(22) << it->first << ": " << it->second <<
|
||||
std::endl;
|
||||
}
|
||||
}
|
57
etlist/connection.h
Normal file
57
etlist/connection.h
Normal file
|
@ -0,0 +1,57 @@
|
|||
/*
|
||||
* ET: Legacy
|
||||
* Copyright (C) 2012 Jan Simek <mail@etlegacy.com>
|
||||
*
|
||||
* This file is part of ET: Legacy - http://www.etlegacy.com
|
||||
*
|
||||
* ET: Legacy is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* ET: Legacy is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with ET: Legacy. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include <iomanip> // using 'setw'
|
||||
|
||||
#include <boost/asio.hpp>
|
||||
#include <boost/asio/deadline_timer.hpp>
|
||||
#include <boost/program_options.hpp>
|
||||
#include <boost/lexical_cast.hpp>
|
||||
#include <boost/bind.hpp>
|
||||
|
||||
using boost::asio::ip::udp;
|
||||
|
||||
class Connection
|
||||
{
|
||||
public:
|
||||
Connection(std::string server_name = "etlegacy.com",
|
||||
int server_port = 27960,
|
||||
std::string message = "getstatus");
|
||||
|
||||
std::size_t ReceiveMessage(const boost::asio::mutable_buffer& buffer,
|
||||
boost::posix_time::time_duration timeout,
|
||||
boost::system::error_code& ec);
|
||||
void ParseMessage(std::string recv_msg);
|
||||
private:
|
||||
boost::asio::io_service io_service_;
|
||||
boost::asio::ip::udp::socket socket_;
|
||||
boost::asio::deadline_timer deadline_;
|
||||
boost::asio::ip::udp::resolver resolver_;
|
||||
|
||||
std::string wrap_message(std::string message);
|
||||
|
||||
void check_deadline();
|
||||
static void handle_receive(
|
||||
const boost::system::error_code& ec, std::size_t length,
|
||||
boost::system::error_code *out_ec, std::size_t *out_length);
|
||||
};
|
110
etlist/main.cpp
Normal file
110
etlist/main.cpp
Normal file
|
@ -0,0 +1,110 @@
|
|||
/*
|
||||
* ET: Legacy
|
||||
* Copyright (C) 2012 Jan Simek <mail@etlegacy.com>
|
||||
*
|
||||
* This file is part of ET: Legacy - http://www.etlegacy.com
|
||||
*
|
||||
* ET: Legacy is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* ET: Legacy is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with ET: Legacy. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
|
||||
#include <boost/asio.hpp>
|
||||
#include <boost/program_options.hpp>
|
||||
#include <boost/lexical_cast.hpp>
|
||||
|
||||
#include "connection.h"
|
||||
|
||||
using boost::asio::ip::udp;
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
try
|
||||
{
|
||||
/**
|
||||
* Program options
|
||||
*/
|
||||
boost::program_options::options_description desc("[OPTIONS]");
|
||||
desc.add_options()
|
||||
("help,h", "show this message")
|
||||
("server,s", boost::program_options::value<std::string>(),
|
||||
"server to query")
|
||||
("port,p",
|
||||
boost::program_options::value<unsigned int>()->default_value(27960),
|
||||
"port on the server")
|
||||
("message,m",
|
||||
boost::program_options::value<std::string>()->default_value("getstatus"),
|
||||
"message to be sent")
|
||||
("raw,r", "don't parse the server response")
|
||||
;
|
||||
boost::program_options::variables_map var_map;
|
||||
boost::program_options::store(boost::program_options::parse_command_line(argc, argv, desc), var_map);
|
||||
boost::program_options::notify(var_map);
|
||||
|
||||
if (var_map.count("help"))
|
||||
{
|
||||
std::cout << desc << std::endl;
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
else if (!var_map.count("server"))
|
||||
{
|
||||
std::cerr << "Usage: " << argv[0] << " -s <server>" << std::endl;
|
||||
std::cerr << "Append -h or --help to see all program options." << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Send the request
|
||||
*/
|
||||
Connection client(var_map["server"].as<std::string>(),
|
||||
var_map["port"].as<unsigned int>(),
|
||||
var_map["message"].as<std::string>());
|
||||
|
||||
char data[1024];
|
||||
boost::system::error_code ec;
|
||||
std::size_t n = client.ReceiveMessage(boost::asio::buffer(data),
|
||||
boost::posix_time::seconds(10),
|
||||
ec);
|
||||
|
||||
if (ec)
|
||||
{
|
||||
std::cout << "Receive error: " << ec.message() << std::endl;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (var_map.count("raw"))
|
||||
{
|
||||
std::cout.write(data, n);
|
||||
}
|
||||
else
|
||||
{
|
||||
client.ParseMessage(std::string(data, n));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (std::exception& e)
|
||||
{
|
||||
std::cerr << "Exception caught: " << e.what() << std::endl;
|
||||
// return 1;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
std::cerr << "Exception of unknown type!" << std::endl;
|
||||
// return 1;
|
||||
}
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
929
etlist/uncrustify.cfg
Normal file
929
etlist/uncrustify.cfg
Normal file
|
@ -0,0 +1,929 @@
|
|||
# Uncrustify 0.44
|
||||
|
||||
#
|
||||
# General options
|
||||
#
|
||||
|
||||
# The type of line endings
|
||||
newlines = lf # auto/lf/crlf/cr
|
||||
|
||||
# The original size of tabs in the input
|
||||
input_tab_size = 4 # number
|
||||
|
||||
# The size of tabs in the output (only used if align_with_tabs=true)
|
||||
output_tab_size = 4 # number
|
||||
|
||||
# The ascii value of the string escape char, usually 92 (\) or 94 (^). (Pawn)
|
||||
string_escape_char = 92 # number
|
||||
|
||||
# Alternate string escape char for Pawn. Only works right before the quote char.
|
||||
string_escape_char2 = 0 # number
|
||||
|
||||
#
|
||||
# Indenting
|
||||
#
|
||||
|
||||
# The number of columns to indent per level.
|
||||
# Usually 2, 3, 4, or 8.
|
||||
indent_columns = 4 # number
|
||||
|
||||
# How to use tabs when indenting code
|
||||
# 0=spaces only
|
||||
# 1=indent with tabs, align with spaces
|
||||
# 2=indent and align with tabs
|
||||
indent_with_tabs = 1 # number
|
||||
|
||||
# Whether to indent strings broken by '\' so that they line up
|
||||
indent_align_string = true # false/true
|
||||
|
||||
# The number of spaces to indent multi-line XML strings.
|
||||
# Requires indent_align_string=True
|
||||
indent_xml_string = 0 # number
|
||||
|
||||
# Spaces to indent '{' from level
|
||||
indent_brace = 0 # number
|
||||
|
||||
# Whether braces are indented to the body level
|
||||
indent_braces = false # false/true
|
||||
|
||||
# Disabled indenting function braces if indent_braces is true
|
||||
indent_braces_no_func = false # false/true
|
||||
|
||||
# Indent based on the size of the brace parent, ie 'if' => 3 spaces, 'for' => 4 spaces, etc.
|
||||
indent_brace_parent = false # false/true
|
||||
|
||||
# Whether the 'namespace' body is indented
|
||||
indent_namespace = false # false/true
|
||||
|
||||
# Whether the 'class' body is indented
|
||||
indent_class = true # false/true
|
||||
|
||||
# Whether to indent the stuff after a leading class colon
|
||||
indent_class_colon = false # false/true
|
||||
|
||||
# True: indent continued function call parameters one indent level
|
||||
# False: align parameters under the open paren
|
||||
indent_func_call_param = false # false/true
|
||||
|
||||
# Same as indent_func_call_param, but for function defs
|
||||
indent_func_def_param = false # false/true
|
||||
|
||||
# Same as indent_func_call_param, but for function protos
|
||||
indent_func_proto_param = false # false/true
|
||||
|
||||
# Same as indent_func_call_param, but for class declarations
|
||||
indent_func_class_param = false # false/true
|
||||
|
||||
# Same as indent_func_call_param, but for class variable constructors
|
||||
indent_func_ctor_var_param = false # false/true
|
||||
|
||||
# Double the indent for indent_func_xxx_param options
|
||||
indent_func_param_double = false # false/true
|
||||
|
||||
# The number of spaces to indent a continued '->' or '.'
|
||||
# Usually set to 0, 1, or indent_columns.
|
||||
indent_member = 0 # number
|
||||
|
||||
# Spaces to indent single line ('//') comments on lines before code
|
||||
indent_sing_line_comments = 0 # number
|
||||
|
||||
# Spaces to indent 'case' from 'switch'
|
||||
# Usually 0 or indent_columns.
|
||||
indent_switch_case = 0 # number
|
||||
|
||||
# Spaces to shift the 'case' line, without affecting any other lines
|
||||
# Usually 0.
|
||||
indent_case_shift = 0 # number
|
||||
|
||||
# Spaces to indent '{' from 'case'.
|
||||
# By default, the brace will appear under the 'c' in case.
|
||||
# Usually set to 0 or indent_columns.
|
||||
indent_case_brace = 0 # number
|
||||
|
||||
# Whether to indent comments found in first column
|
||||
indent_col1_comment = false # false/true
|
||||
|
||||
# How to indent goto labels
|
||||
# >0 : absolute column where 1 is the leftmost column
|
||||
# <=0 : subtract from brace indent
|
||||
indent_label = 1 # number
|
||||
|
||||
# Same as indent_label, but for access specifiers that are followed by a colon
|
||||
indent_access_spec = 1 # number
|
||||
|
||||
# If an open paren is followed by a newline, indent the next line so that it lines up after the open paren (not recommended)
|
||||
indent_paren_nl = false # false/true
|
||||
|
||||
# Controls the indent of a close paren after a newline.
|
||||
# 0: Indent to body level
|
||||
# 1: Align under the open paren
|
||||
# 2: Indent to the brace level
|
||||
indent_paren_close = 0 # number
|
||||
|
||||
# Controls the indent of a comma when inside a paren.If TRUE, aligns under the open paren
|
||||
indent_comma_paren = false # false/true
|
||||
|
||||
# Controls the indent of a BOOL operator when inside a paren.If TRUE, aligns under the open paren
|
||||
indent_bool_paren = false # false/true
|
||||
|
||||
# If an open square is followed by a newline, indent the next line so that it lines up after the open square (not recommended)
|
||||
indent_square_nl = false # false/true
|
||||
|
||||
# Don't change the relative indent of ESQL/C 'EXEC SQL' bodies
|
||||
indent_preserve_sql = false # false/true
|
||||
|
||||
#
|
||||
# Spacing options
|
||||
#
|
||||
|
||||
# Add or remove space around arithmetic operator '+', '-', '/', '*', etc
|
||||
sp_arith = add # ignore/add/remove/force
|
||||
|
||||
# Add or remove space around assignment operator '=', '+=', etc
|
||||
sp_assign = force # ignore/add/remove/force
|
||||
|
||||
# Add or remove space around boolean operators '&&' and '||'
|
||||
sp_bool = add # ignore/add/remove/force
|
||||
|
||||
# Add or remove space around compare operator '<', '>', '==', etc
|
||||
sp_compare = add # ignore/add/remove/force
|
||||
|
||||
# Add or remove space inside '(' and ')'
|
||||
sp_inside_paren = remove # ignore/add/remove/force
|
||||
|
||||
# Add or remove space between nested parens
|
||||
sp_paren_paren = remove # ignore/add/remove/force
|
||||
|
||||
# Whether to balance spaces inside nested parens
|
||||
sp_balance_nested_parens = false # false/true
|
||||
|
||||
# Add or remove space between ')' and '{'
|
||||
sp_paren_brace = add # ignore/add/remove/force
|
||||
|
||||
# Add or remove space before pointer star '*'
|
||||
sp_before_ptr_star = force # ignore/add/remove/force
|
||||
|
||||
# Add or remove space between pointer stars '*'
|
||||
sp_between_ptr_star = remove # ignore/add/remove/force
|
||||
|
||||
# Add or remove space after pointer star '*', if followed by a word.
|
||||
sp_after_ptr_star = remove # ignore/add/remove/force
|
||||
|
||||
# Add or remove space before reference sign '&'
|
||||
sp_before_byref = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove space after reference sign '&', if followed by a word.
|
||||
sp_after_byref = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove space before '<>'
|
||||
sp_before_angle = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove space after '<>'
|
||||
sp_after_angle = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove space between '<>' and '(' as found in 'new List<byte>();'
|
||||
sp_angle_paren = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove space between '<>' and a word as in 'List<byte> m;'
|
||||
sp_angle_word = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove space before '(' of 'if', 'for', 'switch', and 'while'
|
||||
sp_before_sparen = add # ignore/add/remove/force
|
||||
|
||||
# Add or remove space inside if-condition '(' and ')'
|
||||
sp_inside_sparen = remove # ignore/add/remove/force
|
||||
|
||||
# Add or remove space after ')' of 'if', 'for', 'switch', and 'while'
|
||||
sp_after_sparen = add # ignore/add/remove/force
|
||||
|
||||
# Add or remove space between ')' and '{' of 'if', 'for', 'switch', and 'while'
|
||||
sp_sparen_brace = add # ignore/add/remove/force
|
||||
|
||||
# Add or remove space before empty statement ';' on 'if', 'for' and 'while'
|
||||
sp_special_semi = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove space before ';'
|
||||
sp_before_semi = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove space before ';' in non-empty 'for' statements
|
||||
sp_before_semi_for = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove space before a semicolon of an empty part of a for statment.
|
||||
sp_before_semi_for_empty = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove space after the final semicolon of an empty part of a for statment: for ( ; ; <here> ).
|
||||
sp_after_semi_for_empty = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove space before '[' (except '[]')
|
||||
sp_before_square = remove # ignore/add/remove/force
|
||||
|
||||
# Add or remove space before '[]'
|
||||
sp_before_squares = remove # ignore/add/remove/force
|
||||
|
||||
# Add or remove space inside '[' and ']'
|
||||
sp_inside_square = remove # ignore/add/remove/force
|
||||
|
||||
# Add or remove space after ','
|
||||
sp_after_comma = force # ignore/add/remove/force
|
||||
|
||||
# Add or remove space before ','
|
||||
sp_before_comma = remove # ignore/add/remove/force
|
||||
|
||||
# Add or remove space between 'operator' and operator sign
|
||||
sp_after_operator = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove space after cast
|
||||
sp_after_cast = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove spaces inside cast parens
|
||||
sp_inside_paren_cast = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove space between 'sizeof' and '('
|
||||
sp_sizeof_paren = remove # ignore/add/remove/force
|
||||
|
||||
# Add or remove space after the tag keyword (Pawn)
|
||||
sp_after_tag = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove space inside enum '{' and '}'
|
||||
sp_inside_braces_enum = force # ignore/add/remove/force
|
||||
|
||||
# Add or remove space inside struct/union '{' and '}'
|
||||
sp_inside_braces_struct = force # ignore/add/remove/force
|
||||
|
||||
# Add or remove space inside '{' and '}'
|
||||
sp_inside_braces = force # ignore/add/remove/force
|
||||
|
||||
# Add or remove space inside '<' and '>'
|
||||
sp_inside_angle = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove space between return type and function name
|
||||
# A minimum of 1 is forced except for pointer return types.
|
||||
sp_type_func = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove space between function name and '(' on function declaration
|
||||
sp_func_proto_paren = remove # ignore/add/remove/force
|
||||
|
||||
# Add or remove space between function name and '(' on function definition
|
||||
sp_func_def_paren = remove # ignore/add/remove/force
|
||||
|
||||
# Add or remove space inside empty function '()'
|
||||
sp_inside_fparens = remove # ignore/add/remove/force
|
||||
|
||||
# Add or remove space inside function '(' and ')'
|
||||
sp_inside_fparen = remove # ignore/add/remove/force
|
||||
|
||||
# Add or remove space between ']' and '(' when part of a function call.
|
||||
sp_square_fparen = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove space between ')' and '{' of function
|
||||
sp_fparen_brace = add # ignore/add/remove/force
|
||||
|
||||
# Add or remove space between function name and '(' on function calls
|
||||
sp_func_call_paren = remove # ignore/add/remove/force
|
||||
|
||||
# Add or remove space between a constructor/destructor and the open paren
|
||||
sp_func_class_paren = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove space between 'return' and '('
|
||||
sp_return_paren = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove space between '__attribute__' and '('
|
||||
sp_attribute_paren = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove space between macro and value
|
||||
sp_macro = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove space between macro function ')' and value
|
||||
sp_macro_func = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove space between 'else' and '{' if on the same line
|
||||
sp_else_brace = add # ignore/add/remove/force
|
||||
|
||||
# Add or remove space between '}' and 'else' if on the same line
|
||||
sp_brace_else = add # ignore/add/remove/force
|
||||
|
||||
# Add or remove space between 'catch' and '{' if on the same line
|
||||
sp_catch_brace = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove space between '}' and 'catch' if on the same line
|
||||
sp_brace_catch = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove space between 'finally' and '{' if on the same line
|
||||
sp_finally_brace = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove space between '}' and 'finally' if on the same line
|
||||
sp_brace_finally = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove space between 'try' and '{' if on the same line
|
||||
sp_try_brace = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove space between get/set and '{' if on the same line
|
||||
sp_getset_brace = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove space before the '::' operator
|
||||
sp_before_dc = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove space after the '::' operator
|
||||
sp_after_dc = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove around the D named array initializer ':' operator
|
||||
sp_d_array_colon = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove space after the '!' (not) operator.
|
||||
sp_not = remove # ignore/add/remove/force
|
||||
|
||||
# Add or remove space after the '~' (invert) operator.
|
||||
sp_inv = remove # ignore/add/remove/force
|
||||
|
||||
# Add or remove space after the '&' (address-of) operator.
|
||||
# This does not affect the spacing after a '&' that is part of a type.
|
||||
sp_addr = remove # ignore/add/remove/force
|
||||
|
||||
# Add or remove space around the '.' or '->' operators
|
||||
sp_member = remove # ignore/add/remove/force
|
||||
|
||||
# Add or remove space after the '*' (dereference) operator.
|
||||
# This does not affect the spacing after a '*' that is part of a type.
|
||||
sp_deref = remove # ignore/add/remove/force
|
||||
|
||||
# Add or remove space after '+' or '-', as in 'x = -5' or 'y = +7'
|
||||
sp_sign = remove # ignore/add/remove/force
|
||||
|
||||
# Add or remove space before or after '++' and '--', as in '(--x)' or 'y++;'
|
||||
sp_incdec = remove # ignore/add/remove/force
|
||||
|
||||
# Add or remove space after the scope '+' or '-', as in '-(void) foo;' or '+(int) bar;'
|
||||
sp_after_oc_scope = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove space after the colon in message specs
|
||||
# '-(int) f: (int) x;' vs '+(int) f : (int) x;'
|
||||
sp_before_oc_colon = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove space after the (type) in message specs
|
||||
# '-(int) f: (int) x;' vs '+(int)f : (int)x;'
|
||||
sp_after_oc_type = ignore # ignore/add/remove/force
|
||||
|
||||
#
|
||||
# Code alignment (not left column spaces/tabs)
|
||||
#
|
||||
|
||||
# Whether to keep non-indenting tabs
|
||||
align_keep_tabs = false # false/true
|
||||
|
||||
# Whether to use tabs for alinging
|
||||
align_with_tabs = false # false/true
|
||||
|
||||
# Whether to bump out to the next tab when aligning
|
||||
align_on_tabstop = false # false/true
|
||||
|
||||
# Whether to left-align numbers
|
||||
align_number_left = false # false/true
|
||||
|
||||
# Align variable definitions in prototypes and functions
|
||||
align_func_params = false # false/true
|
||||
|
||||
# The span for aligning variable definitions (0=don't align)
|
||||
align_var_def_span = 1 # number
|
||||
|
||||
# How to align the star in variable definitions.
|
||||
# 0=Part of the type
|
||||
# 1=Part of the variable
|
||||
# 2=Dangling
|
||||
align_var_def_star_style = 1 # number
|
||||
|
||||
# How to align the '&' in variable definitions.
|
||||
# 0=Part of the type
|
||||
# 1=Part of the variable
|
||||
# 2=Dangling
|
||||
align_var_def_amp_style = 1 # number
|
||||
|
||||
# The threshold for aligning variable definitions (0=no limit)
|
||||
align_var_def_thresh = 0 # number
|
||||
|
||||
# Whether to align the colon in struct bit fields
|
||||
align_var_def_colon = false # false/true
|
||||
|
||||
# Whether to align inline struct/enum/union variable definitions
|
||||
align_var_def_inline = false # false/true
|
||||
|
||||
# The span for aligning on '=' in assignments (0=don't align)
|
||||
align_assign_span = 1 # number
|
||||
|
||||
# The threshold for aligning on '=' in assignments (0=no limit)
|
||||
align_assign_thresh = 0 # number
|
||||
|
||||
# The span for aligning on '=' in enums (0=don't align)
|
||||
align_enum_equ_span = 1 # number
|
||||
|
||||
# The threshold for aligning on '=' in enums (0=no limit)
|
||||
align_enum_equ_thresh = 0 # number
|
||||
|
||||
# The span for aligning struct/union (0=don't align)
|
||||
align_var_struct_span = 0 # number
|
||||
|
||||
# The threshold for aligning struct/union member definitions (0=no limit)
|
||||
align_var_struct_thresh = 0 # number
|
||||
|
||||
# The span for aligning struct initializer values (0=don't align)
|
||||
align_struct_init_span = 1 # number
|
||||
|
||||
# The minimum space between the type and the synonym of a typedef
|
||||
align_typedef_gap = 0 # number
|
||||
|
||||
# The span for aligning single-line typedefs (0=don't align)
|
||||
align_typedef_span = 0 # number
|
||||
|
||||
# How to align typedef'd functions with other typedefs
|
||||
# 0: Don't mix them at all
|
||||
# 1: align the open paren with the types
|
||||
# 2: align the function type name with the other type names
|
||||
align_typedef_func = 0 # number
|
||||
|
||||
# Controls the positioning of the '*' in typedefs. Just try it.
|
||||
# 0: Align on typdef type, ignore '*'
|
||||
# 1: The '*' is part of type name: typedef int *pint;
|
||||
# 2: The '*' is part of the type, but dangling: typedef int *pint;
|
||||
align_typedef_star_style = 0 # number
|
||||
|
||||
# Controls the positioning of the '&' in typedefs. Just try it.
|
||||
# 0: Align on typdef type, ignore '&'
|
||||
# 1: The '&' is part of type name: typedef int &pint;
|
||||
# 2: The '&' is part of the type, but dangling: typedef int &pint;
|
||||
align_typedef_amp_style = 0 # number
|
||||
|
||||
# The span for aligning comments that end lines (0=don't align)
|
||||
align_right_cmt_span = 0 # number
|
||||
|
||||
# If aligning comments, mix with comments after '}' and #endif with less than 3 spaces before the comment
|
||||
align_right_cmt_mix = false # false/true
|
||||
|
||||
# The span for aligning function prototypes (0=don't align)
|
||||
align_func_proto_span = 0 # number
|
||||
|
||||
# The span for aligning function prototypes (0=don't align)
|
||||
align_oc_msg_spec_span = 0 # number
|
||||
|
||||
# Whether to align macros wrapped with a backslash and a newline.
|
||||
# This will not work right if the macro contains a multi-line comment.
|
||||
align_nl_cont = false # false/true
|
||||
|
||||
# The minimum space between label and value of a preprocessor define
|
||||
align_pp_define_gap = 0 # number
|
||||
|
||||
# The span for aligning on '#define' bodies (0=don't align)
|
||||
align_pp_define_span = 0 # number
|
||||
|
||||
#
|
||||
# Newline adding and removing options
|
||||
#
|
||||
|
||||
# Whether to collapse empty blocks between '{' and '}'
|
||||
nl_collapse_empty_body = false # false/true
|
||||
|
||||
# Don't split one-line braced assignments - 'foo_t f = { 1, 2 };'
|
||||
nl_assign_leave_one_liners = true # false/true
|
||||
|
||||
# Don't split one-line braced statements inside a class xx { } body
|
||||
nl_class_leave_one_liners = false # false/true
|
||||
|
||||
# Don't split one-line enums: 'enum foo { BAR = 15 };'
|
||||
nl_enum_leave_one_liners = false # false/true
|
||||
|
||||
# Don't split one-line get or set functions
|
||||
nl_getset_leave_one_liners = false # false/true
|
||||
|
||||
# Don't split one-line function definitions - 'int foo() { return 0; }'
|
||||
nl_func_leave_one_liners = false # false/true
|
||||
|
||||
# Don't split one-line if/else statements - 'if(a) b++;'
|
||||
nl_if_leave_one_liners = false # false/true
|
||||
|
||||
# Add or remove newlines at the start of the file
|
||||
nl_start_of_file = ignore # ignore/add/remove/force
|
||||
|
||||
# The number of newlines at the start of the file (only used if nl_start_of_file is 'add' or 'force'
|
||||
nl_start_of_file_min = 0 # number
|
||||
|
||||
# Add or remove newline at the end of the file
|
||||
nl_end_of_file = add # ignore/add/remove/force
|
||||
|
||||
# The number of newlines at the end of the file (only used if nl_end_of_file is 'add' or 'force')
|
||||
nl_end_of_file_min = 0 # number
|
||||
|
||||
# Add or remove newline between '=' and '{'
|
||||
nl_assign_brace = force # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline between '=' and '[' (D only)
|
||||
nl_assign_square = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline after '= [' (D only). Will also affect the newline before the ']'
|
||||
nl_after_square_assign = ignore # ignore/add/remove/force
|
||||
|
||||
# The number of newlines after a block of variable definitions
|
||||
nl_func_var_def_blk = 0 # number
|
||||
|
||||
# Add or remove newline between a function call's ')' and '{', as in:
|
||||
# list_for_each(item, &list) { }
|
||||
nl_fcall_brace = force # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline between 'enum' and '{'
|
||||
nl_enum_brace = force # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline between 'struct and '{'
|
||||
nl_struct_brace = force # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline between 'union' and '{'
|
||||
nl_union_brace = force # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline between 'if' and '{'
|
||||
nl_if_brace = force # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline between '}' and 'else'
|
||||
nl_brace_else = force # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline between 'else if' and '{'
|
||||
# If set to ignore, nl_if_brace is used instead
|
||||
nl_elseif_brace = force # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline between 'else' and '{'
|
||||
nl_else_brace = force # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline between '}' and 'finally'
|
||||
nl_brace_finally = force # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline between 'finally' and '{'
|
||||
nl_finally_brace = force # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline between 'try' and '{'
|
||||
nl_try_brace = force # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline between get/set and '{'
|
||||
nl_getset_brace = force # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline between 'for' and '{'
|
||||
nl_for_brace = force # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline between 'catch' and '{'
|
||||
nl_catch_brace = force # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline between '}' and 'catch'
|
||||
nl_brace_catch = force # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline between 'while' and '{'
|
||||
nl_while_brace = force # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline between 'do' and '{'
|
||||
nl_do_brace = force # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline between '}' and 'while' of 'do' statement
|
||||
nl_brace_while = force # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline between 'switch' and '{'
|
||||
nl_switch_brace = force # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline when condition spans two or more lines
|
||||
nl_multi_line_cond = false # false/true
|
||||
|
||||
# Force a newline in a define after the macro name for multi-line defines.
|
||||
nl_multi_line_define = false # false/true
|
||||
|
||||
# Whether to put a newline before 'case' statement
|
||||
nl_before_case = false # false/true
|
||||
|
||||
# Whether to put a newline after 'case' statement
|
||||
nl_after_case = false # false/true
|
||||
|
||||
# Newline between namespace and {
|
||||
nl_namespace_brace = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline between 'template<>' and 'class'
|
||||
nl_template_class = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline between 'class' and '{'
|
||||
nl_class_brace = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline after each ',' in the constructor member initialization
|
||||
nl_class_init_args = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline between return type and function name in definition
|
||||
nl_func_type_name = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline between return type and function name in a prototype
|
||||
nl_func_proto_type_name = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline between a function name and the opening '('
|
||||
nl_func_paren = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline after '(' in a function declaration
|
||||
nl_func_decl_start = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline after each ',' in a function declaration
|
||||
nl_func_decl_args = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline before the ')' in a function declaration
|
||||
nl_func_decl_end = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline between function signature and '{'
|
||||
nl_fdef_brace = force # ignore/add/remove/force
|
||||
|
||||
# Whether to put a newline after 'return' statement
|
||||
nl_after_return = false # false/true
|
||||
|
||||
# Whether to put a newline after semicolons, except in 'for' statements
|
||||
nl_after_semicolon = false # false/true
|
||||
|
||||
# Whether to put a newline after brace open.
|
||||
# This also adds a newline before the matching brace close.
|
||||
nl_after_brace_open = false # false/true
|
||||
|
||||
# If nl_after_brace_open and nl_after_brace_open_cmt are true, a newline is
|
||||
# placed between the open brace and a trailing single-line comment.
|
||||
nl_after_brace_open_cmt = false # false/true
|
||||
|
||||
# Whether to put a newline after a virtual brace open.
|
||||
# These occur in un-braced if/while/do/for statement bodies.
|
||||
nl_after_vbrace_open = false # false/true
|
||||
|
||||
# Whether to alter newlines in '#define' macros
|
||||
nl_define_macro = false # false/true
|
||||
|
||||
# Whether to not put blanks after '#ifxx', '#elxx', or before '#endif'
|
||||
nl_squeeze_ifdef = false # false/true
|
||||
|
||||
# Add or remove newline before 'if'
|
||||
nl_before_if = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline after 'if'
|
||||
nl_after_if = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline before 'for'
|
||||
nl_before_for = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline after 'for'
|
||||
nl_after_for = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline before 'while'
|
||||
nl_before_while = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline after 'while'
|
||||
nl_after_while = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline before 'switch'
|
||||
nl_before_switch = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline after 'switch'
|
||||
nl_after_switch = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline before 'do'
|
||||
nl_before_do = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove newline after 'do'
|
||||
nl_after_do = ignore # ignore/add/remove/force
|
||||
|
||||
# Whether to double-space commented-entries in struct/enum
|
||||
nl_ds_struct_enum_cmt = false # false/true
|
||||
|
||||
# Whether to double-space before the close brace of a struct/union/enum
|
||||
nl_ds_struct_enum_close_brace = false # false/true
|
||||
|
||||
# Add or remove a newline around a class colon.
|
||||
# Related to pos_class_colon, nl_class_init_args, and pos_comma.
|
||||
nl_class_colon = ignore # ignore/add/remove/force
|
||||
|
||||
# Change simple unbraced if statements into a one-liner
|
||||
# 'if(b)\n i++;' => 'if(b) i++;'
|
||||
nl_create_if_one_liner = true # false/true
|
||||
|
||||
# Change simple unbraced for statements into a one-liner
|
||||
# 'for (i=0;i<5;i++)\n foo(i);' => 'for (i=0;i<5;i++) foo(i);'
|
||||
nl_create_for_one_liner = false # false/true
|
||||
|
||||
# Change simple unbraced while statements into a one-liner
|
||||
# 'while (i<5)\n foo(i++);' => 'while (i<5) foo(i++);'
|
||||
nl_create_while_one_liner = false # false/true
|
||||
|
||||
#
|
||||
# Positioning options
|
||||
#
|
||||
|
||||
# The position of boolean operators in wrapped expressions
|
||||
pos_bool = ignore # ignore/lead/trail
|
||||
|
||||
# The position of the comma in wrapped expressions
|
||||
pos_comma = ignore # ignore/lead/trail
|
||||
|
||||
# The position of the comma in the constructor initialization list
|
||||
pos_class_comma = ignore # ignore/lead/trail
|
||||
|
||||
# The position of colons between constructor and member initialization
|
||||
pos_class_colon = ignore # ignore/lead/trail
|
||||
|
||||
#
|
||||
# Line Splitting options
|
||||
#
|
||||
|
||||
# Try to limit code width to N number of columns
|
||||
code_width = 0 # number
|
||||
|
||||
# Whether to fully split long 'for' statements at semi-colons
|
||||
ls_for_split_full = false # false/true
|
||||
|
||||
# Whether to fully split long function protos/calls at commas
|
||||
ls_func_split_full = false # false/true
|
||||
|
||||
#
|
||||
# Blank line options
|
||||
#
|
||||
|
||||
# The maximum consecutive newlines
|
||||
nl_max = 0 # number
|
||||
|
||||
# The number of newlines after a function prototype, if followed by another function prototype
|
||||
nl_after_func_proto = 0 # number
|
||||
|
||||
# The number of newlines after a function prototype, if not followed by another function prototype
|
||||
nl_after_func_proto_group = 0 # number
|
||||
|
||||
# The number of newlines after '}' of a multi-line function body
|
||||
nl_after_func_body = 0 # number
|
||||
|
||||
# The number of newlines after '}' of a single line function body
|
||||
nl_after_func_body_one_liner = 0 # number
|
||||
|
||||
# The minimum number of newlines before a multi-line comment.
|
||||
# Doesn't apply if after a brace open or another multi-line comment.
|
||||
nl_before_block_comment = 0 # number
|
||||
|
||||
# The minimum number of newlines before a single-line C comment.
|
||||
# Doesn't apply if after a brace open or other single-line C comments.
|
||||
nl_before_c_comment = 0 # number
|
||||
|
||||
# The minimum number of newlines before a CPP comment.
|
||||
# Doesn't apply if after a brace open or other CPP comments.
|
||||
nl_before_cpp_comment = 0 # number
|
||||
|
||||
# Whether to force a newline after a mulit-line comment.
|
||||
nl_after_multiline_comment = false # false/true
|
||||
|
||||
# The number of newlines before a 'private:', 'public:', 'protected:', 'signals:', or 'slots:' label.
|
||||
# Will not change the newline count if after a brace open.
|
||||
# 0 = No change.
|
||||
nl_before_access_spec = 1 # number
|
||||
|
||||
# The number of newlines after a 'private:', 'public:', 'protected:', 'signals:', or 'slots:' label.
|
||||
# 0 = No change.
|
||||
nl_after_access_spec = 0 # number
|
||||
|
||||
# Whether to remove blank lines after '{'
|
||||
eat_blanks_after_open_brace = false # false/true
|
||||
|
||||
# Whether to remove blank lines before '}'
|
||||
eat_blanks_before_close_brace = false # false/true
|
||||
|
||||
#
|
||||
# Code modifying options (non-whitespace)
|
||||
#
|
||||
|
||||
# Add or remove braces on single-line 'do' statement
|
||||
mod_full_brace_do = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove braces on single-line 'for' statement
|
||||
mod_full_brace_for = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove braces on single-line function defintions. (Pawn)
|
||||
mod_full_brace_function = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove braces on single-line 'if' statement
|
||||
mod_full_brace_if = add # ignore/add/remove/force
|
||||
|
||||
# Don't remove braces around statements that span N newlines
|
||||
mod_full_brace_nl = 0 # number
|
||||
|
||||
# Add or remove braces on single-line 'while' statement
|
||||
mod_full_brace_while = ignore # ignore/add/remove/force
|
||||
|
||||
# Add or remove unnecessary paren on 'return' statement
|
||||
mod_paren_on_return = ignore # ignore/add/remove/force
|
||||
|
||||
# Whether to change optional semicolons to real semicolons
|
||||
mod_pawn_semicolon = false # false/true
|
||||
|
||||
# Add parens on 'while' and 'if' statement around bools
|
||||
mod_full_paren_if_bool = false # false/true
|
||||
|
||||
# Whether to remove superfluous semicolons
|
||||
mod_remove_extra_semicolon = false # false/true
|
||||
|
||||
# If a function body exceeds the specified number of newlines and doesn't have a comment after
|
||||
# the close brace, a comment will be added.
|
||||
mod_add_long_function_closebrace_comment = 0 # number
|
||||
|
||||
# If a switch body exceeds the specified number of newlines and doesn't have a comment after
|
||||
# the close brace, a comment will be added.
|
||||
mod_add_long_switch_closebrace_comment = 0 # number
|
||||
|
||||
# If TRUE, will sort consecutive single-line 'import' statements [Java, D]
|
||||
mod_sort_import = false # false/true
|
||||
|
||||
# If TRUE, will sort consecutive single-line 'using' statements [C#]
|
||||
mod_sort_using = false # false/true
|
||||
|
||||
# If TRUE, will sort consecutive single-line '#include' statements [C/C++] and '#import' statements [Obj-C]
|
||||
# This is generally a bad idea, as it may break your code.
|
||||
mod_sort_include = false # false/true
|
||||
|
||||
#
|
||||
# Comment modifications
|
||||
#
|
||||
|
||||
# Try to wrap comments at cmt_witdth columns
|
||||
cmt_width = 0 # number
|
||||
|
||||
# Whether to group c-comments that look like they are in a block
|
||||
cmt_c_group = false # false/true
|
||||
|
||||
# Whether to put an empty '/*' on the first line of the combined c-comment
|
||||
cmt_c_nl_start = false # false/true
|
||||
|
||||
# Whether to put a newline before the closing '*/' of the combined c-comment
|
||||
cmt_c_nl_end = false # false/true
|
||||
|
||||
# Whether to group cpp-comments that look like they are in a block
|
||||
cmt_cpp_group = false # false/true
|
||||
|
||||
# Whether to put an empty '/*' on the first line of the combined cpp-comment
|
||||
cmt_cpp_nl_start = false # false/true
|
||||
|
||||
# Whether to put a newline before the closing '*/' of the combined cpp-comment
|
||||
cmt_cpp_nl_end = false # false/true
|
||||
|
||||
# Whether to change cpp-comments into c-comments
|
||||
cmt_cpp_to_c = false # false/true
|
||||
|
||||
# Whether to put a star on subsequent comment lines
|
||||
cmt_star_cont = false # false/true
|
||||
|
||||
# The number of spaces to insert at the start of subsequent comment lines
|
||||
cmt_sp_before_star_cont = 0 # number
|
||||
|
||||
# The number of spaces to insert after the star on subsequent comment lines
|
||||
cmt_sp_after_star_cont = 0 # number
|
||||
|
||||
# The filename that contains text to insert at the head of a file if the file doesn't start with a C/C++ comment.
|
||||
# Will substitue $(filename) with the current file's name.
|
||||
cmt_insert_file_header = "" # string
|
||||
|
||||
# The filename that contains text to insert before a function implementation if the function isn't preceeded with a C/C++ comment.
|
||||
# Will substitue $(function) with the function name and $(javaparam) with the javadoc @param and @return stuff.
|
||||
# Will also substitute $(fclass) with the class name: void CFoo::Bar() { ... }
|
||||
cmt_insert_func_header = "" # string
|
||||
|
||||
# The filename that contains text to insert before a class if the class isn't preceeded with a C/C++ comment.
|
||||
# Will substitue $(class) with the class name.
|
||||
cmt_insert_class_header = "" # string
|
||||
|
||||
#
|
||||
# Preprocessor options
|
||||
#
|
||||
|
||||
# Control indent of preprocessors inside #if blocks at brace level 0
|
||||
pp_indent = ignore # ignore/add/remove/force
|
||||
|
||||
# Whether to indent #if/#else/#endif at the brace level (true) or from column 1 (false)
|
||||
pp_indent_at_level = false # false/true
|
||||
|
||||
# Add or remove space after # based on pp_level of #if blocks
|
||||
pp_space = ignore # ignore/add/remove/force
|
||||
|
||||
# Sets the number of spaces added with pp_space
|
||||
pp_space_count = 0 # number
|
||||
|
||||
# The indent for #region and #endregion in C# and '#pragma region' in C/C++
|
||||
pp_indent_region = 0 # number
|
||||
|
||||
# Whether to indent the code between #region and #endregion
|
||||
pp_region_indent_code = false # false/true
|
||||
|
||||
# If pp_indent_at_level=true, sets the indent for #if, #else, and #endif when not at file-level
|
||||
pp_indent_if = 0 # number
|
||||
|
||||
# Control whether to indent the code between #if, #else and #endif when not at file-level
|
||||
pp_if_indent_code = false # false/true
|
||||
|
||||
# Whether to indent '#define' at the brace level (true) or from column 1 (false)
|
||||
pp_define_at_level = false # false/true
|
||||
|
||||
# You can force a token to be a type with the 'type' option.
|
||||
# Example:
|
||||
# type myfoo1 myfoo2
|
||||
#
|
||||
# You can create custom macro-based indentation using macro-open,
|
||||
# macro-else and macro-close.
|
||||
# Example:
|
||||
# macro-open BEGIN_TEMPLATE_MESSAGE_MAP
|
||||
# macro-open BEGIN_MESSAGE_MAP
|
||||
# macro-close END_MESSAGE_MAP
|
||||
|
||||
# If false, disable all multi-line comment changes, including cmt_width and leading chars.
|
||||
# Default is true.
|
||||
cmt_indent_multi = false # false/true
|
Loading…
Reference in a new issue