File: array.h

package info (click to toggle)
mawk 1.3.4.20260129-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 2,244 kB
  • sloc: ansic: 19,998; sh: 4,627; yacc: 1,182; awk: 903; makefile: 301
file content (56 lines) | stat: -rw-r--r-- 1,577 bytes parent folder | download
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
/* array.h */
/*
$MawkId: array.h,v 1.25 2026/01/09 09:19:23 tom Exp $

copyright 2009-2024,2026 Thomas E. Dickey
copyright 1991-1996,2014 Michael D. Brennan

This is a source file for mawk, an implementation of
the AWK programming language.

Mawk is distributed without warranty under the terms of
the GNU General Public License, version 2, 1991.
-------------------------------------------------------------------------------
array.c and array.h were originally generated with the commands

   notangle -R'"array.c"' array.w > array.c
   notangle -R'"array.h"' array.w > array.h

Notangle is part of Norman Ramsey's noweb literate programming package
available from CTAN(ftp.shsu.edu).
*/

#ifndef ARRAY_H
#define ARRAY_H 1

#include <nstd.h>
#include <types.h>

typedef struct _array
#ifdef Visible_ARRAY
{
    PTR ptr;			/* What this points to depends on the type */
    size_t size;		/* number of elts in the table */
    size_t limit;		/* Meaning depends on type */
    unsigned hmask;		/* bitwise and with hash value to get table index */
    short type;			/* values in AY_NULL .. AY_SPLIT */
}
#endif
 *ARRAY;

#define AY_NULL         0
#define AY_INT          1
#define AY_STR          2
#define AY_SPLIT        4

#define NO_CREATE  0
#define CREATE     1
#define new_ARRAY()  ((ARRAY)memset(ZMALLOC(struct _array),0,sizeof(struct _array)))
CELL *array_find(ARRAY, CELL *, int);
void array_delete(ARRAY, CELL *);
void array_load(ARRAY, size_t);
void array_clear(ARRAY);
STRING **array_loop_vector(ARRAY, size_t *);
CELL *array_cat(CELL *, int);

#endif /* ARRAY_H */