view anagram/guisupport/tracedc.h @ 15:f5acaf0c8a29

Don't cast through "volatile int". Causes a gcc warning nowadays. XXX: should put something else back here to frighten the optimizer
author David A. Holland
date Tue, 31 May 2022 01:00:55 -0400
parents 13d2b8934445
children
line wrap: on
line source

/*
 * AnaGram, A System for Syntax Directed Programming
 * Copyright 1993-2002 Parsifal Software. All Rights Reserved.
 * See the file COPYING for license and usage terms.
 *
 * tracedc.h
 */

#ifndef TRACEDC_H
#define TRACEDC_H

#include "dc.h"
#include "tsd.h"


class trace_window_dc : public dc {
public:
  dc::ref menu;
  unsigned look_ahead;
  tsd *parser_stack;

  trace_window_dc(AgString, tsd *);
  trace_window_dc(AgString, AgString, tsd *);
  trace_window_dc(AgString, tsd *, unsigned, unsigned, unsigned);
  trace_window_dc(trace_window_dc &x)
  : dc(x), look_ahead(x.look_ahead),
    parser_stack(copy_tuple_set(x.parser_stack))
    {}

  ~trace_window_dc(void) {
    dc::ref m(menu);
    menu.discardData();
    //close_window(m);
    //if (!clone()) delete_tsd(parser_stack);
    delete_tsd(parser_stack);
  }
  void init(void);
  class ref : public dc::ref {
  public:
    ref(void) {}
    ref(trace_window_dc *x) : dc::ref(x) {}
    ref(const ref &x) : dc::ref(x) {}
    ref(dc::ref x) : dc::ref(x) {}

    operator trace_window_dc *(void) {
      return (trace_window_dc *) window;
    }
    trace_window_dc *operator ->(void) {
      return (trace_window_dc *) window;
    }
  };
};

#endif /* TRACEDC_H */