[sword-svn] r3240 - in trunk: include src/keys src/mgr

scribe at crosswire.org scribe at crosswire.org
Sat Jul 12 09:27:35 MST 2014


Author: scribe
Date: 2014-07-12 09:27:35 -0700 (Sat, 12 Jul 2014)
New Revision: 3240

Modified:
   trunk/include/canon_nrsv.h
   trunk/include/canon_synodal.h
   trunk/include/canon_vulg.h
   trunk/include/versificationmgr.h
   trunk/src/keys/versekey.cpp
   trunk/src/mgr/versificationmgr.cpp
Log:
av11n mappings

Modified: trunk/include/canon_nrsv.h
===================================================================
--- trunk/include/canon_nrsv.h	2014-07-09 21:32:45 UTC (rev 3239)
+++ trunk/include/canon_nrsv.h	2014-07-12 16:27:35 UTC (rev 3240)
@@ -264,6 +264,12 @@
   27, 21
 };
 
+unsigned char mappings_nrsv[] = {
+    0,
+    66,  12,  18,  19,  13,  1,   0,
+    66,  13,  1,   1,   13,  1,   0,
+    0
+};
 
 SWORD_NAMESPACE_END
 

Modified: trunk/include/canon_synodal.h
===================================================================
--- trunk/include/canon_synodal.h	2014-07-09 21:32:45 UTC (rev 3239)
+++ trunk/include/canon_synodal.h	2014-07-12 16:27:35 UTC (rev 3240)
@@ -393,6 +393,199 @@
   27, 21
 };
 
