typedef class screen_info { public: int index; canvas_t icon; label_t value; canvas_t bar; graph_buffer_t graph; screen_packet_t packet; screen_info* next; char value_sz[64]; char old_format[16]; float old_value_max; screen_info(); screen_info(const screen_info& rhs); screen_info& operator=(const screen_info& rhs); virtual ~screen_info(); } screen_info_t; ... screen_t main_screen; screen_info_t* first_segment = nullptr; screen_info_t* tail_segment = nullptr; screen_info::screen_info() : index(-1),icon(main_screen),value(main_screen),bar(main_screen), graph(), packet(), next(nullptr) { } screen_info::screen_info(const screen_info& rhs) : index(rhs.index), icon(rhs.icon), value(rhs.value), bar(rhs.bar), graph(rhs.graph), packet(rhs.packet), next(rhs.next) { } screen_info& screen_info::operator=(const screen_info& rhs) { index = rhs.index; icon = rhs.icon; value = rhs.value; bar = rhs.bar; graph = rhs.graph; packet = rhs.packet; next = rhs.next; return *this; } screen_info::~screen_info() { icon.on_paint(nullptr); bar.on_paint(nullptr); graph.clear(); } screen_info_t* segment_add() { auto result = new screen_info_t(); if(first_segment==nullptr) { first_segment = result; tail_segment = result; return result; } if(result==nullptr) { return result; } tail_segment->next = result; tail_segment = result; return result; } size_t segment_count() { screen_info_t* seg=first_segment; size_t result = 0; while(seg!=nullptr) { seg=seg->next; ++result; } return result; } void segment_clear_all() { screen_info_t* seg=first_segment; while(seg!=nullptr) { screen_info_t* n = seg->next; delete seg; seg=n; } first_segment = nullptr; tail_segment = nullptr; }
nullptr
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)