/*
******************************************************************************** * errors.c -- a collection of routines to simplify and unify error messages. * * Mark Showalter & Neil Heather, PDS Ring-Moon Systems Node, March 1998 *******************************************************************************/ #include <stdio.h> #include "profile.h" /* This is the defining declaration, referenced externally in profile.h */ RL_CHAR xpro_message[XPRO_MESSAGE_LEN+1]; /* ******************************************************************************** * XPro_NullError() raises a PRO_CLASS_ERROR when an object contains a NULL * pointer. *******************************************************************************/ void XPro_NullError(info, object) RL_CHAR *info; PRO_OBJECT *object; { (void) sprintf(xpro_message, "null %s pointer in object \"%s\"", info, XPro_ObjectName(object,0)); RL_RaiseError("PRO_CLASS_ERROR", xpro_message); } /* ******************************************************************************** * XPro_ClassError() raises a PRO_CLASS_ERROR when an object is used in the * wrong context. *******************************************************************************/ void XPro_ClassError(info, object) RL_CHAR *info; PRO_OBJECT *object; { (void) sprintf(xpro_message, "object \"%s\" is not a %s", XPro_ObjectName(object,0), info); RL_RaiseError("PRO_CLASS_ERROR", xpro_message); } /* ******************************************************************************** * XPro_DomainError() raises a PRO_DOMAIN_ERROR when a floating-point number is * outside its allowed range. *******************************************************************************/ void XPro_DomainError(info, object, x1, x2, x) RL_CHAR *info; PRO_OBJECT *object; RL_FLT8 x1, x2, x; { (void) sprintf(xpro_message, "\ %s is outside allowed range\n\ domain = [%#g,%#g] in object \"%s\"\n\ value = %#g", info, x1, x2, XPro_ObjectName(object,0), x); RL_RaiseError("PRO_DOMAIN_ERROR", xpro_message); } /* ******************************************************************************** * XPro_IDomainError() raises a PRO_DOMAIN_ERROR when an integer is outside its * allowed range. *******************************************************************************/ void XPro_IDomainError(info, object, k1, k2, k) RL_CHAR *info; PRO_OBJECT *object; RL_INT4 k1, k2, k; { (void) sprintf(xpro_message, "\ %s is outside allowed range\n\ domain = [%1d,%1d] in object \"%s\"\n\ value = %1d", info, k1, k2, XPro_ObjectName(object,0), k); RL_RaiseError("PRO_DOMAIN_ERROR", xpro_message); } /* ******************************************************************************** * XPro_EmptyDomain() raises a PRO_EMPTY_DOMAIN condition when two objects have * floating-point domains that do not overlap. *******************************************************************************/ void XPro_EmptyDomain(info, object1, object2, x1a, x2a, x1b, x2b) RL_CHAR *info; PRO_OBJECT *object1, *object2; RL_FLT8 x1a, x2a, x1b, x2b; { if (object2 == NULL) { (void) sprintf(xpro_message, "\ %s has empty domain\n\ domain = [%#g,%#g] in object \"%s\"\n\ domain = [%#g,%#g] in requested window", info, x1a, x2a, XPro_ObjectName(object1,0), x1b, x2b); } else { (void) sprintf(xpro_message, "\ %s has empty domain\n\ domain = [%#g,%#g] in object \"%s\"\n\ domain = [%#g,%#g] in object \"%s\"", info, x1a, x2a, XPro_ObjectName(object1,0), x1b, x2b, XPro_ObjectName(object2,0)); } RL_RaiseError("PRO_EMPTY_DOMAIN", xpro_message); } /* ******************************************************************************** * XPro_IEmptyDomain() raises a PRO_EMPTY_DOMAIN condition when two objects have * integer domains that do not overlap. *******************************************************************************/ void XPro_IEmptyDomain(info, object1, object2, k1a, k2a, k1b, k2b) RL_CHAR *info; PRO_OBJECT *object1, *object2; RL_INT4 k1a, k2a, k1b, k2b; { if (object2 == NULL) { (void) sprintf(xpro_message, "\ %s has empty domain\n\ domain = [%1d,%1d] in object \"%s\"\n\ domain = [%1d,%1d] in selected window", info, k1a, k2a, XPro_ObjectName(object1,0), k1b, k2b); } else { (void) sprintf(xpro_message, "\ %s has empty domain\n\ domain = [%1d,%1d] in object \"%s\"\n\ domain = [%1d,%1d] in object \"%s\"", info, k1a, k2a, XPro_ObjectName(object1,0), k1b, k2b, XPro_ObjectName(object2,0)); } RL_RaiseError("PRO_EMPTY_DOMAIN", xpro_message); } /* ******************************************************************************** * XPro_CoordMismatch() raises a PRO_COORD_MISMATCH condition when two objects * have coordinates with different names. *******************************************************************************/ void XPro_CoordMismatch(info, object1, object2, name1, name2) RL_CHAR *info; PRO_OBJECT *object1, *object2; RL_CHAR *name1, *name2; { if (object2 == NULL) { (void) sprintf(xpro_message, "\ coordinate name mismatch in %s\n\ name = \"%s\" in object \"%s\"\n\ name = \"%s\" in selected window", info, name1, XPro_ObjectName(object1,0), name2); } else { (void) sprintf(xpro_message, "\ coordinate name mismatch in %s\n\ name = \"%s\" in object \"%s\"\n\ name = \"%s\" in object \"%s\"", info, name1, XPro_ObjectName(object1,0), name2, XPro_ObjectName(object2,0)); } RL_RaiseError("PRO_COORD_MISMATCH", xpro_message); } /********************************************************************************/