1656 "Vyskov", |
1656 "Vyskov", |
1657 "Zdár nad Sázavou", |
1657 "Zdár nad Sázavou", |
1658 "Zlín", |
1658 "Zlín", |
1659 "Znojmo" |
1659 "Znojmo" |
1660 }; |
1660 }; |
|
1661 |
|
1662 |
|
1663 /* The advanced hyperintelligent Czech town names generator! */ |
|
1664 |
|
1665 // Sing., pl. |
|
1666 enum CzechGender { |
|
1667 CZG_SMASC, |
|
1668 CZG_SFEM, |
|
1669 CZG_SNEUT, |
|
1670 CZG_PMASC, |
|
1671 CZG_PFEM, |
|
1672 CZG_PNEUT, |
|
1673 // Special for substantive stems - the ending chooses the gender. |
|
1674 CZG_FREE, |
|
1675 // Like CZG_FREE, but disallow CZG_SNEUT. |
|
1676 CZG_NFREE |
|
1677 }; |
|
1678 enum CzechPattern { |
|
1679 CZP_JARNI, |
|
1680 CZP_MLADY, |
|
1681 CZP_PRIVL |
|
1682 }; |
|
1683 /* [CzechGender][CzechPattern] - replaces the last character of the adjective |
|
1684 * by this. */ |
|
1685 // XXX: [CZG_SMASC][CZP_PRIVL] needs special handling: -ovX -> -uv. |
|
1686 static const char name_czech_patmod[6][3] = { |
|
1687 /* CZG_SMASC */ { 'í', 'ý', 'X' }, |
|
1688 /* CZG_SFEM */ { 'í', 'á', 'a' }, |
|
1689 /* CZG_SNEUT */ { 'í', 'é', 'o' }, |
|
1690 /* CZG_PMASC */ { 'í', 'é', 'y' }, |
|
1691 /* CZG_PFEM */ { 'í', 'é', 'y' }, |
|
1692 /* CZG_PNEUT */ { 'í', 'á', 'a' } |
|
1693 }; |
|
1694 |
|
1695 // This way the substantives can choose only some adjectives/endings: |
|
1696 // At least one of these flags must be satisfied: |
|
1697 enum CzechAllow { |
|
1698 CZA_SHORT = 1, |
|
1699 CZA_MIDDLE = 2, |
|
1700 CZA_LONG = 4, |
|
1701 CZA_ALL = ~0 |
|
1702 }; |
|
1703 // All these flags must be satisfied (in the stem->others direction): |
|
1704 enum CzechChoose { |
|
1705 CZC_NORMAL = 1, |
|
1706 CZC_COLOR = 2, |
|
1707 CZC_POSTFIX = 4, // Matched if postfix was inserted. |
|
1708 CZC_NOPOSTFIX = 8, // Matched if no postfix was inserted. |
|
1709 CZC_ANY = ~0 |
|
1710 }; |
|
1711 |
|
1712 struct CzechNameSubst { |
|
1713 enum CzechGender gender; |
|
1714 enum CzechAllow allow; |
|
1715 enum CzechChoose choose; |
|
1716 const char *name; |
|
1717 }; |
|
1718 |
|
1719 struct CzechNameAdj { |
|
1720 enum CzechPattern pattern; |
|
1721 enum CzechChoose choose; |
|
1722 const char *name; |
|
1723 }; |
|
1724 |
|
1725 // Some of items which should be common are doubled. |
|
1726 static const struct CzechNameAdj name_czech_adj[] = { |
|
1727 { CZP_JARNI, CZC_ANY, "Horní" }, |
|
1728 { CZP_JARNI, CZC_ANY, "Horní" }, |
|
1729 { CZP_JARNI, CZC_ANY, "Dolní" }, |
|
1730 { CZP_JARNI, CZC_ANY, "Dolní" }, |
|
1731 { CZP_JARNI, CZC_ANY, "Prední" }, |
|
1732 { CZP_JARNI, CZC_ANY, "Zadní" }, |
|
1733 { CZP_JARNI, CZC_ANY, "Kostelní" }, |
|
1734 { CZP_JARNI, CZC_ANY, "Havraní" }, |
|
1735 { CZP_JARNI, CZC_ANY, "Rícní" }, |
|
1736 { CZP_MLADY, CZC_ANY, "Velký" }, |
|
1737 { CZP_MLADY, CZC_ANY, "Velký" }, |
|
1738 { CZP_MLADY, CZC_ANY, "Malý" }, |
|
1739 { CZP_MLADY, CZC_ANY, "Malý" }, |
|
1740 { CZP_MLADY, CZC_ANY, "Vysoký" }, |
|
1741 { CZP_MLADY, CZC_ANY, "Ceský" }, |
|
1742 { CZP_MLADY, CZC_ANY, "Moravský" }, |
|
1743 { CZP_MLADY, CZC_ANY, "Slovácký" }, |
|
1744 { CZP_MLADY, CZC_ANY, "Uherský" }, |
|
1745 { CZP_MLADY, CZC_ANY, "Starý" }, |
|
1746 { CZP_MLADY, CZC_ANY, "Starý" }, |
|
1747 { CZP_MLADY, CZC_ANY, "Nový" }, |
|
1748 { CZP_MLADY, CZC_ANY, "Nový" }, |
|
1749 { CZP_MLADY, CZC_ANY, "Mladý" }, |
|
1750 { CZP_MLADY, CZC_ANY, "Královský" }, |
|
1751 { CZP_MLADY, CZC_ANY, "Kamenný" }, |
|
1752 { CZP_MLADY, CZC_ANY, "Cihlový" }, |
|
1753 { CZP_MLADY, CZC_ANY, "Divný" }, |
|
1754 { CZP_MLADY, CZC_COLOR, "Cervená" }, |
|
1755 { CZP_MLADY, CZC_COLOR, "Cervená" }, |
|
1756 { CZP_MLADY, CZC_COLOR, "Zelená" }, |
|
1757 { CZP_MLADY, CZC_COLOR, "Zlutá" }, |
|
1758 { CZP_MLADY, CZC_COLOR, "Sivá" }, |
|
1759 { CZP_MLADY, CZC_COLOR, "Sedá" }, |
|
1760 { CZP_MLADY, CZC_COLOR, "Bílá" }, |
|
1761 { CZP_MLADY, CZC_COLOR, "Modrá" }, |
|
1762 { CZP_MLADY, CZC_COLOR, "Ruzová" }, |
|
1763 { CZP_MLADY, CZC_COLOR, "Cerná" }, |
|
1764 { CZP_PRIVL, CZC_ANY, "Králova" }, |
|
1765 { CZP_PRIVL, CZC_ANY, "Janova" }, |
|
1766 { CZP_PRIVL, CZC_ANY, "Karlova" }, |
|
1767 { CZP_PRIVL, CZC_ANY, "Jiríkova" }, |
|
1768 { CZP_PRIVL, CZC_ANY, "Petrova" }, |
|
1769 { CZP_PRIVL, CZC_ANY, "Sudovo" }, |
|
1770 }; |
|
1771 |
|
1772 // Considered a stem for choose/allow matching purposes. |
|
1773 static const struct CzechNameSubst name_czech_subst_full[] = { |
|
1774 { CZG_SMASC, CZA_ALL, CZC_NORMAL | CZC_COLOR, "Sedlec" }, |
|
1775 { CZG_SMASC, CZA_ALL, CZC_NORMAL | CZC_COLOR, "Brod" }, |
|
1776 { CZG_SMASC, CZA_ALL, CZC_NORMAL | CZC_COLOR, "Brod" }, |
|
1777 { CZG_SMASC, CZA_ALL, CZC_NORMAL, "Úval" }, |
|
1778 { CZG_SFEM, CZA_ALL, CZC_NORMAL | CZC_COLOR, "Hora" }, |
|
1779 { CZG_SFEM, CZA_ALL, CZC_NORMAL | CZC_COLOR, "Lhota" }, |
|
1780 { CZG_SFEM, CZA_ALL, CZC_NORMAL | CZC_COLOR, "Lhota" }, |
|
1781 { CZG_SFEM, CZA_ALL, CZC_NORMAL | CZC_COLOR, "Hlava" }, |
|
1782 { CZG_SNEUT, CZA_ALL, CZC_NORMAL | CZC_COLOR, "Pole" }, |
|
1783 { CZG_SNEUT, CZA_ALL, CZC_NORMAL | CZC_COLOR, "Zdár" }, |
|
1784 { CZG_PMASC, CZA_ALL, CZC_NORMAL, "Úvaly" }, |
|
1785 { CZG_PFEM, CZA_ALL, CZC_NORMAL | CZC_COLOR, "Luka" }, |
|
1786 { CZG_PNEUT, CZA_ALL, CZC_NORMAL | CZC_COLOR, "Pole" }, |
|
1787 }; |
|
1788 |
|
1789 // TODO: More stems needed. --pasky |
|
1790 static const struct CzechNameSubst name_czech_subst_stem[] = { |
|
1791 { CZG_SMASC, CZA_MIDDLE, CZC_NORMAL | CZC_COLOR, "Kostel" }, |
|
1792 { CZG_SMASC, CZA_MIDDLE, CZC_NORMAL | CZC_COLOR, "Kláster" }, |
|
1793 { CZG_SMASC, CZA_SHORT, CZC_NORMAL | CZC_COLOR, "Lhot" }, |
|
1794 { CZG_SFEM, CZA_SHORT, CZC_NORMAL | CZC_COLOR, "Lhot" }, |
|
1795 { CZG_SFEM, CZA_SHORT, CZC_NORMAL | CZC_COLOR, "Hur" }, |
|
1796 { CZG_FREE, CZA_MIDDLE | CZA_LONG, CZC_NORMAL, "Sedl" }, |
|
1797 { CZG_FREE, CZA_SHORT | CZA_MIDDLE | CZA_LONG, CZC_NORMAL | CZC_COLOR, "Hrad" }, |
|
1798 { CZG_NFREE, CZA_MIDDLE, CZC_NORMAL, "Pras" }, |
|
1799 { CZG_NFREE, CZA_MIDDLE, CZC_NORMAL, "Baz" }, |
|
1800 { CZG_NFREE, CZA_MIDDLE, CZC_NORMAL, "Tes" }, |
|
1801 { CZG_NFREE, CZA_MIDDLE, CZC_NORMAL, "Uz" }, |
|
1802 { CZG_NFREE, CZA_MIDDLE | CZA_LONG, CZC_NORMAL, "Br" }, |
|
1803 { CZG_NFREE, CZA_MIDDLE | CZA_LONG, CZC_NORMAL, "Vod" }, |
|
1804 { CZG_NFREE, CZA_MIDDLE | CZA_LONG, CZC_NORMAL, "Jan" }, |
|
1805 { CZG_NFREE, CZA_LONG, CZC_NORMAL, "Prach" }, |
|
1806 { CZG_NFREE, CZA_LONG, CZC_NORMAL, "Kunr" }, |
|
1807 { CZG_NFREE, CZA_LONG, CZC_NORMAL, "Strak" }, |
|
1808 { CZG_NFREE, CZA_LONG, CZC_NORMAL, "Vit" }, |
|
1809 { CZG_NFREE, CZA_LONG, CZC_NORMAL, "Vys" }, |
|
1810 { CZG_NFREE, CZA_LONG, CZC_NORMAL, "Zat" }, |
|
1811 { CZG_NFREE, CZA_LONG, CZC_NORMAL, "Zer" }, |
|
1812 { CZG_NFREE, CZA_LONG, CZC_NORMAL, "Stred" }, |
|
1813 { CZG_NFREE, CZA_LONG, CZC_NORMAL, "Harv" }, |
|
1814 { CZG_NFREE, CZA_LONG, CZC_NORMAL, "Pruh" }, |
|
1815 { CZG_NFREE, CZA_LONG, CZC_NORMAL, "Tach" }, |
|
1816 { CZG_NFREE, CZA_LONG, CZC_NORMAL, "Písn" }, |
|
1817 { CZG_NFREE, CZA_LONG, CZC_NORMAL, "Jin" }, |
|
1818 { CZG_NFREE, CZA_LONG, CZC_NORMAL, "Jes" }, |
|
1819 { CZG_NFREE, CZA_LONG, CZC_NORMAL, "Jar" }, |
|
1820 { CZG_NFREE, CZA_LONG, CZC_NORMAL, "Sok" }, |
|
1821 { CZG_NFREE, CZA_LONG, CZC_NORMAL, "Hod" }, |
|
1822 { CZG_NFREE, CZA_LONG, CZC_NORMAL, "Net" }, |
|
1823 { CZG_FREE, CZA_LONG, CZC_NORMAL, "Praz" }, |
|
1824 { CZG_FREE, CZA_LONG, CZC_NORMAL, "Nerat" }, |
|
1825 { CZG_FREE, CZA_LONG, CZC_NORMAL, "Kral" }, |
|
1826 { CZG_FREE, CZA_LONG, CZC_NORMAL | CZC_NOPOSTFIX, "Pan" }, |
|
1827 { CZG_FREE, CZA_SHORT | CZA_MIDDLE | CZA_LONG, CZC_NORMAL, "Odstred" }, |
|
1828 { CZG_FREE, CZA_SHORT | CZA_MIDDLE | CZA_LONG, CZC_NORMAL | CZC_COLOR, "Mrat" }, |
|
1829 { CZG_FREE, CZA_LONG, CZC_NORMAL | CZC_COLOR, "Hlav" }, |
|
1830 { CZG_FREE, CZA_SHORT | CZA_MIDDLE, CZC_NORMAL, "Mer" }, |
|
1831 }; |
|
1832 |
|
1833 // Optional postfix inserted between stem and ending. |
|
1834 static const char *name_czech_subst_postfix[] = { |
|
1835 "av", "an", "at", |
|
1836 "ov", "on", "ot", |
|
1837 "ev", "en", "et", |
|
1838 }; |
|
1839 |
|
1840 // This array must have the both neutral genders at the end! |
|
1841 static const struct CzechNameSubst name_czech_subst_ending[] = { |
|
1842 { CZG_SMASC, CZA_SHORT | CZA_MIDDLE, CZC_ANY, "ec" }, |
|
1843 { CZG_SMASC, CZA_SHORT | CZA_MIDDLE, CZC_ANY, "ín" }, |
|
1844 { CZG_SMASC, CZA_SHORT | CZA_MIDDLE | CZA_LONG, CZC_ANY, "ov" }, |
|
1845 { CZG_SMASC, CZA_SHORT | CZA_LONG, CZC_ANY, "kov" }, |
|
1846 { CZG_SMASC, CZA_LONG, CZC_POSTFIX, "ín" }, |
|
1847 { CZG_SMASC, CZA_LONG, CZC_POSTFIX, "ník" }, |
|
1848 { CZG_SFEM, CZA_SHORT, CZC_ANY, "ka" }, |
|
1849 { CZG_SFEM, CZA_MIDDLE, CZC_ANY, "inka" }, |
|
1850 { CZG_SFEM, CZA_MIDDLE, CZC_NOPOSTFIX, "na" }, |
|
1851 { CZG_SFEM, CZA_MIDDLE, CZC_ANY, "ná" }, |
|
1852 { CZG_SFEM, CZA_LONG, CZC_ANY, "ava" }, |
|
1853 { CZG_PMASC, CZA_LONG, CZC_ANY, "íky" }, |
|
1854 { CZG_PMASC, CZA_LONG, CZC_ANY, "upy" }, |
|
1855 { CZG_PFEM, CZA_LONG, CZC_ANY, "avy" }, |
|
1856 { CZG_PFEM, CZA_SHORT | CZA_MIDDLE | CZA_LONG, CZC_ANY, "ice" }, |
|
1857 { CZG_PNEUT, CZA_SHORT | CZA_MIDDLE, CZC_ANY, "na" }, |
|
1858 { CZG_SNEUT, CZA_SHORT | CZA_MIDDLE, CZC_ANY, "no" }, |
|
1859 { CZG_SNEUT, CZA_LONG, CZC_ANY, "iste" }, |
|
1860 }; |
|
1861 |
|
1862 static const char *name_czech_suffix[] = { |
|
1863 "nad Cydlinou", |
|
1864 "nad Dyjí", |
|
1865 "nad Jihlavou", |
|
1866 "nad Labem", |
|
1867 "nad Lesy", |
|
1868 "nad Moravou", |
|
1869 "nad Nisou", |
|
1870 "nad Odrou", |
|
1871 "nad Ostravicí", |
|
1872 "nad Sázavou", |
|
1873 "nad Vltavou", |
|
1874 "pod Pradedem", |
|
1875 "pod Radhostem", |
|
1876 "pod Rípem", |
|
1877 "pod Snezkou", |
|
1878 "pod Spicákem", |
|
1879 "pod Sedlem", |
|
1880 }; |
|
1881 |
|
1882 |
1661 |
1883 |
1662 static const char *name_romanian_real[]= { |
1884 static const char *name_romanian_real[]= { |
1663 "Adjud", |
1885 "Adjud", |
1664 "Alba Iulia", |
1886 "Alba Iulia", |
1665 "Alexandria", |
1887 "Alexandria", |