+unsigned char mappings_synodal[] = {
+    'P', 'r', 'A', 'z', 'a', 'r', 0,
+    'S', 'u', 's', 0,
+    'B', 'e', 'l', 0,
+    0,
+    3,   14,  55,  0,   14,  55,  56,
+    4,   13,  1,   0,   12,  16,  0,
+    4,   13,  2,   0,   13,  1,   0,
+    4,   30,  1,   0,   29,  40,  0,
+    4,   30,  2,   0,   30,  1,   0,
+    6,   5,   16,  0,   6,   1,   0,
+    6,   6,   1,   0,   6,   2,   0,
+    9,   24,  1,   0,   23,  29,  0,
+    9,   24,  2,   0,   24,  1,   0,
+    22,  39,  31,  0,   40,  1,   0,
+    22,  40,  1,   0,   40,  6,   0,
+    22,  40,  20,  0,   41,  1,   0,
+    22,  41,  1,   0,   41,  9,   0,
+    23,  3,   1,   0,   3,   0,   0,
+    23,  4,   1,   0,   4,   0,   0,
+    23,  5,   1,   0,   5,   0,   0,
+    23,  6,   1,   0,   6,   0,   0,
+    23,  7,   1,   0,   7,   0,   0,
+    23,  8,   1,   0,   8,   0,   0,
+    23,  9,   1,   0,   9,   0,   0,
+    23,  9,   22,  0,   10,  1,   0,
+    23,  10,  1,   0,   11,  0,   1,
+    23,  11,  1,   0,   12,  0,   0,
+    23,  12,  1,   0,   13,  0,   0,
+    23,  12,  6,   0,   13,  5,   6,
+    23,  13,  1,   0,   14,  0,   1,
+    23,  14,  1,   0,   15,  0,   1,
+    23,  15,  1,   0,   16,  0,   1,
+    23,  16,  1,   0,   17,  0,   1,
+    23,  17,  1,   0,   18,  0,   0,
+    23,  18,  1,   0,   19,  0,   0,
+    23,  19,  1,   0,   20,  0,   0,
+    23,  20,  1,   0,   21,  0,   0,
+    23,  21,  1,   0,   22,  0,   0,
+    23,  22,  1,   0,   23,  0,   1,
+    23,  23,  1,   0,   24,  0,   1,
+    23,  24,  1,   0,   25,  0,   1,
+    23,  25,  1,   0,   26,  0,   1,
+    23,  26,  1,   0,   27,  0,   1,
+    23,  27,  1,   0,   28,  0,   1,
+    23,  28,  1,   0,   29,  0,   1,
+    23,  29,  1,   0,   30,  0,   0,
+    23,  30,  1,   0,   31,  0,   0,
+    23,  31,  1,   0,   32,  0,   1,
+    23,  32,  1,   0,   33,  0,   1,
+    23,  33,  1,   0,   34,  0,   0,
+    23,  34,  1,   0,   35,  0,   1,
+    23,  35,  1,   0,   36,  0,   0,
+    23,  36,  1,   0,   37,  0,   1,
+    23,  37,  1,   0,   38,  0,   0,
+    23,  38,  1,   0,   39,  0,   0,
+    23,  39,  1,   0,   40,  0,   0,
+    23,  40,  1,   0,   41,  0,   0,
+    23,  41,  1,   0,   42,  0,   0,
+    23,  42,  0,   0,   43,  0,   0,
+    23,  43,  1,   0,   44,  0,   0,
+    23,  44,  1,   0,   45,  0,   0,
+    23,  45,  1,   0,   46,  0,   0,
+    23,  46,  1,   0,   47,  0,   0,
+    23,  47,  1,   0,   48,  0,   0,
+    23,  48,  1,   0,   49,  0,   0,
+    23,  49,  0,   0,   50,  0,   0,
+    23,  50,  1,   2,   51,  0,   0,
+    23,  51,  1,   2,   52,  0,   0,
+    23,  52,  1,   0,   53,  0,   0,
+    23,  53,  1,   2,   54,  0,   0,
+    23,  54,  1,   0,   55,  0,   0,
+    23,  55,  1,   0,   56,  0,   0,
+    23,  56,  1,   0,   57,  0,   0,
+    23,  57,  1,   0,   58,  0,   0,
+    23,  58,  1,   0,   59,  0,   0,
+    23,  59,  1,   2,   60,  0,   0,
+    23,  60,  1,   0,   61,  0,   0,
+    23,  61,  1,   0,   62,  0,   0,
+    23,  62,  1,   0,   63,  0,   0,
+    23,  63,  1,   0,   64,  0,   0,
+    23,  64,  1,   0,   65,  0,   0,
+    23,  65,  1,   0,   66,  0,   1,
+    23,  66,  1,   0,   67,  0,   0,
+    23,  67,  1,   0,   68,  0,   0,
+    23,  68,  1,   0,   69,  0,   0,
+    23,  69,  1,   0,   70,  0,   0,
+    23,  70,  0,   0,   71,  0,   0,
+    23,  71,  0,   0,   72,  0,   0,
+    23,  72,  0,   0,   73,  0,   0,
+    23,  73,  0,   0,   74,  0,   0,
+    23,  74,  1,   0,   75,  0,   0,
+    23,  75,  1,   0,   76,  0,   0,
+    23,  76,  1,   0,   77,  0,   0,
+    23,  77,  0,   0,   78,  0,   0,
+    23,  78,  0,   0,   79,  0,   0,
+    23,  79,  1,   0,   80,  0,   0,
+    23,  80,  1,   0,   81,  0,   0,
+    23,  81,  0,   0,   82,  0,   0,
+    23,  82,  1,   0,   83,  0,   0,
+    23,  83,  1,   0,   84,  0,   0,
+    23,  84,  1,   0,   85,  0,   0,
+    23,  85,  0,   0,   86,  0,   0,
+    23,  86,  1,   0,   87,  0,   0,
+    23,  86,  2,   0,   87,  1,   2,
+    23,  87,  1,   0,   88,  0,   0,
+    23,  88,  1,   0,   89,  0,   0,
+    23,  89,  1,   0,   90,  0,   0,
+    23,  89,  6,   0,   90,  5,   6,
+    23,  90,  0,   0,   91,  0,   0,
+    23,  91,  1,   0,   92,  0,   0,
+    23,  92,  0,   0,   93,  0,   0,
+    23,  93,  0,   0,   94,  0,   0,
+    23,  94,  0,   0,   95,  0,   0,
+    23,  95,  0,   0,   96,  0,   0,
+    23,  96,  0,   0,   97,  0,   0,
+    23,  97,  0,   0,   98,  0,   0,
+    23,  98,  0,   0,   99,  0,   0,
+    23,  99,  0,   0,   100, 0,   0,
+    23,  100, 0,   0,   101, 0,   0,
+    23,  101, 1,   0,   102, 0,   0,
+    23,  102, 0,   0,   103, 0,   0,
+    23,  103, 0,   0,   104, 0,   0,
+    23,  104, 0,   0,   105, 0,   0,
+    23,  105, 0,   0,   106, 0,   0,
+    23,  106, 0,   0,   107, 0,   0,
+    23,  107, 1,   0,   108, 0,   0,
+    23,  108, 0,   0,   109, 0,   0,
+    23,  109, 0,   0,   110, 0,   0,
+    23,  110, 0,   0,   111, 0,   0,
+    23,  111, 0,   1,   112, 1,   0,
+    23,  112, 0,   1,   113, 1,   0,
+    23,  113, 0,   0,   114, 0,   0,
+    23,  113, 9,   0,   115, 1,   0,
+    23,  114, 0,   0,   116, 0,   0,
+    23,  115, 1,   0,   116, 10,  0,
+    23,  116, 0,   0,   117, 0,   0,
+    23,  117, 0,   0,   118, 0,   0,
+    23,  118, 0,   0,   119, 0,   0,
+    23,  119, 0,   0,   120, 0,   0,
+    23,  120, 0,   0,   121, 0,   0,
+    23,  121, 0,   0,   122, 0,   0,
+    23,  122, 0,   0,   123, 0,   0,
+    23,  123, 0,   0,   124, 0,   0,
+    23,  124, 0,   0,   125, 0,   0,
+    23,  125, 0,   0,   126, 0,   0,
+    23,  126, 0,   0,   127, 0,   0,
+    23,  127, 0,   0,   128, 0,   0,
+    23,  128, 0,   0,   129, 0,   0,
+    23,  129, 0,   0,   130, 0,   0,
+    23,  130, 0,   0,   131, 0,   0,
+    23,  131, 0,   0,   132, 0,   0,
+    23,  132, 0,   0,   133, 0,   0,
+    23,  133, 0,   0,   134, 0,   0,
+    23,  134, 0,   1,   135, 1,   0,
+    23,  135, 0,   0,   136, 0,   0,
+    23,  136, 0,   0,   137, 0,   0,
+    23,  137, 0,   0,   138, 0,   0,
+    23,  138, 0,   0,   139, 0,   0,
+    23,  139, 1,   0,   140, 0,   0,
+    23,  140, 0,   0,   141, 0,   0,
+    23,  141, 0,   0,   142, 0,   0,
+    23,  142, 0,   0,   143, 0,   0,
+    23,  143, 0,   0,   144, 0,   0,
+    23,  144, 0,   0,   145, 0,   0,
+    23,  145, 0,   1,   146, 1,   0,
+    23,  146, 0,   1,   147, 1,   0,
+    23,  147, 1,   0,   147, 12,  0,
+    23,  148, 0,   1,   148, 1,   0,
+    23,  149, 0,   1,   149, 1,   0,
+    23,  150, 0,   1,   150, 1,   0,
+    25,  4,   17,  0,   5,   1,   0,
+    25,  5,   1,   0,   5,   2,   0,
+    26,  1,   0,   0,   1,   1,   0,
+    26,  7,   1,   0,   6,   13,  0,
+    26,  7,   2,   0,   7,   1,   0,
+    79,  3,   24,  0,   1,   1,   0,   35,
+    79,  3,   52,  0,   1,   29,  30,  35,
+    35,  3,   91,  0,   3,   24,  0,
+    35,  3,   98,  0,   4,   1,   0,
+    35,  4,   1,   0,   4,   4,   0,
+    80,  13,  1,   0,   1,   1,   0,   35,
+    81,  14,  1,   0,   1,   1,   0,   35,
+    36,  14,  1,   0,   13,  16,  0,
+    36,  14,  2,   0,   14,  1,   0,
+    40,  2,   1,   0,   1,   17,  0,
+    40,  2,   2,   0,   2,   1,   0,
+    56,  19,  40,  0,   19,  40,  41,
+    64,  14,  24,  0,   16,  25,  0,
+    66,  13,  12,  0,   13,  12,  13,
+    62,  1,   14,  15,  1,   14,  0,
+    0
+};
 
 SWORD_NAMESPACE_END
 

