diff options
Diffstat (limited to 'src/pms_ref.h')
| -rw-r--r-- | src/pms_ref.h | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/pms_ref.h b/src/pms_ref.h new file mode 100644 index 0000000..d0da38b --- /dev/null +++ b/src/pms_ref.h @@ -0,0 +1,37 @@ +#ifndef PMS_REF_H +#define PMS_REF_H + +#include <regex.h> +#include <stdbool.h> + +#define PMS_REF_SEARCH 1 +#define PMS_REF_EXACT 2 +#define PMS_REF_EXACT_SET 3 +#define PMS_REF_RANGE 4 +#define PMS_REF_RANGE_EXT 5 + +#define PMS_MAX_VERSE_SET 64 + +typedef struct pms_ref { + int type; + unsigned int book; + unsigned int chapter; + unsigned int chapter_end; + unsigned int verse; + unsigned int verse_end; + unsigned int verse_set[PMS_MAX_VERSE_SET]; + int verse_set_count; + char *search_str; + regex_t search; +} pms_ref; + +pms_ref *pms_newref(void); +void pms_freeref(pms_ref *ref); + +/* Match a book name, abbreviation, or modern alias to book number (1..73), or 0 if not found. */ +int pms_book_from_name(const char *name); + +/* Parse a reference string (e.g. "Gn 1:1-5", "1Rs:3:16", "/principio", "Jo 1 /luz") into ref. Returns 0 on success. */ +int pms_parse_ref(const char *input, pms_ref *ref); + +#endif /* PMS_REF_H */ |
