Add ByteRange/StringPiece Conversion for Cython
[folly.git] / folly / python / range.pxd
diff --git a/folly/python/range.pxd b/folly/python/range.pxd
new file mode 100644 (file)
index 0000000..fef1dd9
--- /dev/null
@@ -0,0 +1,17 @@
+cdef extern from "folly/Range.h" namespace "folly":
+    cdef cppclass Range[T]:
+        Range()
+        Range(T, int)
+        T data()
+        int size()
+
+ctypedef Range[const char*] StringPiece
+ctypedef Range[const unsigned char*] ByteRange
+
+ctypedef fused R:
+    StringPiece
+    ByteRange
+
+# Conversion Helpers
+cdef inline bytes to_bytes(R range):
+    return <bytes>range.data()[:range.size()]