Module Name: src Committed By: rillig Date: Sun Oct 18 08:58:29 UTC 2020
Modified Files: src/usr.bin/make: lst.c lst.h parse.c var.c src/usr.bin/make/unit-tests: include-sub.mk Log Message: make(1): rename Stack to Vector Both Var_Dump and GetActuallyIncludingFile access more than only the top item of the stack, therefore it is more honest to rename the data type. To generate a diff of this commit: cvs rdiff -u -r1.75 -r1.76 src/usr.bin/make/lst.c cvs rdiff -u -r1.69 -r1.70 src/usr.bin/make/lst.h cvs rdiff -u -r1.383 -r1.384 src/usr.bin/make/parse.c cvs rdiff -u -r1.573 -r1.574 src/usr.bin/make/var.c cvs rdiff -u -r1.4 -r1.5 src/usr.bin/make/unit-tests/include-sub.mk Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.bin/make/lst.c diff -u src/usr.bin/make/lst.c:1.75 src/usr.bin/make/lst.c:1.76 --- src/usr.bin/make/lst.c:1.75 Sat Oct 17 17:47:14 2020 +++ src/usr.bin/make/lst.c Sun Oct 18 08:58:29 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: lst.c,v 1.75 2020/10/17 17:47:14 rillig Exp $ */ +/* $NetBSD: lst.c,v 1.76 2020/10/18 08:58:29 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -34,7 +34,7 @@ #include "make.h" -MAKE_RCSID("$NetBSD: lst.c,v 1.75 2020/10/17 17:47:14 rillig Exp $"); +MAKE_RCSID("$NetBSD: lst.c,v 1.76 2020/10/18 08:58:29 rillig Exp $"); /* Allocate and initialize a list node. * @@ -499,43 +499,43 @@ Lst_Dequeue(List *list) } void -Stack_Init(Stack *stack) +Vector_Init(Vector *v) { - stack->len = 0; - stack->cap = 10; - stack->items = bmake_malloc(stack->cap * sizeof stack->items[0]); + v->len = 0; + v->cap = 10; + v->items = bmake_malloc(v->cap * sizeof v->items[0]); } -Boolean Stack_IsEmpty(Stack *stack) +Boolean Vector_IsEmpty(Vector *v) { - return stack->len == 0; + return v->len == 0; } -void Stack_Push(Stack *stack, void *datum) +void Vector_Push(Vector *v, void *datum) { - if (stack->len >= stack->cap) { - stack->cap *= 2; - stack->items = bmake_realloc(stack->items, - stack->cap * sizeof stack->items[0]); + if (v->len >= v->cap) { + v->cap *= 2; + v->items = bmake_realloc(v->items, + v->cap * sizeof v->items[0]); } - stack->items[stack->len] = datum; - stack->len++; + v->items[v->len] = datum; + v->len++; } -void *Stack_Pop(Stack *stack) +void *Vector_Pop(Vector *v) { void *datum; - assert(stack->len > 0); - stack->len--; - datum = stack->items[stack->len]; + assert(v->len > 0); + v->len--; + datum = v->items[v->len]; #ifdef CLEANUP - stack->items[stack->len] = NULL; + v->items[v->len] = NULL; #endif return datum; } -void Stack_Done(Stack *stack) +void Vector_Done(Vector *v) { - free(stack->items); + free(v->items); } Index: src/usr.bin/make/lst.h diff -u src/usr.bin/make/lst.h:1.69 src/usr.bin/make/lst.h:1.70 --- src/usr.bin/make/lst.h:1.69 Sat Sep 26 17:15:20 2020 +++ src/usr.bin/make/lst.h Sun Oct 18 08:58:29 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: lst.h,v 1.69 2020/09/26 17:15:20 rillig Exp $ */ +/* $NetBSD: lst.h,v 1.70 2020/10/18 08:58:29 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990 The Regents of the University of California. @@ -210,18 +210,17 @@ void Lst_Enqueue(List *, void *); /* Remove the head node of the queue and return its datum. */ void *Lst_Dequeue(List *); -/* A stack is a very simple collection of items that only allows access to the - * top-most item. */ -typedef struct Stack { +/* A vector is an ordered collection of items, allowing fast indexed access. */ +typedef struct Vector { void **items; size_t len; size_t cap; -} Stack; +} Vector; -void Stack_Init(Stack *); -Boolean Stack_IsEmpty(Stack *); -void Stack_Push(Stack *, void *); -void *Stack_Pop(Stack *); -void Stack_Done(Stack *); +void Vector_Init(Vector *); +Boolean Vector_IsEmpty(Vector *); +void Vector_Push(Vector *, void *); +void *Vector_Pop(Vector *); +void Vector_Done(Vector *); #endif /* MAKE_LST_H */ Index: src/usr.bin/make/parse.c diff -u src/usr.bin/make/parse.c:1.383 src/usr.bin/make/parse.c:1.384 --- src/usr.bin/make/parse.c:1.383 Sat Oct 17 21:32:30 2020 +++ src/usr.bin/make/parse.c Sun Oct 18 08:58:29 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: parse.c,v 1.383 2020/10/17 21:32:30 rillig Exp $ */ +/* $NetBSD: parse.c,v 1.384 2020/10/18 08:58:29 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -131,7 +131,7 @@ #include "pathnames.h" /* "@(#)parse.c 8.3 (Berkeley) 3/19/94" */ -MAKE_RCSID("$NetBSD: parse.c,v 1.383 2020/10/17 21:32:30 rillig Exp $"); +MAKE_RCSID("$NetBSD: parse.c,v 1.384 2020/10/18 08:58:29 rillig Exp $"); /* types and constants */ @@ -280,7 +280,7 @@ static IFile *curFile; * (not printed since it is below a .for loop) * includes[0]: include-main.mk:27 */ -static Stack /* of *IFile */ includes; +static Vector /* of IFile pointer */ includes; /* include paths (lists of directories) */ SearchPath *parseIncPath; /* dirs for "..." includes */ @@ -2300,7 +2300,6 @@ GetActuallyIncludingFile(void) { size_t i; - /* XXX: Stack was supposed to be an opaque data structure. */ for (i = includes.len; i > 0; i--) { IFile *parent = includes.items[i - 1]; IFile *child = i < includes.len ? includes.items[i] : curFile; @@ -2384,7 +2383,7 @@ Parse_SetInput(const char *name, int lin if (curFile != NULL) /* Save existing file info */ - Stack_Push(&includes, curFile); + Vector_Push(&includes, curFile); /* Allocate and fill in new structure */ curFile = bmake_malloc(sizeof *curFile); @@ -2579,7 +2578,7 @@ ParseEOF(void) free(curFile->P_str); free(curFile); - if (Stack_IsEmpty(&includes)) { + if (Vector_IsEmpty(&includes)) { curFile = NULL; /* We've run out of input */ Var_Delete(".PARSEDIR", VAR_GLOBAL); @@ -2589,7 +2588,7 @@ ParseEOF(void) return FALSE; } - curFile = Stack_Pop(&includes); + curFile = Vector_Pop(&includes); DEBUG2(PARSE, "ParseEOF: returning to file %s, line %d\n", curFile->fname, curFile->lineno); @@ -3127,7 +3126,7 @@ Parse_Init(void) parseIncPath = Lst_Init(); sysIncPath = Lst_Init(); defIncPath = Lst_Init(); - Stack_Init(&includes); + Vector_Init(&includes); #ifdef CLEANUP targCmds = Lst_Init(); #endif @@ -3143,8 +3142,8 @@ Parse_End(void) Lst_Destroy(defIncPath, Dir_Destroy); Lst_Destroy(sysIncPath, Dir_Destroy); Lst_Destroy(parseIncPath, Dir_Destroy); - assert(Stack_IsEmpty(&includes)); - Stack_Done(&includes); + assert(Vector_IsEmpty(&includes)); + Vector_Done(&includes); #endif } Index: src/usr.bin/make/var.c diff -u src/usr.bin/make/var.c:1.573 src/usr.bin/make/var.c:1.574 --- src/usr.bin/make/var.c:1.573 Sun Oct 18 08:47:54 2020 +++ src/usr.bin/make/var.c Sun Oct 18 08:58:29 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: var.c,v 1.573 2020/10/18 08:47:54 rillig Exp $ */ +/* $NetBSD: var.c,v 1.574 2020/10/18 08:58:29 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -121,7 +121,7 @@ #include "metachar.h" /* "@(#)var.c 8.3 (Berkeley) 3/19/94" */ -MAKE_RCSID("$NetBSD: var.c,v 1.573 2020/10/18 08:47:54 rillig Exp $"); +MAKE_RCSID("$NetBSD: var.c,v 1.574 2020/10/18 08:58:29 rillig Exp $"); #define VAR_DEBUG1(fmt, arg1) DEBUG1(VAR, fmt, arg1) #define VAR_DEBUG2(fmt, arg1, arg2) DEBUG2(VAR, fmt, arg1, arg2) @@ -3856,16 +3856,16 @@ Var_Stats(void) void Var_Dump(GNode *ctxt) { - Stack varnames; + Vector varnames; Hash_Search iter; Hash_Entry *he; size_t i; - Stack_Init(&varnames); + Vector_Init(&varnames); for (he = Hash_EnumFirst(&ctxt->context, &iter); he != NULL; he = Hash_EnumNext(&iter)) - Stack_Push(&varnames, he->name); + Vector_Push(&varnames, he->name); qsort(varnames.items, varnames.len, sizeof varnames.items[0], str_cmp_asc); @@ -3875,5 +3875,5 @@ Var_Dump(GNode *ctxt) debug_printf("%-16s = %s\n", varname, Buf_GetAll(&var->val, NULL)); } - Stack_Done(&varnames); + Vector_Done(&varnames); } Index: src/usr.bin/make/unit-tests/include-sub.mk diff -u src/usr.bin/make/unit-tests/include-sub.mk:1.4 src/usr.bin/make/unit-tests/include-sub.mk:1.5 --- src/usr.bin/make/unit-tests/include-sub.mk:1.4 Mon Sep 14 19:59:47 2020 +++ src/usr.bin/make/unit-tests/include-sub.mk Sun Oct 18 08:58:29 2020 @@ -1,4 +1,4 @@ -# $NetBSD: include-sub.mk,v 1.4 2020/09/14 19:59:47 rillig Exp $ +# $NetBSD: include-sub.mk,v 1.5 2020/10/18 08:58:29 rillig Exp $ .if ${.INCLUDEDFROMFILE} == "include-main.mk" . info sub-before-ok @@ -20,7 +20,7 @@ # To see the variable 'includes' in action: # # Breakpoints: -# Parse_File at "Stack_Push(&includes, curFile)" +# Parse_File at "Vector_Push(&includes, curFile)" # ParseMessage at entry # Watches: # ((const IFile *[10])(*includes.items))