diff anagram/support/assert.cpp @ 0:13d2b8934445

Import AnaGram (near-)release tree into Mercurial.
author David A. Holland
date Sat, 22 Dec 2007 17:52:45 -0500
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/anagram/support/assert.cpp	Sat Dec 22 17:52:45 2007 -0500
@@ -0,0 +1,43 @@
+/*
+ * AnaGram, A System for Syntax Directed Programming
+ * Copyright 1993-2002 Parsifal Software. All Rights Reserved.
+ * Copyright 2006 David A. Holland. All rights reserved.
+ * See the file COPYING for license and usage terms.
+ *
+ * assert.cpp
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include "port.h"
+
+#include "assert.h"
+
+//#define INCLUDE_LOGGING
+#include "log.h"
+
+
+int no_assertions = 1;
+
+void badAssertion(const char *file, int line) {
+  static char longjmp_msg[128];
+
+  if (no_assertions) {
+    return;
+  }
+  no_assertions = 1;
+
+  const char *s = strrchr(file, '/');
+  if (s) {
+    file = s+1;
+  }
+
+  LOGSECTION_ON("Bad assertion");
+  LOGSTACK;
+  LOGV(file);
+  LOGV(line);
+  snprintf(longjmp_msg, sizeof(longjmp_msg),
+	   "AnaGram internal error: assertion, %s line %d", file, line);
+  LOGV(longjmp_msg);
+  bailOut(longjmp_msg);
+}