view anagram/agcore/checksum.h @ 8:ec2b657edf13

Add explicit lint-comment-style fallthrough annotations. GCC now assumes that if you don't have these you're making a mistake, which is annoying. XXX: This changeset updates the AG output files only (by hand) and is XXX: abusive - rebuilding them will erase the change. However, I need XXX: to get things to build before I can try to get AG to issue the XXX: annotations itself, so this seems like a reasonable expedient.
author David A. Holland
date Mon, 30 May 2022 23:51:43 -0400
parents 13d2b8934445
children
line wrap: on
line source

/*
 * AnaGram, A System for Syntax Directed Programming
 * Copyright 1993-1999 Parsifal Software. All Rights Reserved.
 * Copyright 2006 David A. Holland. All Rights Reserved.
 * See the file COPYING for license and usage terms.
 *
 * checksum.h - self-checksum module
 */

#ifndef CHECKSUM_H
#define CHECKSUM_H

enum summable {
  SUM_AG1,
  SUM_AG,
  SUM_AGCL,
};

struct suminfo {
  unsigned long length;
  unsigned long sum;
};

struct sumentry {
  summable what;
  unsigned long offset;
  suminfo correct;
  suminfo observed;
};

void observeSum(sumentry *s);

void sum_remember_argv0(const char *argv0);

inline int operator != (const suminfo &a, const suminfo &b) {
  return a.length != b.length || a.sum != b.sum;
}

// apparently required to have an AgStack<sumentry> (sigh)
inline int operator < (const sumentry &, const sumentry &) {
  return 0;
}

#endif /* CHECKSUM_H */