Modified: trunk/include/canon_vulg.h
===================================================================
--- trunk/include/canon_vulg.h	2014-07-09 21:32:45 UTC (rev 3239)
+++ trunk/include/canon_vulg.h	2014-07-12 16:27:35 UTC (rev 3240)
@@ -386,6 +386,288 @@
   20
 };
 
+unsigned char mappings_vulg[] = {
+     'E', 'p', 'J', 'e', 'r', 0,
+     'P', 'r', 'A', 'z', 'a', 'r', 0,
+     'S', 'u', 's', 0,
+     'B', 'e', 'l', 0,
+     0,
+     1,   49,  31,  0,   49,  31,  32,
+     1,   50,  22,  0,   50,  22,  23,
+     2,   40,  13,  0,   40,  13,  15,
+     3,   26,  45,  0,   26,  45,  46,
+     4,   11,  34,  0,   11,  34,  35,
+     4,   13,  1,   0,   12,  16,  0,
+     4,   13,  2,   0,   13,  1,   0,
+     4,   20,  29,  0,   20,  28,  0,
+     4,   26,  1,   0,   25,  19,  0,
+     4,   26,  1,   0,   26,  1,   0,
+     6,   4,   24,  0,   4,   23,  0,
+     6,   5,   15,  0,   5,   14,  0,
+     6,   21,  36,  0,   21,  36,  37,
+     6,   21,  37,  0,   21,  38,  39,
+     7,   5,   32,  0,   5,   31,  0,
+     7,   21,  24,  0,   21,  24,  25,
+     9,   20,  41,  0,   20,  42,  0,
+     9,   20,  43,  0,   21,  1,   0,
+     9,   24,  1,   0,   23,  28,  29,
+     9,   24,  2,   0,   24,  1,   0,
+     13,  11,  46,  0,   11,  46,  47,
+     13,  20,  7,   0,   20,  7,   8,
+     16,  3,   30,  0,   3,   30,  31,
+     16,  12,  33,  0,   12,  33,  34,
+     20,  16,  5,   0,   16,  4,   0,
+     20,  39,  31,  0,   40,  1,   0,
+     20,  40,  1,   0,   40,  6,   0,
+     20,  40,  20,  0,   41,  1,   0,
+     20,  41,  1,   0,   41,  10,  0,
+     20,  42,  16,  0,   42,  16,  17,
+     21,  2,   13,  0,   2,   12,  0,
+     21,  3,   2,   0,   3,   1,   0,
+     21,  4,   2,   0,   4,   1,   0,
+     21,  4,   9,   10,  4,   8,   0,
+     21,  5,   2,   0,   5,   1,   0,
+     21,  6,   2,   0,   6,   1,   0,
+     21,  7,   2,   0,   7,   1,   0,
+     21,  8,   2,   0,   8,   1,   0,
+     21,  9,   2,   0,   9,   1,   0,
+     21,  9,   22,  0,   10,  1,   0,
+     21,  10,  1,   2,   11,  1,   0,
+     21,  11,  0,   0,   12,  0,   0,
+     21,  12,  1,   0,   13,  1,   0,
+     21,  12,  2,   3,   13,  2,   0,
+     21,  13,  0,   0,   14,  0,   0,
+     21,  14,  1,   0,   15,  1,   0,
+     21,  15,  0,   0,   16,  0,   0,
+     21,  15,  10,  0,   16,  10,  11,
+     21,  16,  0,   0,   17,  0,   0,
+     21,  17,  1,   2,   18,  1,   0,
+     21,  18,  1,   2,   19,  1,   0,
+     21,  19,  1,   2,   20,  1,   0,
+     21,  20,  1,   2,   21,  1,   0,
+     21,  21,  1,   2,   22,  1,   0,
+     21,  22,  0,   0,   23,  0,   0,
+     21,  23,  0,   0,   24,  0,   0,
+     21,  24,  0,   0,   25,  0,   0,
+     21,  25,  0,   0,   26,  0,   0,
+     21,  26,  0,   0,   27,  0,   0,
+     21,  27,  0,   0,   28,  0,   0,
+     21,  28,  0,   0,   29,  0,   0,
+     21,  29,  1,   2,   30,  1,   0,
+     21,  30,  1,   2,   31,  1,   0,
+     21,  31,  0,   0,   32,  0,   0,
+     21,  32,  0,   0,   33,  0,   0,
+     21,  33,  1,   2,   34,  1,   0,
+     21,  34,  0,   0,   35,  0,   0,
+     21,  35,  1,   2,   36,  1,   0,
+     21,  36,  0,   0,   37,  0,   0,
+     21,  37,  1,   2,   38,  1,   0,
+     21,  38,  1,   2,   39,  1,   0,
+     21,  39,  1,   2,   40,  1,   0,
+     21,  40,  1,   2,   41,  1,   0,
+     21,  41,  1,   2,   42,  1,   0,
+     21,  42,  0,   0,   43,  0,   0,
+     21,  43,  1,   2,   44,  1,   0,
+     21,  43,  22,  0,   44,  21,  22,
+     21,  44,  1,   2,   45,  1,   0,
+     21,  45,  1,   2,   46,  1,   0,
+     21,  46,  1,   2,   47,  1,   0,
+     21,  47,  1,   2,   48,  1,   0,
+     21,  48,  1,   2,   49,  1,   0,
+     21,  49,  0,   0,   50,  0,   0,
+     21,  50,  1,   3,   51,  1,   0,
+     21,  51,  1,   3,   52,  1,   0,
+     21,  52,  1,   2,   53,  1,   0,
+     21,  53,  1,   3,   54,  1,   0,
+     21,  54,  1,   2,   55,  1,   0,
+     21,  55,  1,   2,   56,  1,   0,
+     21,  55,  11,  0,   56,  10,  11,
+     21,  56,  1,   2,   57,  1,   0,
+     21,  57,  1,   2,   58,  1,   0,
+     21,  58,  1,   2,   59,  1,   0,
+     21,  59,  1,   3,   60,  1,   0,
+     21,  60,  1,   2,   61,  1,   0,
+     21,  61,  1,   2,   62,  1,   0,
+     21,  62,  1,   2,   63,  1,   0,
+     21,  63,  1,   2,   64,  1,   0,
+     21,  64,  1,   2,   65,  1,   0,
+     21,  65,  0,   0,   66,  0,   0,
+     21,  66,  1,   2,   67,  1,   0,
+     21,  67,  1,   2,   68,  1,   0,
+     21,  68,  1,   2,   69,  1,   0,
+     21,  69,  1,   2,   70,  1,   0,
+     21,  70,  0,   0,   71,  0,   0,
+     21,  71,  0,   0,   72,  0,   0,
+     21,  72,  0,   0,   73,  0,   0,
+     21,  73,  0,   0,   74,  0,   0,
+     21,  74,  1,   2,   75,  1,   0,
+     21,  75,  1,   2,   76,  1,   0,
+     21,  76,  1,   2,   77,  1,   0,
+     21,  77,  0,   0,   78,  0,   0,
+     21,  78,  0,   0,   79,  0,   0,
+     21,  79,  1,   2,   80,  1,   0,
+     21,  80,  1,   2,   81,  1,   0,
+     21,  81,  0,   0,   82,  0,   0,
+     21,  82,  1,   2,   83,  1,   0,
+     21,  83,  1,   2,   84,  1,   0,
+     21,  84,  1,   2,   85,  1,   0,
+     21,  85,  0,   0,   86,  0,   0,
+     21,  86,  0,   0,   87,  0,   0,
+     21,  87,  1,   2,   88,  1,   0,
+     21,  88,  1,   2,   89,  1,   0,
+     21,  89,  0,   0,   90,  0,   0,
+     21,  90,  0,   0,   91,  0,   0,
+     21,  91,  1,   2,   92,  1,   0,
+     21,  92,  0,   0,   93,  0,   0,
+     21,  93,  0,   0,   94,  0,   0,
+     21,  94,  0,   0,   95,  0,   0,
+     21,  95,  0,   0,   96,  0,   0,
+     21,  96,  0,   0,   97,  0,   0,
+     21,  97,  0,   0,   98,  0,   0,
+     21,  98,  0,   0,   99,  0,   0,
+     21,  99,  0,   0,   100, 0,   0,
+     21,  100, 0,   0,   101, 0,   0,
+     21,  101, 1,   2,   102, 1,   0,
+     21,  102, 0,   0,   103, 0,   0,
+     21,  103, 0,   0,   104, 0,   0,
+     21,  104, 0,   0,   105, 0,   0,
+     21,  105, 0,   0,   106, 0,   0,
+     21,  106, 0,   0,   107, 0,   0,
+     21,  107, 1,   2,   108, 1,   0,
+     21,  108, 0,   0,   109, 0,   0,
+     21,  109, 0,   0,   110, 0,   0,
+     21,  110, 0,   0,   111, 0,   0,
+     21,  111, 0,   0,   112, 0,   0,
+     21,  112, 0,   0,   113, 0,   0,
+     21,  113, 0,   0,   114, 0,   0,
+     21,  113, 9,   0,   115, 1,   0,
+     21,  114, 0,   0,   116, 0,   0,
+     21,  115, 1,   0,   116, 10,  0,
+     21,  116, 0,   0,   117, 0,   0,
+     21,  117, 0,   0,   118, 0,   0,
+     21,  118, 0,   0,   119, 0,   0,
+     21,  119, 0,   0,   120, 0,   0,
+     21,  120, 0,   0,   121, 0,   0,
+     21,  121, 0,   0,   122, 0,   0,
+     21,  122, 0,   0,   123, 0,   0,
+     21,  123, 0,   0,   124, 0,   0,
+     21,  124, 0,   0,   125, 0,   0,
+     21,  125, 0,   0,   126, 0,   0,
+     21,  126, 0,   0,   127, 0,   0,
+     21,  127, 0,   0,   128, 0,   0,
+     21,  128, 0,   0,   129, 0,   0,
+     21,  129, 0,   0,   130, 0,   0,
+     21,  130, 0,   0,   131, 0,   0,
+     21,  131, 0,   0,   132, 0,   0,
+     21,  132, 0,   0,   133, 0,   0,
+     21,  133, 0,   0,   134, 0,   0,
+     21,  134, 0,   0,   135, 0,   0,
+     21,  135, 0,   0,   136, 0,   0,
+     21,  136, 0,   0,   137, 0,   0,
+     21,  137, 0,   0,   138, 0,   0,
+     21,  138, 0,   0,   139, 0,   0,
+     21,  139, 1,   2,   140, 1,   0,
+     21,  140, 0,   0,   141, 0,   0,
+     21,  141, 1,   2,   142, 1,   0,
+     21,  142, 0,   0,   143, 0,   0,
+     21,  143, 0,   0,   144, 0,   0,
+     21,  144, 0,   0,   145, 0,   0,
+     21,  145, 1,   0,   146, 0,   0,
+     21,  145, 2,   0,   146, 1,   2,
+     21,  146, 0,   0,   147, 0,   0,
+     21,  147, 1,   0,   147, 12,  0,
+     23,  4,   17,  0,   5,   1,   0,
+     23,  5,   1,   0,   5,   2,   0,
+     23,  7,   1,   0,   6,   12,  0,
+     23,  7,   2,   0,   7,   1,   0,
+     24,  1,   1,   0,   1,   1,   2,
+     24,  5,   17,  0,   6,   1,   0,
+     24,  6,   1,   0,   6,   2,   0,
+     25,  2,   25,  0,   2,   24,  0,
+     25,  5,   14,  0,   5,   13,  0,
+     25,  6,   2,   0,   6,   1,   0,
+     25,  6,   22,  23,  6,   21,  0,
+     25,  9,   19,  0,   9,   18,  0,
+     25,  11,  6,   0,   11,  5,   0,
+     25,  19,  12,  0,   19,  12,  13,
+     27,  8,   22,  0,   8,   22,  23,
+     28,  37,  4,   0,   37,  4,   5,
+     79,  6,   1,   0,   6,   1,   0,   30,
+     31,  2,   9,   0,   2,   9,   10,
+     80,  3,   24,  0,   1,   1,   0,   32,
+     80,  3,   52,  0,   1,   29,  30,  32,
+     32,  3,   91,  0,   3,   24,  0,
+     32,  3,   98,  0,   4,   1,   0,
+     32,  4,   1,   0,   4,   4,   0,
+     81,  13,  1,   0,   1,   1,   0,   32,
+     81,  13,  64,  65,  1,   64,  0,   32,
+     82,  14,  1,   0,   1,   1,   0,   32,
+     82,  14,  41,  42,  1,   41,  0,   32,
+     33,  14,  1,   0,   13,  16,  0,
+     33,  14,  2,   0,   14,  1,   0,
+     35,  6,   11,  0,   6,   10,  0,
+     42,  2,   1,   0,   1,   15,  0,
+     42,  2,   2,   0,   2,   1,   0,
+     45,  1,   5,   0,   1,   4,   0,
+     45,  1,   31,  32,  1,   30,  0,
+     45,  1,   36,  0,   1,   34,  35,
+     45,  1,   37,  0,   1,   35,  0,
+     45,  1,   47,  48,  1,   45,  0,
+     45,  12,  54,  0,   12,  53,  0,
+     45,  13,  53,  0,   13,  52,  0,
+     46,  2,   19,  0,   2,   18,  0,
+     46,  12,  46,  0,   12,  45,  0,
+     46,  15,  37,  0,   15,  36,  0,
+     47,  17,  15,  0,   17,  16,  0,
+     48,  4,   40,  0,   4,   40,  41,
+     48,  8,   39,  0,   9,   1,   0,
+     48,  9,   1,   0,   9,   2,   0,
+     50,  6,   52,  0,   6,   51,  0,
+     51,  7,   55,  0,   7,   55,  56,
+     51,  14,  6,   0,   14,  6,   7,
+     51,  19,  40,  0,   19,  40,  41,
+     73,  12,  18,  19,  13,  1,   0,
+     73,  13,  1,   0,   13,  1,   0,
+     75,  1,   4,   0,   1,   3,   4,
+     75,  1,   10,  0,   1,   10,  11,
+     75,  1,   11,  0,   1,   12,  13,
+     75,  1,   12,  0,   1,   13,  0,
+     75,  1,   16,  0,   1,   15,  0,
+     75,  1,   17,  18,  1,   16,  0,
+     75,  1,   51,  52,  1,   49,  0,
+     75,  2,   2,   0,   2,   1,   0,
+     75,  2,   3,   4,   2,   2,   0,
+     75,  2,   6,   7,   2,   4,   0,
+     75,  2,   11,  12,  2,   8,   0,
+     75,  2,   13,  0,   2,   9,   10,
+     75,  2,   14,  15,  2,   11,  0,
+     75,  2,   20,  21,  2,   16,  0,
+     75,  2,   22,  23,  2,   17,  0,
+     75,  2,   26,  0,   2,   20,  21,
+     75,  2,   30,  0,   2,   25,  26,
+     75,  3,   15,  0,   3,   14,  0,
+     75,  3,   17,  0,   3,   16,  17,
+     75,  4,   10,  0,   4,   10,  11,
+     75,  4,   40,  0,   4,   39,  40,
+     75,  5,   42,  0,   5,   41,  0,
+     75,  5,   54,  55,  5,   53,  0,
+     75,  5,   58,  0,   5,   56,  57,
+     75,  5,   59,  60,  5,   57,  0,
+     75,  5,   73,  0,   5,   70,  71,
+     75,  6,   9,   0,   6,   8,   0,
+     75,  8,   6,   0,   8,   5,   0,
+     75,  8,   20,  0,   8,   19,  20,
+     75,  8,   44,  0,   8,   43,  0,
+     75,  8,   50,  0,   8,   49,  50,
+     75,  8,   57,  0,   8,   56,  0,
+     75,  8,   63,  64,  8,   62,  0,
+     75,  8,   65,  66,  8,   63,  0,
+     75,  8,   86,  0,   8,   83,  84,
+     75,  8,   87,  0,   8,   84,  0,
+     75,  8,   93,  94,  8,   90,  0,
+     0
+ };
+
 SWORD_NAMESPACE_END
 
 #endif

