[subset-input] Use shared_ptr for sets
This commit is contained in:
parent
ef005bc82a
commit
875f9f6f22
|
@ -46,7 +46,7 @@ hb_subset_input_create_or_fail (void)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
for (auto& set : input->sets_iter ())
|
for (auto& set : input->sets_iter ())
|
||||||
set = hb_set_create ();
|
set = hb::shared_ptr<hb_set_t> (hb_set_create ());
|
||||||
|
|
||||||
if (input->in_error ())
|
if (input->in_error ())
|
||||||
{
|
{
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
#include "hb-subset.h"
|
#include "hb-subset.h"
|
||||||
#include "hb-map.hh"
|
#include "hb-map.hh"
|
||||||
#include "hb-set.hh"
|
#include "hb-set.hh"
|
||||||
|
#include "hb-cplusplus.hh"
|
||||||
#include "hb-font.hh"
|
#include "hb-font.hh"
|
||||||
|
|
||||||
struct hb_ot_name_record_ids_t
|
struct hb_ot_name_record_ids_t
|
||||||
|
@ -82,11 +82,10 @@ HB_MARK_AS_FLAG_T (hb_subset_flags_t);
|
||||||
|
|
||||||
struct hb_subset_input_t
|
struct hb_subset_input_t
|
||||||
{
|
{
|
||||||
|
hb_subset_input_t () {}
|
||||||
|
|
||||||
~hb_subset_input_t ()
|
~hb_subset_input_t ()
|
||||||
{
|
{
|
||||||
for (hb_set_t* set : sets_iter ())
|
|
||||||
hb_set_destroy (set);
|
|
||||||
|
|
||||||
#ifdef HB_EXPERIMENTAL_API
|
#ifdef HB_EXPERIMENTAL_API
|
||||||
for (auto _ : name_table_overrides)
|
for (auto _ : name_table_overrides)
|
||||||
_.second.fini ();
|
_.second.fini ();
|
||||||
|
@ -96,19 +95,19 @@ struct hb_subset_input_t
|
||||||
hb_object_header_t header;
|
hb_object_header_t header;
|
||||||
|
|
||||||
struct sets_t {
|
struct sets_t {
|
||||||
hb_set_t *glyphs;
|
hb::shared_ptr<hb_set_t> glyphs;
|
||||||
hb_set_t *unicodes;
|
hb::shared_ptr<hb_set_t> unicodes;
|
||||||
hb_set_t *no_subset_tables;
|
hb::shared_ptr<hb_set_t> no_subset_tables;
|
||||||
hb_set_t *drop_tables;
|
hb::shared_ptr<hb_set_t> drop_tables;
|
||||||
hb_set_t *name_ids;
|
hb::shared_ptr<hb_set_t> name_ids;
|
||||||
hb_set_t *name_languages;
|
hb::shared_ptr<hb_set_t> name_languages;
|
||||||
hb_set_t *layout_features;
|
hb::shared_ptr<hb_set_t> layout_features;
|
||||||
hb_set_t *layout_scripts;
|
hb::shared_ptr<hb_set_t> layout_scripts;
|
||||||
};
|
};
|
||||||
|
|
||||||
union {
|
union {
|
||||||
sets_t sets;
|
sets_t sets;
|
||||||
hb_set_t* set_ptrs[sizeof (sets_t) / sizeof (hb_set_t*)];
|
hb::shared_ptr<hb_set_t> set_ptrs[sizeof (sets_t) / sizeof (hb_set_t*)];
|
||||||
};
|
};
|
||||||
|
|
||||||
unsigned flags;
|
unsigned flags;
|
||||||
|
@ -127,9 +126,9 @@ struct hb_subset_input_t
|
||||||
return sizeof (set_ptrs) / sizeof (hb_set_t*);
|
return sizeof (set_ptrs) / sizeof (hb_set_t*);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline hb_array_t<hb_set_t*> sets_iter ()
|
inline hb_array_t<hb::shared_ptr<hb_set_t>> sets_iter ()
|
||||||
{
|
{
|
||||||
return hb_array_t<hb_set_t*> (set_ptrs, num_sets ());
|
return hb_array (set_ptrs);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool in_error () const
|
bool in_error () const
|
||||||
|
|
Loading…
Reference in New Issue