Select Git revision
Forked from
Nettle / nettle
Source project has a limited visibility.
-
Niels Möller authored
config.h. Rev: src/nettle/ChangeLog:1.195 Rev: src/nettle/aes-decrypt-table.c:1.4 Rev: src/nettle/aes-decrypt.c:1.5 Rev: src/nettle/aes-encrypt-table.c:1.4 Rev: src/nettle/aes-encrypt.c:1.5 Rev: src/nettle/aes-meta.c:1.3 Rev: src/nettle/aes-set-decrypt-key.c:1.2 Rev: src/nettle/aes-set-encrypt-key.c:1.2 Rev: src/nettle/aes.c:1.12 Rev: src/nettle/aesdata.c:1.2 Rev: src/nettle/arcfour-meta.c:1.2 Rev: src/nettle/arcfour.c:1.3 Rev: src/nettle/base16-decode.c:1.2 Rev: src/nettle/base16-encode.c:1.2 Rev: src/nettle/base16-meta.c:1.3 Rev: src/nettle/base64-decode.c:1.5 Rev: src/nettle/base64-encode.c:1.3 Rev: src/nettle/base64-meta.c:1.4 Rev: src/nettle/bignum-random.c:1.3 Rev: src/nettle/bignum.c:1.7 Rev: src/nettle/blowfish.c:1.4 Rev: src/nettle/buffer-init.c:1.3 Rev: src/nettle/buffer.c:1.8 Rev: src/nettle/cast128-meta.c:1.3 Rev: src/nettle/cast128.c:1.4 Rev: src/nettle/cbc.c:1.6 Rev: src/nettle/des-compat.c:1.10 Rev: src/nettle/des.c:1.7 Rev: src/nettle/des3.c:1.2 Rev: src/nettle/dsa-keygen.c:1.6 Rev: src/nettle/dsa-sign.c:1.7 Rev: src/nettle/dsa-verify.c:1.4 Rev: src/nettle/dsa.c:1.5 Rev: src/nettle/examples/io.c:1.4 Rev: src/nettle/examples/nettle-benchmark.c:1.8 Rev: src/nettle/examples/nettle-openssl.c:1.2 Rev: src/nettle/examples/rsa-keygen.c:1.10 Rev: src/nettle/examples/rsa-sign.c:1.5 Rev: src/nettle/examples/rsa-verify.c:1.4 Rev: src/nettle/hmac-md5.c:1.5 Rev: src/nettle/hmac-sha1.c:1.2 Rev: src/nettle/hmac-sha256.c:1.2 Rev: src/nettle/hmac.c:1.4 Rev: src/nettle/knuth-lfib.c:1.2 Rev: src/nettle/md5-compat.c:1.3 Rev: src/nettle/md5-meta.c:1.2 Rev: src/nettle/md5.c:1.6 Rev: src/nettle/memxor.c:1.2 Rev: src/nettle/nettle-internal.c:1.3 Rev: src/nettle/pgp-encode.c:1.4 Rev: src/nettle/pkcs1-rsa-md5.c:1.2 Rev: src/nettle/pkcs1-rsa-sha1.c:1.2 Rev: src/nettle/pkcs1.c:1.2 Rev: src/nettle/realloc.c:1.3 Rev: src/nettle/rsa-compat.c:1.8 Rev: src/nettle/rsa-decrypt.c:1.4 Rev: src/nettle/rsa-encrypt.c:1.5 Rev: src/nettle/rsa-keygen.c:1.5 Rev: src/nettle/rsa-md5-sign.c:1.2 Rev: src/nettle/rsa-md5-verify.c:1.2 Rev: src/nettle/rsa-sha1-sign.c:1.2 Rev: src/nettle/rsa-sha1-verify.c:1.2 Rev: src/nettle/rsa-sign.c:1.3 Rev: src/nettle/rsa-verify.c:1.2 Rev: src/nettle/rsa.c:1.12 Rev: src/nettle/rsa2openpgp.c:1.2 Rev: src/nettle/rsa2sexp.c:1.7 Rev: src/nettle/serpent-meta.c:1.2 Rev: src/nettle/serpent.c:1.4 Rev: src/nettle/sexp-format.c:1.9 Rev: src/nettle/sexp-transport-format.c:1.2 Rev: src/nettle/sexp-transport.c:1.4 Rev: src/nettle/sexp.c:1.14 Rev: src/nettle/sexp2bignum.c:1.5 Rev: src/nettle/sexp2dsa.c:1.4 Rev: src/nettle/sexp2rsa.c:1.11 Rev: src/nettle/sha1-meta.c:1.2 Rev: src/nettle/sha1.c:1.8 Rev: src/nettle/sha256-meta.c:1.2 Rev: src/nettle/sha256.c:1.3 Rev: src/nettle/tools/input.c:1.2 Rev: src/nettle/tools/misc.c:1.2 Rev: src/nettle/tools/output.c:1.3 Rev: src/nettle/tools/parse.c:1.2 Rev: src/nettle/tools/sexp-conv.c:1.14 Rev: src/nettle/twofish-meta.c:1.2 Rev: src/nettle/twofish.c:1.6 Rev: src/nettle/yarrow256.c:1.17 Rev: src/nettle/yarrow_key_event.c:1.4
Niels Möller authoredconfig.h. Rev: src/nettle/ChangeLog:1.195 Rev: src/nettle/aes-decrypt-table.c:1.4 Rev: src/nettle/aes-decrypt.c:1.5 Rev: src/nettle/aes-encrypt-table.c:1.4 Rev: src/nettle/aes-encrypt.c:1.5 Rev: src/nettle/aes-meta.c:1.3 Rev: src/nettle/aes-set-decrypt-key.c:1.2 Rev: src/nettle/aes-set-encrypt-key.c:1.2 Rev: src/nettle/aes.c:1.12 Rev: src/nettle/aesdata.c:1.2 Rev: src/nettle/arcfour-meta.c:1.2 Rev: src/nettle/arcfour.c:1.3 Rev: src/nettle/base16-decode.c:1.2 Rev: src/nettle/base16-encode.c:1.2 Rev: src/nettle/base16-meta.c:1.3 Rev: src/nettle/base64-decode.c:1.5 Rev: src/nettle/base64-encode.c:1.3 Rev: src/nettle/base64-meta.c:1.4 Rev: src/nettle/bignum-random.c:1.3 Rev: src/nettle/bignum.c:1.7 Rev: src/nettle/blowfish.c:1.4 Rev: src/nettle/buffer-init.c:1.3 Rev: src/nettle/buffer.c:1.8 Rev: src/nettle/cast128-meta.c:1.3 Rev: src/nettle/cast128.c:1.4 Rev: src/nettle/cbc.c:1.6 Rev: src/nettle/des-compat.c:1.10 Rev: src/nettle/des.c:1.7 Rev: src/nettle/des3.c:1.2 Rev: src/nettle/dsa-keygen.c:1.6 Rev: src/nettle/dsa-sign.c:1.7 Rev: src/nettle/dsa-verify.c:1.4 Rev: src/nettle/dsa.c:1.5 Rev: src/nettle/examples/io.c:1.4 Rev: src/nettle/examples/nettle-benchmark.c:1.8 Rev: src/nettle/examples/nettle-openssl.c:1.2 Rev: src/nettle/examples/rsa-keygen.c:1.10 Rev: src/nettle/examples/rsa-sign.c:1.5 Rev: src/nettle/examples/rsa-verify.c:1.4 Rev: src/nettle/hmac-md5.c:1.5 Rev: src/nettle/hmac-sha1.c:1.2 Rev: src/nettle/hmac-sha256.c:1.2 Rev: src/nettle/hmac.c:1.4 Rev: src/nettle/knuth-lfib.c:1.2 Rev: src/nettle/md5-compat.c:1.3 Rev: src/nettle/md5-meta.c:1.2 Rev: src/nettle/md5.c:1.6 Rev: src/nettle/memxor.c:1.2 Rev: src/nettle/nettle-internal.c:1.3 Rev: src/nettle/pgp-encode.c:1.4 Rev: src/nettle/pkcs1-rsa-md5.c:1.2 Rev: src/nettle/pkcs1-rsa-sha1.c:1.2 Rev: src/nettle/pkcs1.c:1.2 Rev: src/nettle/realloc.c:1.3 Rev: src/nettle/rsa-compat.c:1.8 Rev: src/nettle/rsa-decrypt.c:1.4 Rev: src/nettle/rsa-encrypt.c:1.5 Rev: src/nettle/rsa-keygen.c:1.5 Rev: src/nettle/rsa-md5-sign.c:1.2 Rev: src/nettle/rsa-md5-verify.c:1.2 Rev: src/nettle/rsa-sha1-sign.c:1.2 Rev: src/nettle/rsa-sha1-verify.c:1.2 Rev: src/nettle/rsa-sign.c:1.3 Rev: src/nettle/rsa-verify.c:1.2 Rev: src/nettle/rsa.c:1.12 Rev: src/nettle/rsa2openpgp.c:1.2 Rev: src/nettle/rsa2sexp.c:1.7 Rev: src/nettle/serpent-meta.c:1.2 Rev: src/nettle/serpent.c:1.4 Rev: src/nettle/sexp-format.c:1.9 Rev: src/nettle/sexp-transport-format.c:1.2 Rev: src/nettle/sexp-transport.c:1.4 Rev: src/nettle/sexp.c:1.14 Rev: src/nettle/sexp2bignum.c:1.5 Rev: src/nettle/sexp2dsa.c:1.4 Rev: src/nettle/sexp2rsa.c:1.11 Rev: src/nettle/sha1-meta.c:1.2 Rev: src/nettle/sha1.c:1.8 Rev: src/nettle/sha256-meta.c:1.2 Rev: src/nettle/sha256.c:1.3 Rev: src/nettle/tools/input.c:1.2 Rev: src/nettle/tools/misc.c:1.2 Rev: src/nettle/tools/output.c:1.3 Rev: src/nettle/tools/parse.c:1.2 Rev: src/nettle/tools/sexp-conv.c:1.14 Rev: src/nettle/twofish-meta.c:1.2 Rev: src/nettle/twofish.c:1.6 Rev: src/nettle/yarrow256.c:1.17 Rev: src/nettle/yarrow_key_event.c:1.4
array.h 14.45 KiB
/*
|| This file is part of Pike. For copyright information see COPYRIGHT.
|| Pike is distributed under GPL, LGPL and MPL. See the file COPYING
|| for more information.
*/
#ifndef ARRAY_H
#define ARRAY_H
#include "svalue.h"
#include "dmalloc.h"
/* This debug tool writes out messages whenever arrays with unfinished
* type fields are encountered. */
/* #define TRACE_UNFINISHED_TYPE_FIELDS */
/**
* A Pike array is represented as a 'struct array' with all the
* needed svalues malloced in the same block.
*
* @see type_field
*/
struct array
{
PIKE_MEMORY_OBJECT_MEMBERS;
struct array *next; /**< we need to keep track of all arrays */
struct array *prev; /**< Another pointer, so we don't have to search
* when freeing arrays */
INT32 size; /**< number of svalues in this array */
INT32 malloced_size; /**< number of svalues that can fit in this array */
TYPE_FIELD type_field;/**< A bitfield with one bit for each type of
* data in this array.
Bits can be set that don't exist in the array. type_field is
* initialized to BIT_MIXED|BIT_UNFINISHED for newly allocated
* arrays so that they can be modified without having to update
* this. It should be set accurately when that's done, though. */
INT16 flags; /**< ARRAY_* flags */
struct svalue *item; /**< the array of svalues */
struct svalue real_item[1];
};
#define ARRAY_WEAK_FLAG 1
#define ARRAY_CYCLIC 2
#define ARRAY_LVALUE 4
PMOD_EXPORT extern struct array empty_array, weak_empty_array;
extern struct array *first_array;
extern struct array *gc_internal_array;
#if defined(DEBUG_MALLOC) && defined(PIKE_DEBUG)
#define ITEM(X) (((struct array *)(debug_malloc_pass((X))))->item)
#else
#define ITEM(X) ((X)->item)
#endif
/* These are arguments for the function 'merge' which merges two sorted
* set stored in arrays in the way you specify
*/
#define PIKE_ARRAY_OP_A 1
#define PIKE_ARRAY_OP_SKIP_A 2
#define PIKE_ARRAY_OP_TAKE_A 3
#define PIKE_ARRAY_OP_B 4
#define PIKE_ARRAY_OP_SKIP_B 8
#define PIKE_ARRAY_OP_TAKE_B 12
#define PIKE_MINTERM(X,Y,Z) (((X)<<8)+((Y)<<4)+(Z))
#define PIKE_ARRAY_OP_AND PIKE_MINTERM(PIKE_ARRAY_OP_SKIP_A,PIKE_ARRAY_OP_SKIP_A | PIKE_ARRAY_OP_TAKE_B,PIKE_ARRAY_OP_SKIP_B)
#define PIKE_ARRAY_OP_AND_LEFT PIKE_MINTERM(PIKE_ARRAY_OP_SKIP_A,PIKE_ARRAY_OP_SKIP_B | PIKE_ARRAY_OP_TAKE_A,PIKE_ARRAY_OP_SKIP_B)
#define PIKE_ARRAY_OP_OR PIKE_MINTERM(PIKE_ARRAY_OP_TAKE_A,PIKE_ARRAY_OP_SKIP_A | PIKE_ARRAY_OP_TAKE_B,PIKE_ARRAY_OP_TAKE_B)