Modified: trunk/include/versificationmgr.h
===================================================================
--- trunk/include/versificationmgr.h	2014-07-09 21:32:45 UTC (rev 3239)
+++ trunk/include/versificationmgr.h	2014-07-12 16:27:35 UTC (rev 3240)
@@ -142,11 +142,12 @@
 		int getBookNumberByOSISName(const char *bookName) const;
 		const Book *getBook(int number) const;
 		int getBookCount() const;
-		void loadFromSBook(const sbook *ot, const sbook *nt, int *chMax);
+		void loadFromSBook(const sbook *ot, const sbook *nt, int *chMax, const unsigned char *mappings=NULL);
 		long getOffsetFromVerse(int book, int chapter, int verse) const;
 		char getVerseFromOffset(long offset, int *book, int *chapter, int *verse) const;
 		const int *getBMAX() const { return BMAX; };
 		long getNTStartOffset() const { return ntStartOffset; }
+		void translateVerse(const System *dstSys, const char **book, int *chapter, int *verse, int *verse_end) const;
 	};
 	VersificationMgr() { init(); }
 	~VersificationMgr();
@@ -154,7 +155,7 @@
 	static void setSystemVersificationMgr(VersificationMgr *newVersificationMgr);
 	const StringList getVersificationSystems() const;
 	const System *getVersificationSystem(const char *name) const;
