MEDIUM: pattern: delete() function uses the pat_ref_elt to find the element to be removed

All the pattern delete function can use her reference to the original
"struct pat_ref_elt" to find the element to be remove. The functions
pat_del_list_str() and pat_del_meth() were deleted because after
applying this modification, they have the same code than pat_del_list_ptr().
diff --git a/include/proto/pattern.h b/include/proto/pattern.h
index e6afa51..be9975e 100644
--- a/include/proto/pattern.h
+++ b/include/proto/pattern.h
@@ -68,12 +68,11 @@
  * never fails.
  *
  */
-void pat_del_list_val(struct pattern_expr *expr, struct pattern *pat);
-void pat_del_tree_ip(struct pattern_expr *expr, struct pattern *pat);
-void pat_del_list_ptr(struct pattern_expr *expr, struct pattern *pat);
-void pat_del_tree_str(struct pattern_expr *expr, struct pattern *pat);
-void pat_del_list_str(struct pattern_expr *expr, struct pattern *pat);
-void pat_del_list_reg(struct pattern_expr *expr, struct pattern *pat);
+void pat_del_list_val(struct pattern_expr *expr, struct pat_ref_elt *ref);
+void pat_del_tree_ip(struct pattern_expr *expr, struct pat_ref_elt *ref);
+void pat_del_list_ptr(struct pattern_expr *expr, struct pat_ref_elt *ref);
+void pat_del_tree_str(struct pattern_expr *expr, struct pat_ref_elt *ref);
+void pat_del_list_reg(struct pattern_expr *expr, struct pat_ref_elt *ref);
 
 /*
  *
@@ -191,6 +190,7 @@
 int pat_ref_add(struct pat_ref *ref, const char *pattern, const char *sample, char **err);
 int pat_ref_set(struct pat_ref *ref, const char *pattern, const char *sample);
 int pat_ref_delete(struct pat_ref *ref, const char *key);
+int pat_ref_delete_by_id(struct pat_ref *ref, struct pat_ref_elt *refelt);
 void pat_ref_prune(struct pat_ref *ref);
 int pat_ref_load(struct pat_ref *ref, struct pattern_expr *expr, int patflags, int soe, char **err);
 
@@ -208,7 +208,7 @@
 struct pattern_expr *pattern_lookup_expr(struct pattern_head *head, struct pat_ref *ref);
 struct pattern_expr *pattern_new_expr(struct pattern_head *head, struct pat_ref *ref, char **err);
 struct sample_storage **pattern_find_smp(const char *key, struct pattern_expr *expr, char **err);
-int pattern_delete(const char *key, struct pattern_expr *expr, char **err);
+int pattern_delete(struct pattern_expr *expr, struct pat_ref_elt *ref);
 
 
 #endif