(Class<?> type, TypeMapper mapper, boolean allowObjects)
| 1778 | private static final int CVT_BYTE = 29; |
| 1779 | |
| 1780 | private static int getConversion(Class<?> type, TypeMapper mapper, boolean allowObjects) { |
| 1781 | if (type == Void.class) type = void.class; |
| 1782 | |
| 1783 | if (mapper != null) { |
| 1784 | FromNativeConverter fromNative = mapper.getFromNativeConverter(type); |
| 1785 | ToNativeConverter toNative = mapper.getToNativeConverter(type); |
| 1786 | if (fromNative != null) { |
| 1787 | Class<?> nativeType = fromNative.nativeType(); |
| 1788 | if (nativeType == String.class) { |
| 1789 | return CVT_TYPE_MAPPER_STRING; |
| 1790 | } |
| 1791 | if (nativeType == WString.class) { |
| 1792 | return CVT_TYPE_MAPPER_WSTRING; |
| 1793 | } |
| 1794 | return CVT_TYPE_MAPPER; |
| 1795 | } |
| 1796 | if (toNative != null) { |
| 1797 | Class<?> nativeType = toNative.nativeType(); |
| 1798 | if (nativeType == String.class) { |
| 1799 | return CVT_TYPE_MAPPER_STRING; |
| 1800 | } |
| 1801 | if (nativeType == WString.class) { |
| 1802 | return CVT_TYPE_MAPPER_WSTRING; |
| 1803 | } |
| 1804 | return CVT_TYPE_MAPPER; |
| 1805 | } |
| 1806 | } |
| 1807 | |
| 1808 | if (Pointer.class.isAssignableFrom(type)) { |
| 1809 | return CVT_POINTER; |
| 1810 | } |
| 1811 | if (String.class == type) { |
| 1812 | return CVT_STRING; |
| 1813 | } |
| 1814 | if (WString.class.isAssignableFrom(type)) { |
| 1815 | return CVT_WSTRING; |
| 1816 | } |
| 1817 | if (Platform.HAS_BUFFERS && Buffers.isBuffer(type)) { |
| 1818 | return CVT_BUFFER; |
| 1819 | } |
| 1820 | if (Structure.class.isAssignableFrom(type)) { |
| 1821 | if (Structure.ByValue.class.isAssignableFrom(type)) { |
| 1822 | return CVT_STRUCTURE_BYVAL; |
| 1823 | } |
| 1824 | return CVT_STRUCTURE; |
| 1825 | } |
| 1826 | if (type.isArray()) { |
| 1827 | switch(type.getName().charAt(1)) { |
| 1828 | case 'Z': return CVT_ARRAY_BOOLEAN; |
| 1829 | case 'B': return CVT_ARRAY_BYTE; |
| 1830 | case 'S': return CVT_ARRAY_SHORT; |
| 1831 | case 'C': return CVT_ARRAY_CHAR; |
| 1832 | case 'I': return CVT_ARRAY_INT; |
| 1833 | case 'J': return CVT_ARRAY_LONG; |
| 1834 | case 'F': return CVT_ARRAY_FLOAT; |
| 1835 | case 'D': return CVT_ARRAY_DOUBLE; |
| 1836 | default: break; |
| 1837 | } |
no test coverage detected