// Copyright 2021, Paul Mosier // // This file is part of Scriptura, a ncurses-based Bible study // software for the libsword backend. // // Scriptura 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, under version 2 of the License. // // Scriptura 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 Scriptura. If not, see . // free.h - free functions / globals #ifndef SCRIPT_GLOBAL #define SCRIPT_GLOBAL #include #include // preprocessor directives - for some compiler-constant expressions #define PAGELIMIT 5 // the maximum number of pages allowed #define NUMPANES 2 // the max number of panes allowed -- this value // as is in other places of the code //! Structure to make managing arrays easier. Who doesn't like arrays? typedef struct { int length; //!< number of elements const char ** strings; //!< list of strings } starray; /*! Structure to hold a module ID, search key, and related search parameters. * One is stored by each pane. */ typedef struct { const char* modname; //!< name of module const char* searchkey; /*!< search key for module - if NULL or empty, the * struct is considered empty */ int keytype; //!< 0 - versekey, 1 - treekey, 2 - direct int searchtype; //!< type of search to be performed, if any const char* scope; //!< scope of search, if any } modkey; //! String giving all in-program key commands. Displayed in the help window. extern char HELPTEXT[]; //! String giving the informative text on the command line, for '-h' extern char CLITEXT[]; //! Value of default searchtype for lookups keyed to verse extern int DEFSEARCH; //! Value of default keytype for lookups extern int DEFKEY; //! Global copy of the program's configuration file settings. extern sword::SWConfig config; /*! Close out of ncurses gracefully, display an exit message if we have one, and * quit. */ void wrapup(int exitval, const char* str); //! Trim trailing whitespace for a string. void trim(char* str); //! parse through a configuration setting from SWConfig int parseConf(sword::SWBuf buf); /*! Determine if a substring is present at either the beginning of a string or * at any point within it, depending on a toggle for a flag -- return integer * of matching index. */ //int strmatch(wchar_t text[], const wchar_t* key, int matchnow); int strmatch(char text[], const char* key, int matchnow); //! Append a new string to a starray. starray stappend(starray arr, const char* newstr); //! Initialize a new starray. starray stinit(starray arr); #endif