-	void registerVersificationSystem(const char *name, const sbook *ot, const sbook *nt, int *chMax);
+	void registerVersificationSystem(const char *name, const sbook *ot, const sbook *nt, int *chMax, const unsigned char *mappings=NULL);
 	void registerVersificationSystem(const char *name, const TreeKey *);
 };
 

Modified: trunk/src/keys/versekey.cpp
===================================================================
--- trunk/src/keys/versekey.cpp	2014-07-09 21:32:45 UTC (rev 3239)
+++ trunk/src/keys/versekey.cpp	2014-07-12 16:27:35 UTC (rev 3240)
@@ -128,18 +128,55 @@
 		chapter = ikey.getChapter();
 		verse = ikey.getVerse();
 		suffix = ikey.getSuffix();
-        }
-	// TODO: versification mapping
-        // Here is where we will do v11n system conversions in the future
-        // when we have a conversion mechanism
-        // Ben Morgan has started thinking about this
-        // Konstantin Maslyuk <kalemas at mail.ru> has submitted a patch)
-        // Asked Konstantin to try his patch out with his favorite
-        // SWORD frontend and report back how it goes.  Need to follow up
-        else {
-	        // For now, this is the best we can do
-        	setText(ikey.getText());
-        }
+	}
+	else {
+		// map verse between systems
+		const char* map_book = ikey.getOSISBookName();
+		int map_chapter = ikey.getChapter();
+		int map_verse = ikey.getVerse();
+		int map_range = map_verse;
+
+		ikey.refSys->translateVerse(refSys, &map_book, &map_chapter, &map_verse, &map_range);
+		//printf("verse: %s.%i.%i-%i\n",map_book,map_chapter,map_verse,map_range);
+		
+		book = refSys->getBookNumberByOSISName(map_book);
+
+		// check existence
+		if (book == -1) {
+			book = 1;
+			error = KEYERR_OUTOFBOUNDS;
+		}
+		else if (refSys->getBook(book-1)->getChapterMax() < map_chapter) {
+			map_chapter = refSys->getBook(book-1)->getChapterMax();
+			map_verse = refSys->getBook(book-1)->getVerseMax(map_chapter);
+			error = KEYERR_OUTOFBOUNDS;
+		}
+		else if (map_chapter > 0 && refSys->getBook(book-1)->getVerseMax(map_chapter) < map_verse) {
+			map_verse = refSys->getBook(book-1)->getVerseMax(map_chapter);
+			error = KEYERR_OUTOFBOUNDS;
+		}
+
+		// set values
+		if (book > BMAX[0])
+			book -= BMAX[0], testament = 2;
+		else
+			testament = 1;
+
+		//if (map_verse == 0) Headings(1);
+
+		chapter = map_chapter;
+		verse = map_verse;
+		suffix = ikey.getSuffix();
+		
+		if (map_verse < map_range) {
+			if (map_range > refSys->getBook(((testament>1)?BMAX[0]:0)+book-1)->getVerseMax(chapter))
+				++map_range;
+			verse = map_range;
+			UpperBound(this);
+			verse = map_verse;
+			LowerBound(this);
+		}
+	}
 }
 
 

