[PATCH] Changed prototypes of some functions having parameters that
should not be changed to const and added assorted comments. Also two very minor efficiency improvements.
This commit is contained in:
parent
d524105d26
commit
6b6281d888
|
|
@ -7,35 +7,51 @@ dvec_alloc(char *name, int type, short flags, int length, void *storage)
|
||||||
{
|
{
|
||||||
struct dvec *rv = TMALLOC(struct dvec, 1);
|
struct dvec *rv = TMALLOC(struct dvec, 1);
|
||||||
|
|
||||||
if (!rv)
|
/* If the allocation failed, return NULL as a failure flag.
|
||||||
|
* As of 2019-03, TMALLOC will not return on failure, so this check is
|
||||||
|
* redundant, but it may be useful if it is decided to allow the
|
||||||
|
* allocation functions to return NULL on failure and handle recovery
|
||||||
|
* by the calling functions */
|
||||||
|
if (!rv) {
|
||||||
return NULL;
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set all fields to 0 */
|
||||||
ZERO(rv, struct dvec);
|
ZERO(rv, struct dvec);
|
||||||
|
|
||||||
|
/* Set information on the vector from parameters. Note that storage for
|
||||||
|
* the name string belongs to the dvec when this function returns. */
|
||||||
rv->v_name = name;
|
rv->v_name = name;
|
||||||
rv->v_type = type;
|
rv->v_type = type;
|
||||||
rv->v_flags = flags;
|
rv->v_flags = flags;
|
||||||
rv->v_length = length;
|
rv->v_length = length;
|
||||||
rv->v_alloc_length = length;
|
rv->v_alloc_length = length;
|
||||||
|
|
||||||
if (!length) {
|
if (length == 0) { /* Redundant due to ZERO() call above */
|
||||||
rv->v_realdata = NULL;
|
rv->v_realdata = NULL;
|
||||||
rv->v_compdata = NULL;
|
rv->v_compdata = NULL;
|
||||||
} else if (flags & VF_REAL) {
|
}
|
||||||
|
else if (flags & VF_REAL) {
|
||||||
|
/* Vector consists of real data. Use the supplied storage if given
|
||||||
|
* or allocate if not */
|
||||||
rv->v_realdata = storage
|
rv->v_realdata = storage
|
||||||
? (double *) storage
|
? (double *) storage
|
||||||
: TMALLOC(double, length);
|
: TMALLOC(double, length);
|
||||||
rv->v_compdata = NULL;
|
rv->v_compdata = NULL;
|
||||||
} else if (flags & VF_COMPLEX) {
|
}
|
||||||
|
else if (flags & VF_COMPLEX) {
|
||||||
|
/* Vector holds complex data. Perform actions as for real data */
|
||||||
rv->v_realdata = NULL;
|
rv->v_realdata = NULL;
|
||||||
rv->v_compdata = storage
|
rv->v_compdata = storage
|
||||||
? (ngcomplex_t *) storage
|
? (ngcomplex_t *) storage
|
||||||
: TMALLOC(ngcomplex_t, length);
|
: TMALLOC(ngcomplex_t, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Set remaining fields to none/unknown. Again not required due to
|
||||||
|
* the ZERO() call */
|
||||||
rv->v_plot = NULL;
|
rv->v_plot = NULL;
|
||||||
rv->v_scale = NULL;
|
rv->v_scale = NULL;
|
||||||
rv->v_numdims = 0;
|
rv->v_numdims = 0; /* Really "unknown" */
|
||||||
|
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -73,8 +73,8 @@ static void printem(wordlist *wl);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static wordlist *cctowl(struct ccom *cc, bool sib);
|
static wordlist *cctowl(struct ccom *cc, bool sib);
|
||||||
static struct ccom *clookup(register char *word, struct ccom **dd, bool pref,
|
static struct ccom *clookup(register const char *word, struct ccom **dd, bool pref,
|
||||||
bool create);
|
bool create);
|
||||||
/* MW. I need top node in cdelete */
|
/* MW. I need top node in cdelete */
|
||||||
static void cdelete(struct ccom *node, struct ccom **top);
|
static void cdelete(struct ccom *node, struct ccom **top);
|
||||||
|
|
||||||
|
|
@ -515,7 +515,7 @@ cp_destroy_keywords(void)
|
||||||
/* Remove a keyword from the database. */
|
/* Remove a keyword from the database. */
|
||||||
|
|
||||||
void
|
void
|
||||||
cp_remkword(int kw_class, char *word)
|
cp_remkword(int kw_class, const char *word)
|
||||||
{
|
{
|
||||||
struct ccom *cc;
|
struct ccom *cc;
|
||||||
|
|
||||||
|
|
@ -583,7 +583,7 @@ throwaway(struct ccom *dbase)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static struct ccom *
|
static struct ccom *
|
||||||
clookup(register char *word, struct ccom **dd, bool pref, bool create)
|
clookup(register const char *word, struct ccom **dd, bool pref, bool create)
|
||||||
{
|
{
|
||||||
register struct ccom *place = *dd, *tmpc;
|
register struct ccom *place = *dd, *tmpc;
|
||||||
int ind = 0, i;
|
int ind = 0, i;
|
||||||
|
|
|
||||||
|
|
@ -339,7 +339,7 @@ plot_add(struct plot *pl)
|
||||||
/* Remove a vector from the database, if it is there. */
|
/* Remove a vector from the database, if it is there. */
|
||||||
|
|
||||||
void
|
void
|
||||||
vec_remove(char *name)
|
vec_remove(const char *name)
|
||||||
{
|
{
|
||||||
struct dvec *ov;
|
struct dvec *ov;
|
||||||
|
|
||||||
|
|
@ -769,12 +769,20 @@ vec_new(struct dvec *d)
|
||||||
plot_cur->pl_scale = d;
|
plot_cur->pl_scale = d;
|
||||||
if (!d->v_plot)
|
if (!d->v_plot)
|
||||||
d->v_plot = plot_cur;
|
d->v_plot = plot_cur;
|
||||||
|
|
||||||
|
/* This code appears to be a patch for incorrectly specified vectors */
|
||||||
if (d->v_numdims < 1) {
|
if (d->v_numdims < 1) {
|
||||||
d->v_numdims = 1;
|
d->v_numdims = 1;
|
||||||
d->v_dims[0] = d->v_length;
|
d->v_dims[0] = d->v_length;
|
||||||
}
|
}
|
||||||
d->v_next = d->v_plot->pl_dvecs;
|
|
||||||
d->v_plot->pl_dvecs = d;
|
{
|
||||||
|
/* Make this vector the first plot vector and link the old first plot
|
||||||
|
* vector via its next pointer */
|
||||||
|
struct plot *v_plot = d->v_plot;
|
||||||
|
d->v_next = v_plot->pl_dvecs;
|
||||||
|
v_plot->pl_dvecs = d;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@ extern void cp_ccom(wordlist *wlist, char *buf, bool esc);
|
||||||
extern void cp_ccon(bool on);
|
extern void cp_ccon(bool on);
|
||||||
extern void cp_ccrestart(bool kwords);
|
extern void cp_ccrestart(bool kwords);
|
||||||
extern void cp_remcomm(char *word);
|
extern void cp_remcomm(char *word);
|
||||||
extern void cp_remkword(int kw_class, char *word);
|
extern void cp_remkword(int kw_class, const char *word);
|
||||||
extern void cp_destroy_keywords(void);
|
extern void cp_destroy_keywords(void);
|
||||||
|
|
||||||
extern wordlist *cp_cctowl(struct ccom *stuff);
|
extern wordlist *cp_cctowl(struct ccom *stuff);
|
||||||
|
|
|
||||||
|
|
@ -357,7 +357,7 @@ extern void vec_gc(void);
|
||||||
extern void ft_loadfile(char *file);
|
extern void ft_loadfile(char *file);
|
||||||
extern void vec_new(struct dvec *d);
|
extern void vec_new(struct dvec *d);
|
||||||
extern void plot_docoms(wordlist *wl);
|
extern void plot_docoms(wordlist *wl);
|
||||||
extern void vec_remove(char *name);
|
extern void vec_remove(const char *name);
|
||||||
extern void plot_setcur(char *name);
|
extern void plot_setcur(char *name);
|
||||||
extern struct plot *get_plot(char* name);
|
extern struct plot *get_plot(char* name);
|
||||||
extern void plot_new(struct plot *pl);
|
extern void plot_new(struct plot *pl);
|
||||||
|
|
|
||||||
|
|
@ -75,22 +75,34 @@ tvprintf(const char *fmt, va_list args)
|
||||||
|
|
||||||
if (nchars == -1) { // compatibility to old implementations
|
if (nchars == -1) { // compatibility to old implementations
|
||||||
size *= 2;
|
size *= 2;
|
||||||
} else if (size < nchars + 1) {
|
}
|
||||||
size = nchars + 1;
|
else if (nchars >= size) {
|
||||||
} else {
|
/* Output was truncated. Returned value is the number of chars
|
||||||
|
* that would have been written if the buffer were large enough
|
||||||
|
* excluding the terminiating null. */
|
||||||
|
size = nchars + 1; /* min required allocation size */
|
||||||
|
}
|
||||||
|
else { /* String formatted OK */
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Allocate a larger buffer */
|
||||||
if (p == buf)
|
if (p == buf)
|
||||||
p = TMALLOC(char, size);
|
p = TMALLOC(char, size);
|
||||||
else
|
else
|
||||||
p = TREALLOC(char, p, size);
|
p = TREALLOC(char, p, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Return the formatted string, making a copy on the heap if the
|
||||||
|
* stack's buffer (buf) contains the string */
|
||||||
return (p == buf) ? copy(p) : p;
|
return (p == buf) ? copy(p) : p;
|
||||||
}
|
} /* end of function tvprintf */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* This function returns an allocation containing the string formatted
|
||||||
|
* according to fmt and the variadic argument list provided. It is a wrapper
|
||||||
|
* around tvprintf() which processes the argumens as a va_list. */
|
||||||
char *
|
char *
|
||||||
tprintf(const char *fmt, ...)
|
tprintf(const char *fmt, ...)
|
||||||
{
|
{
|
||||||
|
|
@ -102,7 +114,7 @@ tprintf(const char *fmt, ...)
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
|
|
||||||
return rv;
|
return rv;
|
||||||
}
|
} /* end of function tprintf */
|
||||||
|
|
||||||
|
|
||||||
/* Determine whether sub is a substring of str. */
|
/* Determine whether sub is a substring of str. */
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue