X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;ds=sidebyside;f=gdb%2Fvarobj-iter.h;h=4bbf386e9dc4ee0af7fc3f95a9242fafe4792e03;hb=ef186fe54aa6d281a3ff8a9528417e5cc614c797;hp=0422492c6dd15e6e7b269f9b34265fd278c486bc;hpb=b811d2c2920ddcb1adcd438da38e90912b31f45f;p=binutils-gdb.git diff --git a/gdb/varobj-iter.h b/gdb/varobj-iter.h index 0422492c6dd..4bbf386e9dc 100644 --- a/gdb/varobj-iter.h +++ b/gdb/varobj-iter.h @@ -1,5 +1,5 @@ /* Iterator of varobj. - Copyright (C) 2013-2020 Free Software Foundation, Inc. + Copyright (C) 2013-2022 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -19,59 +19,24 @@ /* A node or item of varobj, composed of the name and the value. */ -typedef struct varobj_item +struct varobj_item { /* Name of this item. */ std::string name; /* Value of this item. */ - struct value *value; -} varobj_item; - -struct varobj_iter_ops; + value_ref_ptr value; +}; /* A dynamic varobj iterator "class". */ struct varobj_iter { - /* The 'vtable'. */ - const struct varobj_iter_ops *ops; +public: - /* The varobj this iterator is listing children for. */ - struct varobj *var; + virtual ~varobj_iter () = default; - /* The next raw index we will try to check is available. If it is - equal to number_of_children, then we've already iterated the - whole set. */ - int next_raw_index; + virtual std::unique_ptr next () = 0; }; -/* The vtable of the varobj iterator class. */ - -struct varobj_iter_ops -{ - /* Destructor. Releases everything from SELF (but not SELF - itself). */ - void (*dtor) (struct varobj_iter *self); - - /* Returns the next object or NULL if it has reached the end. */ - varobj_item *(*next) (struct varobj_iter *self); -}; - -/* Returns the next varobj or NULL if it has reached the end. */ - -#define varobj_iter_next(ITER) (ITER)->ops->next (ITER) - -/* Delete a varobj_iter object. */ - -#define varobj_iter_delete(ITER) \ - do \ - { \ - if ((ITER) != NULL) \ - { \ - (ITER)->ops->dtor (ITER); \ - xfree (ITER); \ - } \ - } while (0) - #endif /* VAROBJ_ITER_H */