Modified: trunk/src/mgr/versificationmgr.cpp
===================================================================
--- trunk/src/mgr/versificationmgr.cpp	2014-07-09 21:32:45 UTC (rev 3239)
+++ trunk/src/mgr/versificationmgr.cpp	2014-07-12 16:27:35 UTC (rev 3240)
@@ -62,11 +62,11 @@
 		systemVersificationMgr->registerVersificationSystem("Leningrad", otbooks_leningrad, ntbooks_null, vm_leningrad);
 		systemVersificationMgr->registerVersificationSystem("MT", otbooks_mt, ntbooks_null, vm_mt);
 		systemVersificationMgr->registerVersificationSystem("KJVA", otbooks_kjva, ntbooks, vm_kjva);
-		systemVersificationMgr->registerVersificationSystem("NRSV", otbooks, ntbooks, vm_nrsv);
+		systemVersificationMgr->registerVersificationSystem("NRSV", otbooks, ntbooks, vm_nrsv, mappings_nrsv);
 		systemVersificationMgr->registerVersificationSystem("NRSVA", otbooks_nrsva, ntbooks, vm_nrsva);
-		systemVersificationMgr->registerVersificationSystem("Synodal", otbooks_synodal, ntbooks_synodal, vm_synodal);
+		systemVersificationMgr->registerVersificationSystem("Synodal", otbooks_synodal, ntbooks_synodal, vm_synodal, mappings_synodal);
 		systemVersificationMgr->registerVersificationSystem("SynodalProt", otbooks_synodalProt, ntbooks_synodal, vm_synodalProt);
