/******************************************************************************* * Copyright (c) 2013-2017, Andrés Martinelli . * * 4. Neither the name of the Andrés Martinelli nor the * * names of other contributors may be used to endorse or promote products * * derived from this software without specific prior written permission. * * * * THIS SOFTWARE IS PROVIDED BY ANDRES MARTINELLI ''AS IS'' AND ANY * * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * * DISCLAIMED. IN NO EVENT SHALL ANDRES MARTINELLI BE LIABLE FOR ANY * * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;* * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * *******************************************************************************/ /** * \file macros.h * \author Andrés Martinelli * \date 2017-07-18 * \brief Header file for cros.c */ #define BUFFERSIZE 256 #define MAX_MULTIPLIER 100 #define MAXSC 15 // MAXSC is the max length of a special key expressed as a string. ex. #define MAXMAPITEM (MAXSC * 20) // max length of mapping part (in / out) #define TIMEOUT_CURSES 300 // ms curses input timeout #define CMDTIMEOUT 3000 // ms valid command timeout #define COMPLETECMDTIMEOUT (CMDTIMEOUT/8) #define ESC_DELAY 25 // Escape timeout #define RESCOL 4 // columns reserved for row numbers #define RESROW 2 // rows reserved for prompt, error, and column numbers #define NORMAL_MODE 0x01 #define INSERT_MODE 0x02 #define EDIT_MODE 0x04 #define COMMAND_MODE 0x08 #define VISUAL_MODE 0x16 #define ctl(x) ((x) & 0x1f) #define uncl(x) (0x60 | ((x) & 0x1f)) #define OKEY_ESC '\033' #define OKEY_TAB '\011' #define OKEY_ENTER 10 #define OKEY_LEFT 0x104 #define OKEY_RIGHT 0x105 #define OKEY_DOWN 0x102 #define OKEY_UP 0x103 #define OKEY_DEL 0x14a #define OKEY_BS 0x107 #define OKEY_BS2 0x7f // some BSDs, Linux distros, SSH/tmux configs #define OKEY_HOME 0x106 #define OKEY_END 0x168 #define OKEY_PGUP 0x153 #define OKEY_PGDOWN 0x152 //#define metak(x) ((x) | 0x80) #define LEFT 0 #define RIGHT 1 // used for is_single_command function #define NO_CMD 0 #define EDITION_CMD 1 #define MOVEMENT_CMD 2 #define HEADINGS 0 #define WELCOME 1 #define CELL_SELECTION 2 #define CELL_SELECTION_SC 3 #define NUMB 4 #define STRG 5 #define DATEF 6 #define EXPRESSION 7 #define INFO_MSG 8 #define ERROR_MSG 9 #define MODE 10 #define CELL_ID 11 #define CELL_FORMAT 12 #define CELL_CONTENT 13 #define INPUT 14 #define NORMAL 15 #define CELL_ERROR 16 #define CELL_NEGATIVE 17 #define DEFAULT 18 #define DEBUG_MSG 19 #define VALUE_MSG 20 void ui_sc_msg(char * s, int type, ...); #define sc_error(x, ...) ui_sc_msg(x, ERROR_MSG, ##__VA_ARGS__) #define sc_debug(x, ...) ui_sc_msg(x, DEBUG_MSG, ##__VA_ARGS__) #define sc_info(x, ...) ui_sc_msg(x, INFO_MSG, ##__VA_ARGS__) #define sc_value(x, ...) ui_sc_msg(x, VALUE_MSG, ##__VA_ARGS__) #define RUNTIME ((current_tv.tv_sec - startup_tv.tv_sec) * 1000L + (current_tv.tv_usec - startup_tv.tv_usec) / 1000L)