]> git.saurik.com Git - cycript.git/blobdiff - sig/ffi_type.cpp
Embed core libraries for node.js in libcycript.db.
[cycript.git] / sig / ffi_type.cpp
index 35700e9e598fd1e9e133540da9003004bf0b7347..2b6c0d3de61c4d24e701c39fa1dc139716c0096d 100644 (file)
 #include "sig/ffi_type.hpp"
 #include "sig/types.hpp"
 
+#if FFI_LONG_LONG_MAX == 9223372036854775807LL
 #define ffi_type_slonglong ffi_type_sint64
 #define ffi_type_ulonglong ffi_type_uint64
+#else
+#error need to configure for long long
+#endif
 
 namespace sig {
 
@@ -59,6 +63,13 @@ ffi_type *Primitive<signed int>::GetFFI(CYPool &pool) const {
     return &ffi_type_sint;
 }
 
+#ifdef __SIZEOF_INT128__
+template <>
+ffi_type *Primitive<signed __int128>::GetFFI(CYPool &pool) const {
+    _assert(false);
+}
+#endif
+
 template <>
 ffi_type *Primitive<signed long int>::GetFFI(CYPool &pool) const {
     return &ffi_type_slong;
@@ -84,6 +95,13 @@ ffi_type *Primitive<unsigned int>::GetFFI(CYPool &pool) const {
     return &ffi_type_uint;
 }
 
+#ifdef __SIZEOF_INT128__
+template <>
+ffi_type *Primitive<unsigned __int128>::GetFFI(CYPool &pool) const {
+    _assert(false);
+}
+#endif
+
 template <>
 ffi_type *Primitive<unsigned long int>::GetFFI(CYPool &pool) const {
     return &ffi_type_ulong;
@@ -153,6 +171,10 @@ ffi_type *Object::GetFFI(CYPool &pool) const {
 }
 #endif
 
+ffi_type *Enum::GetFFI(CYPool &pool) const {
+    return type.GetFFI(pool);
+}
+
 ffi_type *Aggregate::GetFFI(CYPool &pool) const {
     // XXX: we can totally make overlap work
     _assert(!overlap);