-		systemVersificationMgr->registerVersificationSystem("Vulg", otbooks_vulg, ntbooks_vulg, vm_vulg);
+		systemVersificationMgr->registerVersificationSystem("Vulg", otbooks_vulg, ntbooks_vulg, vm_vulg, mappings_vulg);
 		systemVersificationMgr->registerVersificationSystem("German", otbooks_german, ntbooks, vm_german);
 		systemVersificationMgr->registerVersificationSystem("Luther", otbooks_luther, ntbooks_luther, vm_luther);
 		systemVersificationMgr->registerVersificationSystem("Catholic", otbooks_catholic, ntbooks, vm_catholic);
@@ -83,6 +83,19 @@
 	/** Array[chapmax] of maximum verses in chapters */
 	vector<Book> books;
 	map<SWBuf, int> osisLookup;
+	/** General mapping rule is that first verse of every chapter corresponds first
+		verse of another chapter in default intermediate canon(kjva), so mapping data
+		contains expections. Intermediate canon could not contain corresponding data.
+		
+		pointers on uchar[7]: 1 value - book id 1-based, ot+nt, 2-4 map to, 5-7 map
+		from (chap,verse from, verse to if greater then "verse from")
+		
+		TODO what if book name in one v11n differs from cannon
+			special section in mapping for book transformation
+	*/
+	typedef vector<const unsigned char*> mapping;
+	vector<mapping> mappings;
+	vector<const char*> mappingsExtraBooks;
 
 	Private() {
 	}
@@ -179,7 +192,7 @@
 }
 
 
-void VersificationMgr::System::loadFromSBook(const sbook *ot, const sbook *nt, int *chMax) {
+void VersificationMgr::System::loadFromSBook(const sbook *ot, const sbook *nt, int *chMax, const unsigned char *mappings) {
 	int chap = 0;
 	int book = 0;
 	long offset = 0;	// module heading
@@ -219,6 +232,23 @@
 	BMAX[1] = book;
 
 	// TODO: build offset speed array
+
+	// parse mappings
+	if (mappings != NULL) {
+		const unsigned char *m=mappings;
+		for (; *m != 0; m += strlen((const char*)m)+1) {
+			p->mappingsExtraBooks.push_back((const char*)m);
+		}
+		p->mappings.resize(p->books.size()+p->mappingsExtraBooks.size());
+
+		for (++m; *m != 0; m += 7) {
+			p->mappings[m[0]-1].push_back(m);
+			if (*m > p->books.size()) {
+				p->mappings[m[7]-1].push_back(m);
+				m += 1;
+			}
+		}
+	}
 }
 
 
@@ -372,10 +402,10 @@
 }
 
 
-void VersificationMgr::registerVersificationSystem(const char *name, const sbook *ot, const sbook *nt, int *chMax) {
+void VersificationMgr::registerVersificationSystem(const char *name, const sbook *ot, const sbook *nt, int *chMax, const unsigned char *mappings) {
 	p->systems[name] = name;
 	System &s = p->systems[name];
-	s.loadFromSBook(ot, nt, chMax);
+	s.loadFromSBook(ot, nt, chMax, mappings);
 }
 
 
@@ -391,6 +421,138 @@
 	return retVal;
 }
 
