view anagram/support/sparse.h @ 6:607e3be6bad8

Adjust to the moving target called the C++ standard. Apparently nowadays it's not allowed to define an explicit copy constructor but not an assignment operator. Consequently, defining the explicit copy constructor in terms of the implicit/automatic assignment operator for general convenience no longer works. Add assignment operators. Caution: not tested with the IBM compiler, but there's no particular reason it shouldn't work.
author David A. Holland
date Mon, 30 May 2022 23:46:22 -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.
 *
 * sparse.h
 */

#ifndef SPARSE_H
#define SPARSE_H

#include "agbaltree.h"

class AgSparseIntArray {
public:
  struct Pair {
    int key;
    int value;
    Pair(int k, int v = 0) : key(k), value(v) {}
    int operator < (const Pair &p) const { return key < p.key; }
  };

protected:
  AgBalancedTree<Pair> tree;

public:
  AgSparseIntArray() {}
  ~AgSparseIntArray() {}
  int &operator [] (int k) {
    Pair pair(k), *pointer = &pair;
    tree.identify(pointer);
    return pointer->value;
  }
  void reset() { tree.reset(); }
};


#endif /* SPARSE_H */