davemds pushed a commit to branch master.

http://git.enlightenment.org/bindings/python/python-efl.git/commit/?id=4557daa602e259e77afc92c6c3a631d6540e8536

commit 4557daa602e259e77afc92c6c3a631d6540e8536
Author: Dave Andreoli <[email protected]>
Date:   Sat Apr 15 20:20:08 2017 +0200

    EcoreConUrl is no more an Eo object :(
    
    #FollowTheWhiteRabbit
---
 efl/ecore_con/efl.ecore_con_url.pxi | 98 ++++++++++++++++++++++---------------
 include/efl.ecore_con.pxd           |  5 +-
 2 files changed, 62 insertions(+), 41 deletions(-)

diff --git a/efl/ecore_con/efl.ecore_con_url.pxi 
b/efl/ecore_con/efl.ecore_con_url.pxi
index 1b38f6c..468f14d 100644
--- a/efl/ecore_con/efl.ecore_con_url.pxi
+++ b/efl/ecore_con/efl.ecore_con_url.pxi
@@ -37,7 +37,7 @@ cdef class EventUrlProgress(Event):
         cdef Ecore_Con_Event_Url_Progress *event
         event = <Ecore_Con_Event_Url_Progress*>ev
 
-        self.url = object_from_instance(event.url_con)
+        self.url = <Url>ecore_con_url_data_get(event.url_con)
         self.down_total = event.down.total
         self.down_now = event.down.now
         self.up_total = event.up.total
@@ -61,7 +61,7 @@ cdef class EventUrlComplete(Event):
         cdef Ecore_Con_Event_Url_Complete *event
         event = <Ecore_Con_Event_Url_Complete*>ev
 
-        self.url = object_from_instance(event.url_con)
+        self.url = <Url>ecore_con_url_data_get(event.url_con)
         self.status = event.status
         return 1
 
@@ -87,7 +87,7 @@ cdef class EventUrlData(Event):
         cdef Ecore_Con_Event_Url_Data *event
         event = <Ecore_Con_Event_Url_Data*>ev
 
-        self.url = object_from_instance(event.url_con)
+        self.url = <Url>ecore_con_url_data_get(event.url_con)
         self.size = event.size
         self.data = event.data[:event.size] #raw string copy
         return 1
@@ -211,15 +211,22 @@ cdef class Url(Eo):
         """
         if isinstance(url, unicode): url = PyUnicode_AsUTF8String(url)
         if custom_request is None:
-            self._set_obj(ecore_con_url_new(
-                <const char *>url if url is not None else NULL))
+            # From efl 1.19 url are no more Eo objects in C, thus
+            # we cannot use Eo.obj and _set_obj() anymore :(
+            # self._set_obj(ecore_con_url_new(
+            #     <const char *>url if url is not None else NULL))
+            self.obj2 = ecore_con_url_new(
+                <const char *>url if url is not None else NULL)
+            
         else:
             if isinstance(custom_request, unicode):
                 custom_request = PyUnicode_AsUTF8String(custom_request)
-            self._set_obj(ecore_con_url_custom_new(
+            self.obj2 = ecore_con_url_custom_new(
                 <const char *>url if url is not None else NULL,
-                <const char *>custom_request if custom_request is not None 
else NULL))
-    
+                <const char *>custom_request if custom_request is not None 
else NULL)
+
+        ecore_con_url_data_set(self.obj2, <void *>self)
+        Py_INCREF(self)
         self._set_properties_from_keyword_args(kargs)
 
     def __repr__(self):
@@ -235,7 +242,18 @@ cdef class Url(Eo):
 
         """
         GEF.callback_del_full(self)
-        ecore_con_url_free(self.obj)
+        ecore_con_url_free(self.obj2)
+        self.obj2 = NULL
+        Py_DECREF(self)
+ 
+    def is_deleted(self):
+        """Check if the object has been deleted thus leaving the object 
shallow.
+
+        :return: True if the object has been deleted yet, False otherwise.
+        :rtype: bool
+
+        """
+        return bool(self.obj2 == NULL)
 
     property fd:
         """Set up a file to have response data written into.
@@ -254,7 +272,7 @@ cdef class Url(Eo):
 
         """
         def __set__(self, int fd):
-            ecore_con_url_fd_set(self.obj, fd)
+            ecore_con_url_fd_set(self.obj2, fd)
 
     def get(self):
         """Send a GET request.
@@ -266,7 +284,7 @@ cdef class Url(Eo):
         :return: ``True`` on success, ``False`` on error.
         
         """
-        return bool(ecore_con_url_get(self.obj))
+        return bool(ecore_con_url_get(self.obj2))
 
     def head(self):
         """Send a HEAD request.
@@ -278,7 +296,7 @@ cdef class Url(Eo):
         :return: ``True`` on success, ``False`` on error.
         
         """
-        return bool(ecore_con_url_head(self.obj))
+        return bool(ecore_con_url_head(self.obj2))
 
     def post(self, bytes data, content_type):
         """Send a post request.
@@ -298,7 +316,7 @@ cdef class Url(Eo):
         """
         if isinstance(content_type, unicode):
             content_type = PyUnicode_AsUTF8String(content_type)
-        return bool(ecore_con_url_post(self.obj,
+        return bool(ecore_con_url_post(self.obj2,
             <const void*><const char *>data if data is not None else NULL,
             len(data),
             <const char *>content_type if content_type is not None else NULL))
@@ -317,7 +335,7 @@ cdef class Url(Eo):
         :type timestamp: double
 
         """
-        ecore_con_url_time(self.obj, time_condition, timestamp)
+        ecore_con_url_time(self.obj2, time_condition, timestamp)
 
     def ftp_upload(self, filename, user, passwd, upload_dir):
         """Upload a file to an ftp site.
@@ -335,7 +353,7 @@ cdef class Url(Eo):
         if isinstance(user, unicode): user = PyUnicode_AsUTF8String(user)
         if isinstance(passwd, unicode): passwd = PyUnicode_AsUTF8String(passwd)
         if isinstance(upload_dir, unicode): upload_dir = 
PyUnicode_AsUTF8String(upload_dir)
-        return bool(ecore_con_url_ftp_upload(self.obj,
+        return bool(ecore_con_url_ftp_upload(self.obj2,
                 <const char *>filename if filename is not None else NULL,
                 <const char *>user if user is not None else NULL,
                 <const char *>passwd if passwd is not None else NULL,
@@ -348,7 +366,7 @@ cdef class Url(Eo):
 
         """
         def __set__(self, bint use_epsv):
-            ecore_con_url_ftp_use_epsv_set(self.obj, use_epsv)
+            ecore_con_url_ftp_use_epsv_set(self.obj2, use_epsv)
 
     def cookies_init(self):
         """Enable the cookie engine for subsequent HTTP requests. 
@@ -358,7 +376,7 @@ cdef class Url(Eo):
         in new HTTP requests.
 
         """
-        ecore_con_url_cookies_init(self.obj)
+        ecore_con_url_cookies_init(self.obj2)
 
     def cookies_clear(self):
         """Clear currently loaded cookies.
@@ -380,7 +398,7 @@ cdef class Url(Eo):
             this handler.
 
         """
-        ecore_con_url_cookies_clear(self.obj)
+        ecore_con_url_cookies_clear(self.obj2)
 
     def cookies_session_clear(self):
         """Clear currently loaded session cookies.
@@ -407,7 +425,7 @@ cdef class Url(Eo):
             :attr:`cookies_ignore_old_session`.
 
         """
-        ecore_con_url_cookies_session_clear(self.obj)
+        ecore_con_url_cookies_session_clear(self.obj2)
 
     def cookies_file_add(self, file_name):
         """Add a file to the list of files from which to load cookies.
@@ -435,7 +453,7 @@ cdef class Url(Eo):
         """
         if isinstance(file_name, unicode):
             file_name = PyUnicode_AsUTF8String(file_name)
-        ecore_con_url_cookies_file_add(self.obj,
+        ecore_con_url_cookies_file_add(self.obj2,
                     <const char *>file_name if file_name is not None else NULL)
 
     property cookies_jar_file:
@@ -460,11 +478,11 @@ cdef class Url(Eo):
         def __set__(self, cookiejar_file):
             if isinstance(cookiejar_file, unicode):
                 cookiejar_file = PyUnicode_AsUTF8String(cookiejar_file)
-            ecore_con_url_cookies_jar_file_set(self.obj,
+            ecore_con_url_cookies_jar_file_set(self.obj2,
                 <const char *>cookiejar_file if cookiejar_file is not None 
else NULL)
             if isinstance(cookiejar_file, unicode):
                 cookiejar_file = PyUnicode_AsUTF8String(cookiejar_file)
-            ecore_con_url_cookies_jar_file_set(self.obj,
+            ecore_con_url_cookies_jar_file_set(self.obj2,
                 <const char *>cookiejar_file if cookiejar_file is not None 
else NULL)
 
     def cookies_jar_write(self):
@@ -480,7 +498,7 @@ cdef class Url(Eo):
         .. seealso:: :attr:`cookies_jar_file`
 
         """
-        ecore_con_url_cookies_jar_write(self.obj)
+        ecore_con_url_cookies_jar_write(self.obj2)
     
     property cookies_ignore_old_session:
         """Control whether session cookies from previous sessions shall be 
loaded. 
@@ -500,7 +518,7 @@ cdef class Url(Eo):
 
         """
         def __set__(self, bint ignore):
-            ecore_con_url_cookies_ignore_old_session_set(self.obj, ignore)
+            ecore_con_url_cookies_ignore_old_session_set(self.obj2, ignore)
 
     property ssl_verify_peer:
         """Toggle libcurl's verify peer's certificate option. 
@@ -513,7 +531,7 @@ cdef class Url(Eo):
 
         """
         def __set__(self, bint verify):
-            ecore_con_url_ssl_verify_peer_set(self.obj, verify)
+            ecore_con_url_ssl_verify_peer_set(self.obj2, verify)
 
     property ssl_ca:
         """Set a custom CA to trust for SSL/TLS connections. 
@@ -532,7 +550,7 @@ cdef class Url(Eo):
         def __set__(self, ca_path):
             if isinstance(ca_path, unicode):
                 ca_path = PyUnicode_AsUTF8String(ca_path)
-            ecore_con_url_ssl_ca_set(self.obj,
+            ecore_con_url_ssl_ca_set(self.obj2,
                 <const char *>ca_path if ca_path is not None else NULL)
 
     property proxy:
@@ -552,7 +570,7 @@ cdef class Url(Eo):
         """
         def __set__(self, proxy):
             if isinstance(proxy, unicode): proxy = 
PyUnicode_AsUTF8String(proxy)
-            ecore_con_url_proxy_set(self.obj,
+            ecore_con_url_proxy_set(self.obj2,
                             <const char *>proxy if proxy is not None else NULL)
 
     property proxy_username:
@@ -566,7 +584,7 @@ cdef class Url(Eo):
         """
         def __set__(self, user):
             if isinstance(user, unicode): user = PyUnicode_AsUTF8String(user)
-            ecore_con_url_proxy_username_set(self.obj,
+            ecore_con_url_proxy_username_set(self.obj2,
                             <const char *>user if user is not None else NULL)
 
     property proxy_password:
@@ -580,7 +598,7 @@ cdef class Url(Eo):
         """
         def __set__(self, passwd):
             if isinstance(passwd, unicode): passwd = 
PyUnicode_AsUTF8String(passwd)
-            ecore_con_url_proxy_username_set(self.obj,
+            ecore_con_url_proxy_username_set(self.obj2,
                             <const char *>passwd if passwd is not None else 
NULL)
 
     property timeout:
@@ -595,7 +613,7 @@ cdef class Url(Eo):
 
         """
         def __set__(self, double timeout):
-            ecore_con_url_timeout_set(self.obj, timeout)
+            ecore_con_url_timeout_set(self.obj2, timeout)
 
     property http_version:
         """The HTTP version used for the request.
@@ -607,7 +625,7 @@ cdef class Url(Eo):
 
         """
         def __set__(self, Ecore_Con_Url_Http_Version version):
-            ecore_con_url_http_version_set(self.obj, version)
+            ecore_con_url_http_version_set(self.obj2, version)
 
     property status_code:
         """The returned HTTP STATUS code. 
@@ -619,7 +637,7 @@ cdef class Url(Eo):
 
         """
         def __get__(self):
-            return ecore_con_url_status_code_get(self.obj)
+            return ecore_con_url_status_code_get(self.obj2)
 
     property url:
         """Controls the URL to send the request to.
@@ -628,11 +646,11 @@ cdef class Url(Eo):
 
         """
         def __get__(self):
-            return _ctouni(ecore_con_url_url_get(self.obj))
+            return _ctouni(ecore_con_url_url_get(self.obj2))
 
         def __set__(self, url):
             if isinstance(url, unicode): url = PyUnicode_AsUTF8String(url)
-            ecore_con_url_url_set(self.obj, <const char *>url if url is not 
None else NULL)
+            ecore_con_url_url_set(self.obj2, <const char *>url if url is not 
None else NULL)
 
     property verbose:
         """Toggle libcurl's verbose output. 
@@ -645,7 +663,7 @@ cdef class Url(Eo):
 
         """
         def __set__(self, bint verbose):
-            ecore_con_url_verbose_set(self.obj, verbose)
+            ecore_con_url_verbose_set(self.obj2, verbose)
 
     def additional_header_add(self, key, value):
         """Add an additional header to the request connection object. 
@@ -662,7 +680,7 @@ cdef class Url(Eo):
         """
         if isinstance(key, unicode): key = PyUnicode_AsUTF8String(key)
         if isinstance(value, unicode): value = PyUnicode_AsUTF8String(value)
-        ecore_con_url_additional_header_add(self.obj,
+        ecore_con_url_additional_header_add(self.obj2,
                            <const char *>key if key is not None else NULL,
                            <const char *>value if value is not None else NULL)
 
@@ -673,7 +691,7 @@ cdef class Url(Eo):
         (previously added with :func:additional_header_add`).
 
         """
-        ecore_con_url_additional_headers_clear(self.obj)
+        ecore_con_url_additional_headers_clear(self.obj2)
 
     property response_headers:
         """The headers from last request sent. 
@@ -687,7 +705,7 @@ cdef class Url(Eo):
         """
         def __get__(self):
             return eina_list_strings_to_python_list(
-                        ecore_con_url_response_headers_get(self.obj))
+                        ecore_con_url_response_headers_get(self.obj2))
 
     property received_bytes:
         """The number of bytes received. 
@@ -699,7 +717,7 @@ cdef class Url(Eo):
 
         """
         def __get__(self):
-            return ecore_con_url_received_bytes_get(self.obj)
+            return ecore_con_url_received_bytes_get(self.obj2)
 
     def httpauth_set(self, username, password, bint safe):
         """Set to use http auth, with given username and password
@@ -719,7 +737,7 @@ cdef class Url(Eo):
             username = PyUnicode_AsUTF8String(username)
         if isinstance(password, unicode):
             password = PyUnicode_AsUTF8String(password)
-        return bool(ecore_con_url_httpauth_set(self.obj,
+        return bool(ecore_con_url_httpauth_set(self.obj2,
                     <const char *>username if username is not None else NULL,
                     <const char *>password if password is not None else NULL,
                     safe))
diff --git a/include/efl.ecore_con.pxd b/include/efl.ecore_con.pxd
index 3617c6d..c2e9bab 100644
--- a/include/efl.ecore_con.pxd
+++ b/include/efl.ecore_con.pxd
@@ -71,6 +71,8 @@ cdef extern from "Ecore_Con.h":
     void              ecore_con_url_pipeline_set(Eina_Bool enable)
     Eina_Bool         ecore_con_url_pipeline_get()
     Eina_Bool         ecore_con_lookup(const char *name, Ecore_Con_Dns_Cb 
done_cb, const void *data)
+    void              ecore_con_url_data_set(Ecore_Con_Url *url_con, void 
*data)
+    void             *ecore_con_url_data_get(Ecore_Con_Url *url_con)
 
     Ecore_Con_Url    *ecore_con_url_new(const char *url)
     void              ecore_con_url_free(Ecore_Con_Url *url_obj)
@@ -113,7 +115,8 @@ cdef extern from "Ecore_Con.h":
 
 
 cdef class Url(Eo):
-    pass
+    # we cannot use Eo.obj here because Url is no more eo objects in C
+    cdef Ecore_Con_Url *obj2
 
 cdef class Lookup(object):
     cdef object done_cb

-- 


Reply via email to