+ {
+ ptr->options.is_allocated= false;
+ }
+
+#if 0
+ memcached_set_purging(ptr, false);
+ memcached_set_processing_input(ptr, false);
+#endif
+
+ if (! _memcached_init(ptr))
+ {
+ memcached_free(ptr);
+ return NULL;
+ }
+
+ if (! memcached_result_create(ptr, &ptr->result))
+ {
+ memcached_free(ptr);
+ return NULL;
+ }
+
+ WATCHPOINT_ASSERT_INITIALIZED(&ptr->result);
+
+ return ptr;
+}
+
+memcached_st *memcached_create_with_options(const char *string, size_t length)
+{
+ memcached_st *self= memcached_create(NULL);
+
+ if (! self)
+ return NULL;
+
+ memcached_parse_options(self, string, length);
+
+ return self;
+}
+
+void memcached_reset(memcached_st *ptr)
+{
+ WATCHPOINT_ASSERT(ptr);
+ if (! ptr)
+ return;
+
+ bool stored_is_allocated= memcached_is_allocated(ptr);
+ _free(ptr, false);
+ memcached_create(ptr);
+ memcached_set_allocated(ptr, stored_is_allocated);
+}
+
+void memcached_servers_reset(memcached_st *ptr)
+{
+ memcached_server_list_free(memcached_server_list(ptr));
+
+ memcached_server_list_set(ptr, NULL);
+ ptr->number_of_hosts= 0;
+ if (ptr->last_disconnected_server)
+ {
+ memcached_server_free(ptr->last_disconnected_server);
+ }
+ ptr->last_disconnected_server= NULL;
+ ptr->server_failure_limit= 0;
+}
+
+void memcached_reset_last_disconnected_server(memcached_st *ptr)
+{
+ if (ptr->last_disconnected_server)
+ {
+ memcached_server_free(ptr->last_disconnected_server);
+ ptr->last_disconnected_server= NULL;
+ }
+}
+
+void memcached_free(memcached_st *ptr)
+{
+ _free(ptr, true);