+void VersificationMgr::System::translateVerse(const System *dstSys, const char **book, int *chapter, int *verse, int *verse_end) const {
+	SWLog::getSystemLog()->logError("translate verse from %s to %s: %s.%i.%i-%i\n",getName(), dstSys->getName(), *book, *chapter, *verse, *verse_end);
 
+	if (!strcmp(getName(),"KJVA") || !strcmp(getName(),"KJV")) {
+		if (!strcmp(dstSys->getName(),"KJVA") || !strcmp(dstSys->getName(),"KJV"))
+			return;
+		// reversed mapping
+		SWLog::getSystemLog()->logError("Perform reversed mapping.\n");
+		int b = dstSys->getBookNumberByOSISName(*book)-1;
+
+		SWLog::getSystemLog()->logError("\tgetBookNumberByOSISName %i %s.\n", b, *book);
+
+		if (b < 0) {
+			SWLog::getSystemLog()->logError("\tmappingsExtraBooks.size() %i.\n", dstSys->p->mappingsExtraBooks.size());
+			for (int i=0; i<(int)dstSys->p->mappingsExtraBooks.size(); ++i) {
+				SWLog::getSystemLog()->logError("\t%s %s.\n", *book, dstSys->p->mappingsExtraBooks[i]);
+				if (!strcmp(*book, dstSys->p->mappingsExtraBooks[i])) {
+					b = p->books.size()+i-2;
+					break;
+				}
+			}
+		}
+
+		SWLog::getSystemLog()->logError("\tb %i.\n", b);
+
+		if (b >= (int)dstSys->p->mappings.size() || b < 0) {
+			SWLog::getSystemLog()->logError("no modification");
+			return;
+		}
+		
+		const unsigned char *a = NULL;
+		
+		// reversed mapping should use forward search for item
+		for (unsigned int i=0; i<dstSys->p->mappings[b].size(); ++i) {
+			const unsigned char *m = dstSys->p->mappings[b][i];
+			if (m[4] == *chapter && m[5] <= *verse) {
+				SWLog::getSystemLog()->logError("found mapping %i %i %i %i %i %i\n",m[1],m[2],m[3],m[4],m[5],m[6]);
+				if (m[5] == *verse || (m[6] >= *verse && m[5] <= *verse)) {
+					// inside of any mapping range
+					*chapter = m[1];
+					*verse = m[2];
+					*verse_end = m[3];
+					if (*m >= dstSys->p->books.size()) {
+						SWLog::getSystemLog()->logError("map to extra books, possible bug source\n");
+						*book = dstSys->getBook(m[7]-1)->getOSISName();
+					}
+					return;
+				}
+				// destination mapping can have duplicate items, use the last (by using <=)
+				if (a == NULL || (a[5]>a[6]?a[5]:a[6]) <= (m[5]>m[6]?m[5]:m[6]))
+					a = m;
+			}
+		}
+		if (a != NULL) {
+			SWLog::getSystemLog()->logError("set appropriate: %i %i %i %i %i %i\n",a[1],a[2],a[3],a[4],a[5],a[6]);
+			(*chapter) = a[1];
+			// shift verse
+			const int d = (a[3]>a[2]?a[3]:a[2])-(a[6]>a[5]?a[6]:a[5]);
+			if (*verse < *verse_end)
+				*verse_end += d;
+			else
+				*verse_end = (*verse) + d;
+			*verse += d;
+			if (*a > dstSys->p->books.size()) {
+				SWLog::getSystemLog()->logError("appropriate: %i %i %i %i %i %i %i %i\n",a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7]);
+				SWLog::getSystemLog()->logError("book: %s\n", dstSys->getBook(a[7]-1)->getOSISName());
+				*book = dstSys->getBook(a[7]-1)->getOSISName();
+			}
+			return;
+		}
+		SWLog::getSystemLog()->logError("There is no mapping.\n");
+	}
+	else if (strcmp(dstSys->getName(),"KJVA") && strcmp(dstSys->getName(),"KJV")) {
+		const System *kjva = getSystemVersificationMgr()->getVersificationSystem("KJVA");
+		const int src_verse = *verse;
+		
+		translateVerse(kjva, book, chapter, verse, verse_end);
+		
+		int interm_verse = *verse, interm_range = *verse_end, interm_chapter = *chapter;
+		const char *interm_book = *book;
+		
+		kjva->translateVerse(dstSys, book, chapter, verse, verse_end);
+		
+		// contraction->expansion fix
+		if (verse < verse_end && !(interm_verse < interm_range)) {
+			kjva->translateVerse(this, &interm_book, &interm_chapter, &interm_verse, &interm_range);
+			if (interm_verse < interm_range) {
+				*verse += src_verse - interm_verse;
+				if (*verse > *verse_end)
+					*verse = *verse_end;
+				else
+					*verse_end = *verse;
+			}
+		}
+	}
+	else {
+		SWLog::getSystemLog()->logError("Perform forward mapping.\n");
+		const int b = getBookNumberByOSISName(*book)-1;
+		if (b >= (int)p->mappings.size())
+			return;
+		// forward mapping should use reversed search for item
+		for (int i=p->mappings[b].size()-1; i>=0; --i) {
+			const unsigned char *m = p->mappings[b][i];
+			if (m[1] < *chapter) {
+				SWLog::getSystemLog()->logError("There is no mapping for this chapter.\n");
+				return;
+			}
+			if (m[1] == *chapter && m[2] <= *verse) {
+				SWLog::getSystemLog()->logError("found mapping %i %i %i %i %i %i\n",m[1],m[2],m[3],m[4],m[5],m[6]);
+				if (m[2] == *verse || (m[3] >= *verse && m[2] <= *verse)) {
+					*chapter = m[4];
+					*verse = m[5];
+					*verse_end = m[6];
+				}
+				else {
+					*chapter = m[4];
+					// shift verse
+					const int d = (m[6]>m[5]?m[6]:m[5])-(m[3]>m[2]?m[3]:m[2]);
+					if (*verse < *verse_end)
+						*verse_end += d;
+					else
+						*verse_end = (*verse) + d;
+					*verse += d;
+				}
+				if (*m > p->books.size())
+					*book = p->mappingsExtraBooks[m[0]-p->books.size()-1];
+				return;
+			}
+		}
+		SWLog::getSystemLog()->logError("No mapping.\n");
+	}
+}
+
 SWORD_NAMESPACE_END
 




More information about the sword-cvs mailing list