/usr/include/sbml/common/common.h is in libsbml5-dev 5.16.0+dfsg-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 | /**
* @file common.h
* @brief Common functions and macros for C and C++.
* @author Ben Bornstein
*
* <!--------------------------------------------------------------------------
* This file is part of libSBML. Please visit http://sbml.org for more
* information about SBML, and the latest version of libSBML.
*
* Copyright (C) 2013-2017 jointly by the following organizations:
* 1. California Institute of Technology, Pasadena, CA, USA
* 2. EMBL European Bioinformatics Institute (EMBL-EBI), Hinxton, UK
* 3. University of Heidelberg, Heidelberg, Germany
*
* Copyright (C) 2009-2013 jointly by the following organizations:
* 1. California Institute of Technology, Pasadena, CA, USA
* 2. EMBL European Bioinformatics Institute (EMBL-EBI), Hinxton, UK
*
* Copyright (C) 2006-2008 by the California Institute of Technology,
* Pasadena, CA, USA
*
* Copyright (C) 2002-2005 jointly by the following organizations:
* 1. California Institute of Technology, Pasadena, CA, USA
* 2. Japan Science and Technology Agency, Japan
*
* This library is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation. A copy of the license agreement is provided
* in the file named "LICENSE.txt" included with this software distribution and
* also available online as http://sbml.org/software/libsbml/license.html
* ---------------------------------------------------------------------- -->*/
#ifndef LIBSBML_COMMON_H
#define LIBSBML_COMMON_H 1
#include <sbml/common/libsbml-config.h>
#include <stdio.h>
#if STDC_HEADERS
# include <errno.h>
# include <float.h>
# include <stdarg.h>
# include <stdlib.h>
# include <string.h>
#endif
#if HAVE_MATH_H
# include <math.h>
#endif
#if HAVE_IEEFP_H
# include <ieeefp.h>
#endif
#ifndef errno
extern int errno;
#endif
/**
* Default format used by libSBML when writing out floating-point numbers
* into the XML produced by libSBML. This is used by
* StringBuffer_appendReal.
*/
#define LIBSBML_FLOAT_FORMAT "%.15g"
#define LIBSBML_DOUBLE_PRECISION 15
static const int SBML_INT_MAX = 2147483647;
static const int SBML_INT_MIN = -2147483647 - 1;
/*
* Sometimes the line/column numbers reported by the underlying parsers are
* simply invalid. This especially occurs in error situations when the
* error is severe. Typically you're not supposed to call the parsers'
* getline()/getcolumn() functions in those situations, but it's hard to
* avoid because of the flow of control in our code. The problem is, in
* some cases, calling the parser's getline()/getcolumn() functions results
* in a segmentation fault. (Case in point: this was happening using
* Xerces 2.8 on 32-bit systems.) We need to communicate that a
* line/column number value is actually invalid or meaningless.
*
* Doing that presents a new problem: our line/column number values are
* unsigned integers, which thus only allows 2 states to be
* communicated. (Explanation: you could use 0 to communicate an invalid
* state and let all other values indicate a valid state. If we had signed
* integers, we could communicate 3 state values, using negative, 0, and
* positive values for the different states.) Unfortunately we can't use 0
* because that value is already being used to communicate a different
* meaning between users of XMLError objects.
*
* The following is a bit of a hack, but not completely unrealistic: we use
* the largest possible value of the data type used to represent
* line/column numbers. The probability that an error in an file will
* involve these specific numbers is vanishingly small. Thus, we can say
* that if user code encounters these values as line/column numbers, they
* should assume they are actually meaningless and no valid line/column
* number could be provided by the parser.
*/
#define LIBSBML_UNKNOWN_LINE SBML_INT_MAX
#define LIBSBML_UNKNOWN_COLUMN SBML_INT_MAX
#include <sbml/common/extern.h>
#include <sbml/util/memory.h>
#include <sbml/util/util.h>
#endif /* LIBSBML_COMMON_H */
|