comment here
This commit is contained in:
282
.CondaPkg/env/include/bzlib.h
vendored
Normal file
282
.CondaPkg/env/include/bzlib.h
vendored
Normal file
@@ -0,0 +1,282 @@
|
||||
|
||||
/*-------------------------------------------------------------*/
|
||||
/*--- Public header file for the library. ---*/
|
||||
/*--- bzlib.h ---*/
|
||||
/*-------------------------------------------------------------*/
|
||||
|
||||
/* ------------------------------------------------------------------
|
||||
This file is part of bzip2/libbzip2, a program and library for
|
||||
lossless, block-sorting data compression.
|
||||
|
||||
bzip2/libbzip2 version 1.0.8 of 13 July 2019
|
||||
Copyright (C) 1996-2019 Julian Seward <jseward@acm.org>
|
||||
|
||||
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||
README file.
|
||||
|
||||
This program is released under the terms of the license contained
|
||||
in the file LICENSE.
|
||||
------------------------------------------------------------------ */
|
||||
|
||||
|
||||
#ifndef _BZLIB_H
|
||||
#define _BZLIB_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define BZ_RUN 0
|
||||
#define BZ_FLUSH 1
|
||||
#define BZ_FINISH 2
|
||||
|
||||
#define BZ_OK 0
|
||||
#define BZ_RUN_OK 1
|
||||
#define BZ_FLUSH_OK 2
|
||||
#define BZ_FINISH_OK 3
|
||||
#define BZ_STREAM_END 4
|
||||
#define BZ_SEQUENCE_ERROR (-1)
|
||||
#define BZ_PARAM_ERROR (-2)
|
||||
#define BZ_MEM_ERROR (-3)
|
||||
#define BZ_DATA_ERROR (-4)
|
||||
#define BZ_DATA_ERROR_MAGIC (-5)
|
||||
#define BZ_IO_ERROR (-6)
|
||||
#define BZ_UNEXPECTED_EOF (-7)
|
||||
#define BZ_OUTBUFF_FULL (-8)
|
||||
#define BZ_CONFIG_ERROR (-9)
|
||||
|
||||
typedef
|
||||
struct {
|
||||
char *next_in;
|
||||
unsigned int avail_in;
|
||||
unsigned int total_in_lo32;
|
||||
unsigned int total_in_hi32;
|
||||
|
||||
char *next_out;
|
||||
unsigned int avail_out;
|
||||
unsigned int total_out_lo32;
|
||||
unsigned int total_out_hi32;
|
||||
|
||||
void *state;
|
||||
|
||||
void *(*bzalloc)(void *,int,int);
|
||||
void (*bzfree)(void *,void *);
|
||||
void *opaque;
|
||||
}
|
||||
bz_stream;
|
||||
|
||||
|
||||
#ifndef BZ_IMPORT
|
||||
#define BZ_EXPORT
|
||||
#endif
|
||||
|
||||
#ifndef BZ_NO_STDIO
|
||||
/* Need a definitition for FILE */
|
||||
#include <stdio.h>
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
# include <windows.h>
|
||||
# ifdef small
|
||||
/* windows.h define small to char */
|
||||
# undef small
|
||||
# endif
|
||||
# ifdef BZ_EXPORT
|
||||
# define BZ_API(func) WINAPI func
|
||||
# define BZ_EXTERN extern
|
||||
# else
|
||||
/* import windows dll dynamically */
|
||||
# define BZ_API(func) (WINAPI * func)
|
||||
# define BZ_EXTERN
|
||||
# endif
|
||||
#else
|
||||
# define BZ_API(func) func
|
||||
# define BZ_EXTERN extern
|
||||
#endif
|
||||
|
||||
|
||||
/*-- Core (low-level) library functions --*/
|
||||
|
||||
BZ_EXTERN int BZ_API(BZ2_bzCompressInit) (
|
||||
bz_stream* strm,
|
||||
int blockSize100k,
|
||||
int verbosity,
|
||||
int workFactor
|
||||
);
|
||||
|
||||
BZ_EXTERN int BZ_API(BZ2_bzCompress) (
|
||||
bz_stream* strm,
|
||||
int action
|
||||
);
|
||||
|
||||
BZ_EXTERN int BZ_API(BZ2_bzCompressEnd) (
|
||||
bz_stream* strm
|
||||
);
|
||||
|
||||
BZ_EXTERN int BZ_API(BZ2_bzDecompressInit) (
|
||||
bz_stream *strm,
|
||||
int verbosity,
|
||||
int small
|
||||
);
|
||||
|
||||
BZ_EXTERN int BZ_API(BZ2_bzDecompress) (
|
||||
bz_stream* strm
|
||||
);
|
||||
|
||||
BZ_EXTERN int BZ_API(BZ2_bzDecompressEnd) (
|
||||
bz_stream *strm
|
||||
);
|
||||
|
||||
|
||||
|
||||
/*-- High(er) level library functions --*/
|
||||
|
||||
#ifndef BZ_NO_STDIO
|
||||
#define BZ_MAX_UNUSED 5000
|
||||
|
||||
typedef void BZFILE;
|
||||
|
||||
BZ_EXTERN BZFILE* BZ_API(BZ2_bzReadOpen) (
|
||||
int* bzerror,
|
||||
FILE* f,
|
||||
int verbosity,
|
||||
int small,
|
||||
void* unused,
|
||||
int nUnused
|
||||
);
|
||||
|
||||
BZ_EXTERN void BZ_API(BZ2_bzReadClose) (
|
||||
int* bzerror,
|
||||
BZFILE* b
|
||||
);
|
||||
|
||||
BZ_EXTERN void BZ_API(BZ2_bzReadGetUnused) (
|
||||
int* bzerror,
|
||||
BZFILE* b,
|
||||
void** unused,
|
||||
int* nUnused
|
||||
);
|
||||
|
||||
BZ_EXTERN int BZ_API(BZ2_bzRead) (
|
||||
int* bzerror,
|
||||
BZFILE* b,
|
||||
void* buf,
|
||||
int len
|
||||
);
|
||||
|
||||
BZ_EXTERN BZFILE* BZ_API(BZ2_bzWriteOpen) (
|
||||
int* bzerror,
|
||||
FILE* f,
|
||||
int blockSize100k,
|
||||
int verbosity,
|
||||
int workFactor
|
||||
);
|
||||
|
||||
BZ_EXTERN void BZ_API(BZ2_bzWrite) (
|
||||
int* bzerror,
|
||||
BZFILE* b,
|
||||
void* buf,
|
||||
int len
|
||||
);
|
||||
|
||||
BZ_EXTERN void BZ_API(BZ2_bzWriteClose) (
|
||||
int* bzerror,
|
||||
BZFILE* b,
|
||||
int abandon,
|
||||
unsigned int* nbytes_in,
|
||||
unsigned int* nbytes_out
|
||||
);
|
||||
|
||||
BZ_EXTERN void BZ_API(BZ2_bzWriteClose64) (
|
||||
int* bzerror,
|
||||
BZFILE* b,
|
||||
int abandon,
|
||||
unsigned int* nbytes_in_lo32,
|
||||
unsigned int* nbytes_in_hi32,
|
||||
unsigned int* nbytes_out_lo32,
|
||||
unsigned int* nbytes_out_hi32
|
||||
);
|
||||
#endif
|
||||
|
||||
|
||||
/*-- Utility functions --*/
|
||||
|
||||
BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffCompress) (
|
||||
char* dest,
|
||||
unsigned int* destLen,
|
||||
char* source,
|
||||
unsigned int sourceLen,
|
||||
int blockSize100k,
|
||||
int verbosity,
|
||||
int workFactor
|
||||
);
|
||||
|
||||
BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffDecompress) (
|
||||
char* dest,
|
||||
unsigned int* destLen,
|
||||
char* source,
|
||||
unsigned int sourceLen,
|
||||
int small,
|
||||
int verbosity
|
||||
);
|
||||
|
||||
|
||||
/*--
|
||||
Code contributed by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp)
|
||||
to support better zlib compatibility.
|
||||
This code is not _officially_ part of libbzip2 (yet);
|
||||
I haven't tested it, documented it, or considered the
|
||||
threading-safeness of it.
|
||||
If this code breaks, please contact both Yoshioka and me.
|
||||
--*/
|
||||
|
||||
BZ_EXTERN const char * BZ_API(BZ2_bzlibVersion) (
|
||||
void
|
||||
);
|
||||
|
||||
#ifndef BZ_NO_STDIO
|
||||
BZ_EXTERN BZFILE * BZ_API(BZ2_bzopen) (
|
||||
const char *path,
|
||||
const char *mode
|
||||
);
|
||||
|
||||
BZ_EXTERN BZFILE * BZ_API(BZ2_bzdopen) (
|
||||
int fd,
|
||||
const char *mode
|
||||
);
|
||||
|
||||
BZ_EXTERN int BZ_API(BZ2_bzread) (
|
||||
BZFILE* b,
|
||||
void* buf,
|
||||
int len
|
||||
);
|
||||
|
||||
BZ_EXTERN int BZ_API(BZ2_bzwrite) (
|
||||
BZFILE* b,
|
||||
void* buf,
|
||||
int len
|
||||
);
|
||||
|
||||
BZ_EXTERN int BZ_API(BZ2_bzflush) (
|
||||
BZFILE* b
|
||||
);
|
||||
|
||||
BZ_EXTERN void BZ_API(BZ2_bzclose) (
|
||||
BZFILE* b
|
||||
);
|
||||
|
||||
BZ_EXTERN const char * BZ_API(BZ2_bzerror) (
|
||||
BZFILE *b,
|
||||
int *errnum
|
||||
);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
/*-------------------------------------------------------------*/
|
||||
/*--- end bzlib.h ---*/
|
||||
/*-------------------------------------------------------------*/
|
||||
2114
.CondaPkg/env/include/curses.h
vendored
Normal file
2114
.CondaPkg/env/include/curses.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
191
.CondaPkg/env/include/cursesapp.h
vendored
Normal file
191
.CondaPkg/env/include/cursesapp.h
vendored
Normal file
@@ -0,0 +1,191 @@
|
||||
// * This makes emacs happy -*-Mode: C++;-*-
|
||||
/****************************************************************************
|
||||
* Copyright 2019-2020,2021 Thomas E. Dickey *
|
||||
* Copyright 1998-2005,2011 Free Software Foundation, Inc. *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a *
|
||||
* copy of this software and associated documentation files (the *
|
||||
* "Software"), to deal in the Software without restriction, including *
|
||||
* without limitation the rights to use, copy, modify, merge, publish, *
|
||||
* distribute, distribute with modifications, sublicense, and/or sell *
|
||||
* copies of the Software, and to permit persons to whom the Software is *
|
||||
* furnished to do so, subject to the following conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included *
|
||||
* in all copies or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
|
||||
* IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
|
||||
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
|
||||
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
|
||||
* THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
* *
|
||||
* Except as contained in this notice, the name(s) of the above copyright *
|
||||
* holders shall not be used in advertising or otherwise to promote the *
|
||||
* sale, use or other dealings in this Software without prior written *
|
||||
* authorization. *
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Author: Juergen Pfeifer, 1997 *
|
||||
****************************************************************************/
|
||||
|
||||
// $Id: cursesapp.h,v 1.18 2021/06/17 21:26:02 tom Exp $
|
||||
|
||||
#ifndef NCURSES_CURSESAPP_H_incl
|
||||
#define NCURSES_CURSESAPP_H_incl
|
||||
|
||||
#include <ncursesw/cursslk.h>
|
||||
|
||||
#if (defined(_WIN32) || defined(_WIN64))
|
||||
# define NCURSES_CXX_MAIN_NAME cursespp_main
|
||||
# define NCURSES_CXX_MAIN \
|
||||
int main(int argc, char *argv[]) { \
|
||||
return NCURSES_CXX_MAIN_NAME(argc, argv); \
|
||||
}
|
||||
#else
|
||||
# define NCURSES_CXX_MAIN_NAME main
|
||||
#endif
|
||||
NCURSES_CXX_IMPEXP int NCURSES_CXX_MAIN_NAME(int argc, char *argv[]);
|
||||
|
||||
class NCURSES_CXX_IMPEXP NCursesApplication {
|
||||
public:
|
||||
typedef struct _slk_link { // This structure is used to maintain
|
||||
struct _slk_link* prev; // a stack of SLKs
|
||||
Soft_Label_Key_Set* SLKs;
|
||||
} SLK_Link;
|
||||
private:
|
||||
static int rinit(NCursesWindow& w); // Internal Init function for title
|
||||
static NCursesApplication* theApp; // Global ref. to the application
|
||||
|
||||
static SLK_Link* slk_stack;
|
||||
|
||||
protected:
|
||||
static NCursesWindow* titleWindow; // The Title Window (if any)
|
||||
|
||||
bool b_Colors; // Is this a color application?
|
||||
NCursesWindow* Root_Window; // This is the stdscr equiv.
|
||||
|
||||
// Initialization of attributes;
|
||||
// Rewrite this in your derived class if you prefer other settings
|
||||
virtual void init(bool bColors);
|
||||
|
||||
// The number of lines for the title window. Default is no title window
|
||||
// You may rewrite this in your derived class
|
||||
virtual int titlesize() const {
|
||||
return 0;
|
||||
}
|
||||
|
||||
// This method is called to put something into the title window initially
|
||||
// You may rewrite this in your derived class
|
||||
virtual void title() {
|
||||
}
|
||||
|
||||
// The layout used for the Soft Label Keys. Default is to have no SLKs.
|
||||
// You may rewrite this in your derived class
|
||||
virtual Soft_Label_Key_Set::Label_Layout useSLKs() const {
|
||||
return Soft_Label_Key_Set::None;
|
||||
}
|
||||
|
||||
// This method is called to initialize the SLKs. Default is nothing.
|
||||
// You may rewrite this in your derived class
|
||||
virtual void init_labels(Soft_Label_Key_Set& S) const {
|
||||
(void) S;
|
||||
}
|
||||
|
||||
// Your derived class must implement this method. The return value must
|
||||
// be the exit value of your application.
|
||||
virtual int run() = 0;
|
||||
|
||||
// The constructor is protected, so you may use it in your derived
|
||||
// class constructor. The argument tells whether or not you want colors.
|
||||
NCursesApplication(bool wantColors = FALSE);
|
||||
|
||||
NCursesApplication& operator=(const NCursesApplication& rhs)
|
||||
{
|
||||
if (this != &rhs) {
|
||||
*this = rhs;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
NCursesApplication(const NCursesApplication& rhs)
|
||||
: b_Colors(rhs.b_Colors),
|
||||
Root_Window(rhs.Root_Window)
|
||||
{
|
||||
}
|
||||
|
||||
static NCursesWindow *&getTitleWindow();
|
||||
|
||||
public:
|
||||
virtual ~NCursesApplication() THROWS(NCursesException);
|
||||
|
||||
// Get a pointer to the current application object
|
||||
static NCursesApplication* getApplication();
|
||||
|
||||
// This method runs the application and returns its exit value
|
||||
int operator()(void);
|
||||
|
||||
// Process the commandline arguments. The default implementation simply
|
||||
// ignores them. Your derived class may rewrite this.
|
||||
virtual void handleArgs(int argc, char* argv[]) {
|
||||
(void) argc;
|
||||
(void) argv;
|
||||
}
|
||||
|
||||
// Does this application use colors?
|
||||
inline bool useColors() const {
|
||||
return b_Colors;
|
||||
}
|
||||
|
||||
// Push the Key Set S onto the SLK Stack. S then becomes the current set
|
||||
// of Soft Labelled Keys.
|
||||
void push(Soft_Label_Key_Set& S);
|
||||
|
||||
// Throw away the current set of SLKs and make the previous one the
|
||||
// new current set.
|
||||
bool pop();
|
||||
|
||||
// Retrieve the current set of Soft Labelled Keys.
|
||||
Soft_Label_Key_Set* top() const;
|
||||
|
||||
// Attributes to use for menu and forms foregrounds
|
||||
virtual chtype foregrounds() const {
|
||||
return b_Colors ? static_cast<chtype>(COLOR_PAIR(1)) : A_BOLD;
|
||||
}
|
||||
|
||||
// Attributes to use for menu and forms backgrounds
|
||||
virtual chtype backgrounds() const {
|
||||
return b_Colors ? static_cast<chtype>(COLOR_PAIR(2)) : A_NORMAL;
|
||||
}
|
||||
|
||||
// Attributes to use for inactive (menu) elements
|
||||
virtual chtype inactives() const {
|
||||
return b_Colors ? static_cast<chtype>(COLOR_PAIR(3)|A_DIM) : A_DIM;
|
||||
}
|
||||
|
||||
// Attributes to use for (form) labels and SLKs
|
||||
virtual chtype labels() const {
|
||||
return b_Colors ? static_cast<chtype>(COLOR_PAIR(4)) : A_NORMAL;
|
||||
}
|
||||
|
||||
// Attributes to use for form backgrounds
|
||||
virtual chtype dialog_backgrounds() const {
|
||||
return b_Colors ? static_cast<chtype>(COLOR_PAIR(4)) : A_NORMAL;
|
||||
}
|
||||
|
||||
// Attributes to use as default for (form) window backgrounds
|
||||
virtual chtype window_backgrounds() const {
|
||||
return b_Colors ? static_cast<chtype>(COLOR_PAIR(5)) : A_NORMAL;
|
||||
}
|
||||
|
||||
// Attributes to use for the title window
|
||||
virtual chtype screen_titles() const {
|
||||
return b_Colors ? static_cast<chtype>(COLOR_PAIR(6)) : A_BOLD;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
#endif /* NCURSES_CURSESAPP_H_incl */
|
||||
968
.CondaPkg/env/include/cursesf.h
vendored
Normal file
968
.CondaPkg/env/include/cursesf.h
vendored
Normal file
@@ -0,0 +1,968 @@
|
||||
// * This makes emacs happy -*-Mode: C++;-*-
|
||||
// vile:cppmode
|
||||
/****************************************************************************
|
||||
* Copyright 2019-2020,2021 Thomas E. Dickey *
|
||||
* Copyright 1998-2012,2014 Free Software Foundation, Inc. *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a *
|
||||
* copy of this software and associated documentation files (the *
|
||||
* "Software"), to deal in the Software without restriction, including *
|
||||
* without limitation the rights to use, copy, modify, merge, publish, *
|
||||
* distribute, distribute with modifications, sublicense, and/or sell *
|
||||
* copies of the Software, and to permit persons to whom the Software is *
|
||||
* furnished to do so, subject to the following conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included *
|
||||
* in all copies or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
|
||||
* IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
|
||||
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
|
||||
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
|
||||
* THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
* *
|
||||
* Except as contained in this notice, the name(s) of the above copyright *
|
||||
* holders shall not be used in advertising or otherwise to promote the *
|
||||
* sale, use or other dealings in this Software without prior written *
|
||||
* authorization. *
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Author: Juergen Pfeifer, 1997 *
|
||||
****************************************************************************/
|
||||
|
||||
// $Id: cursesf.h,v 1.38 2021/04/17 18:11:08 tom Exp $
|
||||
|
||||
#ifndef NCURSES_CURSESF_H_incl
|
||||
#define NCURSES_CURSESF_H_incl 1
|
||||
|
||||
#include <ncursesw/cursesp.h>
|
||||
|
||||
#ifndef __EXT_QNX
|
||||
#include <string.h>
|
||||
#endif
|
||||
|
||||
extern "C" {
|
||||
# include <ncursesw/form.h>
|
||||
}
|
||||
//
|
||||
// -------------------------------------------------------------------------
|
||||
// The abstract base class for builtin and user defined Fieldtypes.
|
||||
// -------------------------------------------------------------------------
|
||||
//
|
||||
class NCURSES_CXX_IMPEXP NCursesFormField; // forward declaration
|
||||
|
||||
// Class to represent builtin field types as well as C++ written new
|
||||
// fieldtypes (see classes UserDefineFieldType...
|
||||
class NCURSES_CXX_IMPEXP NCursesFieldType
|
||||
{
|
||||
friend class NCursesFormField;
|
||||
|
||||
protected:
|
||||
FIELDTYPE* fieldtype;
|
||||
|
||||
inline void OnError(int err) const THROW2(NCursesException const, NCursesFormException) {
|
||||
if (err!=E_OK)
|
||||
THROW(new NCursesFormException (err));
|
||||
}
|
||||
|
||||
NCursesFieldType(FIELDTYPE *f) : fieldtype(f) {
|
||||
}
|
||||
|
||||
virtual ~NCursesFieldType() {}
|
||||
|
||||
// Set the fields f fieldtype to this one.
|
||||
virtual void set(NCursesFormField& f) = 0;
|
||||
|
||||
public:
|
||||
NCursesFieldType()
|
||||
: fieldtype(STATIC_CAST(FIELDTYPE*)(0))
|
||||
{
|
||||
}
|
||||
|
||||
NCursesFieldType& operator=(const NCursesFieldType& rhs)
|
||||
{
|
||||
if (this != &rhs) {
|
||||
*this = rhs;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
NCursesFieldType(const NCursesFieldType& rhs)
|
||||
: fieldtype(rhs.fieldtype)
|
||||
{
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
//
|
||||
// -------------------------------------------------------------------------
|
||||
// The class representing a forms field, wrapping the lowlevel FIELD struct
|
||||
// -------------------------------------------------------------------------
|
||||
//
|
||||
class NCURSES_CXX_IMPEXP NCursesFormField
|
||||
{
|
||||
friend class NCursesForm;
|
||||
|
||||
protected:
|
||||
FIELD *field; // lowlevel structure
|
||||
NCursesFieldType* ftype; // Associated field type
|
||||
|
||||
// Error handler
|
||||
inline void OnError (int err) const THROW2(NCursesException const, NCursesFormException) {
|
||||
if (err != E_OK)
|
||||
THROW(new NCursesFormException (err));
|
||||
}
|
||||
|
||||
public:
|
||||
// Create a 'Null' field. Can be used to delimit a field list
|
||||
NCursesFormField()
|
||||
: field(STATIC_CAST(FIELD*)(0)),
|
||||
ftype(STATIC_CAST(NCursesFieldType*)(0))
|
||||
{
|
||||
}
|
||||
|
||||
// Create a new field
|
||||
NCursesFormField (int rows,
|
||||
int ncols,
|
||||
int first_row = 0,
|
||||
int first_col = 0,
|
||||
int offscreen_rows = 0,
|
||||
int additional_buffers = 0)
|
||||
: field(0),
|
||||
ftype(STATIC_CAST(NCursesFieldType*)(0))
|
||||
{
|
||||
field = ::new_field(rows, ncols, first_row, first_col,
|
||||
offscreen_rows, additional_buffers);
|
||||
if (!field)
|
||||
OnError(errno);
|
||||
}
|
||||
|
||||
NCursesFormField& operator=(const NCursesFormField& rhs)
|
||||
{
|
||||
if (this != &rhs) {
|
||||
*this = rhs;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
NCursesFormField(const NCursesFormField& rhs)
|
||||
: field(rhs.field), ftype(rhs.ftype)
|
||||
{
|
||||
}
|
||||
|
||||
virtual ~NCursesFormField () THROWS(NCursesException);
|
||||
|
||||
// Duplicate the field at a new position
|
||||
inline NCursesFormField* dup(int first_row, int first_col)
|
||||
{
|
||||
NCursesFormField* f = new NCursesFormField();
|
||||
if (!f)
|
||||
OnError(E_SYSTEM_ERROR);
|
||||
else {
|
||||
f->ftype = ftype;
|
||||
f->field = ::dup_field(field,first_row,first_col);
|
||||
if (!f->field)
|
||||
OnError(errno);
|
||||
}
|
||||
return f;
|
||||
}
|
||||
|
||||
// Link the field to a new location
|
||||
inline NCursesFormField* link(int first_row, int first_col) {
|
||||
NCursesFormField* f = new NCursesFormField();
|
||||
if (!f)
|
||||
OnError(E_SYSTEM_ERROR);
|
||||
else {
|
||||
f->ftype = ftype;
|
||||
f->field = ::link_field(field,first_row,first_col);
|
||||
if (!f->field)
|
||||
OnError(errno);
|
||||
}
|
||||
return f;
|
||||
}
|
||||
|
||||
// Get the lowlevel field representation
|
||||
inline FIELD* get_field() const {
|
||||
return field;
|
||||
}
|
||||
|
||||
// Retrieve info about the field
|
||||
inline void info(int& rows, int& ncols,
|
||||
int& first_row, int& first_col,
|
||||
int& offscreen_rows, int& additional_buffers) const {
|
||||
OnError(::field_info(field, &rows, &ncols,
|
||||
&first_row, &first_col,
|
||||
&offscreen_rows, &additional_buffers));
|
||||
}
|
||||
|
||||
// Retrieve info about the fields dynamic properties.
|
||||
inline void dynamic_info(int& dynamic_rows, int& dynamic_cols,
|
||||
int& max_growth) const {
|
||||
OnError(::dynamic_field_info(field, &dynamic_rows, &dynamic_cols,
|
||||
&max_growth));
|
||||
}
|
||||
|
||||
// For a dynamic field you may set the maximum growth limit.
|
||||
// A zero means unlimited growth.
|
||||
inline void set_maximum_growth(int growth = 0) {
|
||||
OnError(::set_max_field(field,growth));
|
||||
}
|
||||
|
||||
// Move the field to a new position
|
||||
inline void move(int row, int col) {
|
||||
OnError(::move_field(field,row,col));
|
||||
}
|
||||
|
||||
// Mark the field to start a new page
|
||||
inline void new_page(bool pageFlag = FALSE) {
|
||||
OnError(::set_new_page(field,pageFlag));
|
||||
}
|
||||
|
||||
// Retrieve whether or not the field starts a new page.
|
||||
inline bool is_new_page() const {
|
||||
return ::new_page(field);
|
||||
}
|
||||
|
||||
// Set the justification for the field
|
||||
inline void set_justification(int just) {
|
||||
OnError(::set_field_just(field,just));
|
||||
}
|
||||
|
||||
// Retrieve the fields justification
|
||||
inline int justification() const {
|
||||
return ::field_just(field);
|
||||
}
|
||||
// Set the foreground attribute for the field
|
||||
inline void set_foreground(chtype foreground) {
|
||||
OnError(::set_field_fore(field,foreground));
|
||||
}
|
||||
|
||||
// Retrieve the fields foreground attribute
|
||||
inline chtype fore() const {
|
||||
return ::field_fore(field);
|
||||
}
|
||||
|
||||
// Set the background attribute for the field
|
||||
inline void set_background(chtype background) {
|
||||
OnError(::set_field_back(field,background));
|
||||
}
|
||||
|
||||
// Retrieve the fields background attribute
|
||||
inline chtype back() const {
|
||||
return ::field_back(field);
|
||||
}
|
||||
|
||||
// Set the padding character for the field
|
||||
inline void set_pad_character(int padding) {
|
||||
OnError(::set_field_pad(field, padding));
|
||||
}
|
||||
|
||||
// Retrieve the fields padding character
|
||||
inline int pad() const {
|
||||
return ::field_pad(field);
|
||||
}
|
||||
|
||||
// Switch on the fields options
|
||||
inline void options_on (Field_Options opts) {
|
||||
OnError (::field_opts_on (field, opts));
|
||||
}
|
||||
|
||||
// Switch off the fields options
|
||||
inline void options_off (Field_Options opts) {
|
||||
OnError (::field_opts_off (field, opts));
|
||||
}
|
||||
|
||||
// Retrieve the fields options
|
||||
inline Field_Options options () const {
|
||||
return ::field_opts (field);
|
||||
}
|
||||
|
||||
// Set the fields options
|
||||
inline void set_options (Field_Options opts) {
|
||||
OnError (::set_field_opts (field, opts));
|
||||
}
|
||||
|
||||
// Mark the field as changed
|
||||
inline void set_changed(bool changeFlag = TRUE) {
|
||||
OnError(::set_field_status(field,changeFlag));
|
||||
}
|
||||
|
||||
// Test whether or not the field is marked as changed
|
||||
inline bool changed() const {
|
||||
return ::field_status(field);
|
||||
}
|
||||
|
||||
// Return the index of the field in the field array of a form
|
||||
// or -1 if the field is not associated to a form
|
||||
inline int (index)() const {
|
||||
return ::field_index(field);
|
||||
}
|
||||
|
||||
// Store a value in a fields buffer. The default buffer is nr. 0
|
||||
inline void set_value(const char *val, int buffer = 0) {
|
||||
OnError(::set_field_buffer(field,buffer,val));
|
||||
}
|
||||
|
||||
// Retrieve the value of a fields buffer. The default buffer is nr. 0
|
||||
inline char* value(int buffer = 0) const {
|
||||
return ::field_buffer(field,buffer);
|
||||
}
|
||||
|
||||
// Set the validation type of the field.
|
||||
inline void set_fieldtype(NCursesFieldType& f) {
|
||||
ftype = &f;
|
||||
f.set(*this); // A good friend may do that...
|
||||
}
|
||||
|
||||
// Retrieve the validation type of the field.
|
||||
inline NCursesFieldType* fieldtype() const {
|
||||
return ftype;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
// This are the built-in hook functions in this C++ binding. In C++ we use
|
||||
// virtual member functions (see below On_..._Init and On_..._Termination)
|
||||
// to provide this functionality in an object oriented manner.
|
||||
extern "C" {
|
||||
void _nc_xx_frm_init(FORM *);
|
||||
void _nc_xx_frm_term(FORM *);
|
||||
void _nc_xx_fld_init(FORM *);
|
||||
void _nc_xx_fld_term(FORM *);
|
||||
}
|
||||
|
||||
//
|
||||
// -------------------------------------------------------------------------
|
||||
// The class representing a form, wrapping the lowlevel FORM struct
|
||||
// -------------------------------------------------------------------------
|
||||
//
|
||||
class NCURSES_CXX_IMPEXP NCursesForm : public NCursesPanel
|
||||
{
|
||||
protected:
|
||||
FORM* form; // the lowlevel structure
|
||||
|
||||
private:
|
||||
NCursesWindow* sub; // the subwindow object
|
||||
bool b_sub_owner; // is this our own subwindow?
|
||||
bool b_framed; // has the form a border?
|
||||
bool b_autoDelete; // Delete fields when deleting form?
|
||||
|
||||
NCursesFormField** my_fields; // The array of fields for this form
|
||||
|
||||
// This structure is used for the form's user data field to link the
|
||||
// FORM* to the C++ object and to provide extra space for a user pointer.
|
||||
typedef struct {
|
||||
void* m_user; // the pointer for the user's data
|
||||
const NCursesForm* m_back; // backward pointer to C++ object
|
||||
const FORM* m_owner;
|
||||
} UserHook;
|
||||
|
||||
// Get the backward pointer to the C++ object from a FORM
|
||||
static inline NCursesForm* getHook(const FORM *f) {
|
||||
UserHook* hook = reinterpret_cast<UserHook*>(::form_userptr(f));
|
||||
assert(hook != 0 && hook->m_owner==f);
|
||||
return const_cast<NCursesForm*>(hook->m_back);
|
||||
}
|
||||
|
||||
friend void _nc_xx_frm_init(FORM *);
|
||||
friend void _nc_xx_frm_term(FORM *);
|
||||
friend void _nc_xx_fld_init(FORM *);
|
||||
friend void _nc_xx_fld_term(FORM *);
|
||||
|
||||
// Calculate FIELD* array for the menu
|
||||
FIELD** mapFields(NCursesFormField* nfields[]);
|
||||
|
||||
protected:
|
||||
// internal routines
|
||||
inline void set_user(void *user) {
|
||||
UserHook* uptr = reinterpret_cast<UserHook*>(::form_userptr (form));
|
||||
assert (uptr != 0 && uptr->m_back==this && uptr->m_owner==form);
|
||||
uptr->m_user = user;
|
||||
}
|
||||
|
||||
inline void *get_user() {
|
||||
UserHook* uptr = reinterpret_cast<UserHook*>(::form_userptr (form));
|
||||
assert (uptr != 0 && uptr->m_back==this && uptr->m_owner==form);
|
||||
return uptr->m_user;
|
||||
}
|
||||
|
||||
void InitForm (NCursesFormField* Fields[],
|
||||
bool with_frame,
|
||||
bool autoDeleteFields);
|
||||
|
||||
inline void OnError (int err) const THROW2(NCursesException const, NCursesFormException) {
|
||||
if (err != E_OK)
|
||||
THROW(new NCursesFormException (err));
|
||||
}
|
||||
|
||||
// this wraps the form_driver call.
|
||||
virtual int driver (int c) ;
|
||||
|
||||
// 'Internal' constructor, builds an object without association to a
|
||||
// field array.
|
||||
NCursesForm( int nlines,
|
||||
int ncols,
|
||||
int begin_y = 0,
|
||||
int begin_x = 0)
|
||||
: NCursesPanel(nlines, ncols, begin_y, begin_x),
|
||||
form (STATIC_CAST(FORM*)(0)),
|
||||
sub(0),
|
||||
b_sub_owner(0),
|
||||
b_framed(0),
|
||||
b_autoDelete(0),
|
||||
my_fields(0)
|
||||
{
|
||||
}
|
||||
|
||||
public:
|
||||
// Create form for the default panel.
|
||||
NCursesForm (NCursesFormField* Fields[],
|
||||
bool with_frame=FALSE, // reserve space for a frame?
|
||||
bool autoDelete_Fields=FALSE) // do automatic cleanup?
|
||||
: NCursesPanel(),
|
||||
form(0),
|
||||
sub(0),
|
||||
b_sub_owner(0),
|
||||
b_framed(0),
|
||||
b_autoDelete(0),
|
||||
my_fields(0)
|
||||
{
|
||||
InitForm(Fields, with_frame, autoDelete_Fields);
|
||||
}
|
||||
|
||||
// Create a form in a panel with the given position and size.
|
||||
NCursesForm (NCursesFormField* Fields[],
|
||||
int nlines,
|
||||
int ncols,
|
||||
int begin_y,
|
||||
int begin_x,
|
||||
bool with_frame=FALSE, // reserve space for a frame?
|
||||
bool autoDelete_Fields=FALSE) // do automatic cleanup?
|
||||
: NCursesPanel(nlines, ncols, begin_y, begin_x),
|
||||
form(0),
|
||||
sub(0),
|
||||
b_sub_owner(0),
|
||||
b_framed(0),
|
||||
b_autoDelete(0),
|
||||
my_fields(0)
|
||||
{
|
||||
InitForm(Fields, with_frame, autoDelete_Fields);
|
||||
}
|
||||
|
||||
NCursesForm& operator=(const NCursesForm& rhs)
|
||||
{
|
||||
if (this != &rhs) {
|
||||
*this = rhs;
|
||||
NCursesPanel::operator=(rhs);
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
NCursesForm(const NCursesForm& rhs)
|
||||
: NCursesPanel(rhs),
|
||||
form(rhs.form),
|
||||
sub(rhs.sub),
|
||||
b_sub_owner(rhs.b_sub_owner),
|
||||
b_framed(rhs.b_framed),
|
||||
b_autoDelete(rhs.b_autoDelete),
|
||||
my_fields(rhs.my_fields)
|
||||
{
|
||||
}
|
||||
|
||||
virtual ~NCursesForm() THROWS(NCursesException);
|
||||
|
||||
// Set the default attributes for the form
|
||||
virtual void setDefaultAttributes();
|
||||
|
||||
// Retrieve current field of the form.
|
||||
inline NCursesFormField* current_field() const {
|
||||
return my_fields[::field_index(::current_field(form))];
|
||||
}
|
||||
|
||||
// Set the forms subwindow
|
||||
void setSubWindow(NCursesWindow& sub);
|
||||
|
||||
// Set these fields for the form
|
||||
inline void setFields(NCursesFormField* Fields[]) {
|
||||
OnError(::set_form_fields(form,mapFields(Fields)));
|
||||
}
|
||||
|
||||
// Remove the form from the screen
|
||||
inline void unpost (void) {
|
||||
OnError (::unpost_form (form));
|
||||
}
|
||||
|
||||
// Post the form to the screen if flag is true, unpost it otherwise
|
||||
inline void post(bool flag = TRUE) {
|
||||
OnError (flag ? ::post_form(form) : ::unpost_form (form));
|
||||
}
|
||||
|
||||
// Decorations
|
||||
inline void frame(const char *title=NULL, const char* btitle=NULL) {
|
||||
if (b_framed)
|
||||
NCursesPanel::frame(title,btitle);
|
||||
else
|
||||
OnError(E_SYSTEM_ERROR);
|
||||
}
|
||||
|
||||
inline void boldframe(const char *title=NULL, const char* btitle=NULL) {
|
||||
if (b_framed)
|
||||
NCursesPanel::boldframe(title,btitle);
|
||||
else
|
||||
OnError(E_SYSTEM_ERROR);
|
||||
}
|
||||
|
||||
inline void label(const char *topLabel, const char *bottomLabel) {
|
||||
if (b_framed)
|
||||
NCursesPanel::label(topLabel,bottomLabel);
|
||||
else
|
||||
OnError(E_SYSTEM_ERROR);
|
||||
}
|
||||
|
||||
// -----
|
||||
// Hooks
|
||||
// -----
|
||||
|
||||
// Called after the form gets repositioned in its window.
|
||||
// This is especially true if the form is posted.
|
||||
virtual void On_Form_Init();
|
||||
|
||||
// Called before the form gets repositioned in its window.
|
||||
// This is especially true if the form is unposted.
|
||||
virtual void On_Form_Termination();
|
||||
|
||||
// Called after the field became the current field
|
||||
virtual void On_Field_Init(NCursesFormField& field);
|
||||
|
||||
// Called before this field is left as current field.
|
||||
virtual void On_Field_Termination(NCursesFormField& field);
|
||||
|
||||
// Calculate required window size for the form.
|
||||
void scale(int& rows, int& ncols) const {
|
||||
OnError(::scale_form(form,&rows,&ncols));
|
||||
}
|
||||
|
||||
// Retrieve number of fields in the form.
|
||||
int count() const {
|
||||
return ::field_count(form);
|
||||
}
|
||||
|
||||
// Make the page the current page of the form.
|
||||
void set_page(int pageNum) {
|
||||
OnError(::set_form_page(form, pageNum));
|
||||
}
|
||||
|
||||
// Retrieve current page number
|
||||
int page() const {
|
||||
return ::form_page(form);
|
||||
}
|
||||
|
||||
// Switch on the forms options
|
||||
inline void options_on (Form_Options opts) {
|
||||
OnError (::form_opts_on (form, opts));
|
||||
}
|
||||
|
||||
// Switch off the forms options
|
||||
inline void options_off (Form_Options opts) {
|
||||
OnError (::form_opts_off (form, opts));
|
||||
}
|
||||
|
||||
// Retrieve the forms options
|
||||
inline Form_Options options () const {
|
||||
return ::form_opts (form);
|
||||
}
|
||||
|
||||
// Set the forms options
|
||||
inline void set_options (Form_Options opts) {
|
||||
OnError (::set_form_opts (form, opts));
|
||||
}
|
||||
|
||||
// Are there more data in the current field after the data shown
|
||||
inline bool data_ahead() const {
|
||||
return ::data_ahead(form);
|
||||
}
|
||||
|
||||
// Are there more data in the current field before the data shown
|
||||
inline bool data_behind() const {
|
||||
return ::data_behind(form);
|
||||
}
|
||||
|
||||
// Position the cursor to the current field
|
||||
inline void position_cursor () {
|
||||
OnError (::pos_form_cursor (form));
|
||||
}
|
||||
// Set the current field
|
||||
inline void set_current(NCursesFormField& F) {
|
||||
OnError (::set_current_field(form, F.field));
|
||||
}
|
||||
|
||||
// Provide a default key virtualization. Translate the keyboard
|
||||
// code c into a form request code.
|
||||
// The default implementation provides a hopefully straightforward
|
||||
// mapping for the most common keystrokes and form requests.
|
||||
virtual int virtualize(int c);
|
||||
|
||||
// Operators
|
||||
inline NCursesFormField* operator[](int i) const {
|
||||
if ( (i < 0) || (i >= ::field_count (form)) )
|
||||
OnError (E_BAD_ARGUMENT);
|
||||
return my_fields[i];
|
||||
}
|
||||
|
||||
// Perform the menu's operation
|
||||
// Return the field where you left the form.
|
||||
virtual NCursesFormField* operator()(void);
|
||||
|
||||
// Exception handlers. The default is a Beep.
|
||||
virtual void On_Request_Denied(int c) const;
|
||||
virtual void On_Invalid_Field(int c) const;
|
||||
virtual void On_Unknown_Command(int c) const;
|
||||
|
||||
};
|
||||
|
||||
//
|
||||
// -------------------------------------------------------------------------
|
||||
// This is the typical C++ typesafe way to allow to attach
|
||||
// user data to a field of a form. Its assumed that the user
|
||||
// data belongs to some class T. Use T as template argument
|
||||
// to create a UserField.
|
||||
// -------------------------------------------------------------------------
|
||||
template<class T> class NCURSES_CXX_IMPEXP NCursesUserField : public NCursesFormField
|
||||
{
|
||||
public:
|
||||
NCursesUserField (int rows,
|
||||
int ncols,
|
||||
int first_row = 0,
|
||||
int first_col = 0,
|
||||
const T* p_UserData = STATIC_CAST(T*)(0),
|
||||
int offscreen_rows = 0,
|
||||
int additional_buffers = 0)
|
||||
: NCursesFormField (rows, ncols,
|
||||
first_row, first_col,
|
||||
offscreen_rows, additional_buffers) {
|
||||
if (field)
|
||||
OnError(::set_field_userptr(field, STATIC_CAST(void *)(p_UserData)));
|
||||
}
|
||||
|
||||
virtual ~NCursesUserField() THROWS(NCursesException) {};
|
||||
|
||||
inline const T* UserData (void) const {
|
||||
return reinterpret_cast<const T*>(::field_userptr (field));
|
||||
}
|
||||
|
||||
inline virtual void setUserData(const T* p_UserData) {
|
||||
if (field)
|
||||
OnError (::set_field_userptr (field, STATIC_CAST(void *)(p_UserData)));
|
||||
}
|
||||
};
|
||||
//
|
||||
// -------------------------------------------------------------------------
|
||||
// The same mechanism is used to attach user data to a form
|
||||
// -------------------------------------------------------------------------
|
||||
//
|
||||
template<class T> class NCURSES_CXX_IMPEXP NCursesUserForm : public NCursesForm
|
||||
{
|
||||
protected:
|
||||
// 'Internal' constructor, builds an object without association to a
|
||||
// field array.
|
||||
NCursesUserForm( int nlines,
|
||||
int ncols,
|
||||
int begin_y = 0,
|
||||
int begin_x = 0,
|
||||
const T* p_UserData = STATIC_CAST(T*)(0))
|
||||
: NCursesForm(nlines,ncols,begin_y,begin_x) {
|
||||
if (form)
|
||||
set_user (const_cast<void *>(reinterpret_cast<const void*>
|
||||
(p_UserData)));
|
||||
}
|
||||
|
||||
public:
|
||||
NCursesUserForm (NCursesFormField* Fields[],
|
||||
const T* p_UserData = STATIC_CAST(T*)(0),
|
||||
bool with_frame=FALSE,
|
||||
bool autoDelete_Fields=FALSE)
|
||||
: NCursesForm (Fields, with_frame, autoDelete_Fields) {
|
||||
if (form)
|
||||
set_user (const_cast<void *>(reinterpret_cast<const void*>(p_UserData)));
|
||||
};
|
||||
|
||||
NCursesUserForm (NCursesFormField* Fields[],
|
||||
int nlines,
|
||||
int ncols,
|
||||
int begin_y = 0,
|
||||
int begin_x = 0,
|
||||
const T* p_UserData = STATIC_CAST(T*)(0),
|
||||
bool with_frame=FALSE,
|
||||
bool autoDelete_Fields=FALSE)
|
||||
: NCursesForm (Fields, nlines, ncols, begin_y, begin_x,
|
||||
with_frame, autoDelete_Fields) {
|
||||
if (form)
|
||||
set_user (const_cast<void *>(reinterpret_cast<const void*>
|
||||
(p_UserData)));
|
||||
};
|
||||
|
||||
virtual ~NCursesUserForm() THROWS(NCursesException) {
|
||||
};
|
||||
|
||||
inline T* UserData (void) {
|
||||
return reinterpret_cast<T*>(get_user ());
|
||||
};
|
||||
|
||||
inline virtual void setUserData (const T* p_UserData) {
|
||||
if (form)
|
||||
set_user (const_cast<void *>(reinterpret_cast<const void*>(p_UserData)));
|
||||
}
|
||||
|
||||
};
|
||||
//
|
||||
// -------------------------------------------------------------------------
|
||||
// Builtin Fieldtypes
|
||||
// -------------------------------------------------------------------------
|
||||
//
|
||||
class NCURSES_CXX_IMPEXP Alpha_Field : public NCursesFieldType
|
||||
{
|
||||
private:
|
||||
int min_field_width;
|
||||
|
||||
void set(NCursesFormField& f) {
|
||||
OnError(::set_field_type(f.get_field(),fieldtype,min_field_width));
|
||||
}
|
||||
|
||||
public:
|
||||
explicit Alpha_Field(int width)
|
||||
: NCursesFieldType(TYPE_ALPHA),
|
||||
min_field_width(width) {
|
||||
}
|
||||
};
|
||||
|
||||
class NCURSES_CXX_IMPEXP Alphanumeric_Field : public NCursesFieldType
|
||||
{
|
||||
private:
|
||||
int min_field_width;
|
||||
|
||||
void set(NCursesFormField& f) {
|
||||
OnError(::set_field_type(f.get_field(),fieldtype,min_field_width));
|
||||
}
|
||||
|
||||
public:
|
||||
explicit Alphanumeric_Field(int width)
|
||||
: NCursesFieldType(TYPE_ALNUM),
|
||||
min_field_width(width) {
|
||||
}
|
||||
};
|
||||
|
||||
class NCURSES_CXX_IMPEXP Integer_Field : public NCursesFieldType
|
||||
{
|
||||
private:
|
||||
int precision;
|
||||
long lower_limit, upper_limit;
|
||||
|
||||
void set(NCursesFormField& f) {
|
||||
OnError(::set_field_type(f.get_field(),fieldtype,
|
||||
precision,lower_limit,upper_limit));
|
||||
}
|
||||
|
||||
public:
|
||||
Integer_Field(int prec, long low=0L, long high=0L)
|
||||
: NCursesFieldType(TYPE_INTEGER),
|
||||
precision(prec), lower_limit(low), upper_limit(high) {
|
||||
}
|
||||
};
|
||||
|
||||
class NCURSES_CXX_IMPEXP Numeric_Field : public NCursesFieldType
|
||||
{
|
||||
private:
|
||||
int precision;
|
||||
double lower_limit, upper_limit;
|
||||
|
||||
void set(NCursesFormField& f) {
|
||||
OnError(::set_field_type(f.get_field(),fieldtype,
|
||||
precision,lower_limit,upper_limit));
|
||||
}
|
||||
|
||||
public:
|
||||
Numeric_Field(int prec, double low=0.0, double high=0.0)
|
||||
: NCursesFieldType(TYPE_NUMERIC),
|
||||
precision(prec), lower_limit(low), upper_limit(high) {
|
||||
}
|
||||
};
|
||||
|
||||
class NCURSES_CXX_IMPEXP Regular_Expression_Field : public NCursesFieldType
|
||||
{
|
||||
private:
|
||||
char* regex;
|
||||
|
||||
void set(NCursesFormField& f) {
|
||||
OnError(::set_field_type(f.get_field(),fieldtype,regex));
|
||||
}
|
||||
|
||||
void copy_regex(const char *source)
|
||||
{
|
||||
regex = new char[1 + ::strlen(source)];
|
||||
(::strcpy)(regex, source);
|
||||
}
|
||||
|
||||
public:
|
||||
explicit Regular_Expression_Field(const char *expr)
|
||||
: NCursesFieldType(TYPE_REGEXP),
|
||||
regex(NULL)
|
||||
{
|
||||
copy_regex(expr);
|
||||
}
|
||||
|
||||
Regular_Expression_Field& operator=(const Regular_Expression_Field& rhs)
|
||||
{
|
||||
if (this != &rhs) {
|
||||
*this = rhs;
|
||||
copy_regex(rhs.regex);
|
||||
NCursesFieldType::operator=(rhs);
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
Regular_Expression_Field(const Regular_Expression_Field& rhs)
|
||||
: NCursesFieldType(rhs),
|
||||
regex(NULL)
|
||||
{
|
||||
copy_regex(rhs.regex);
|
||||
}
|
||||
|
||||
~Regular_Expression_Field() {
|
||||
delete[] regex;
|
||||
}
|
||||
};
|
||||
|
||||
class NCURSES_CXX_IMPEXP Enumeration_Field : public NCursesFieldType
|
||||
{
|
||||
private:
|
||||
const char** list;
|
||||
int case_sensitive;
|
||||
int non_unique_matches;
|
||||
|
||||
void set(NCursesFormField& f) {
|
||||
OnError(::set_field_type(f.get_field(),fieldtype,
|
||||
list,case_sensitive,non_unique_matches));
|
||||
}
|
||||
public:
|
||||
Enumeration_Field(const char* enums[],
|
||||
bool case_sens=FALSE,
|
||||
bool non_unique=FALSE)
|
||||
: NCursesFieldType(TYPE_ENUM),
|
||||
list(enums),
|
||||
case_sensitive(case_sens ? -1 : 0),
|
||||
non_unique_matches(non_unique ? -1 : 0) {
|
||||
}
|
||||
|
||||
Enumeration_Field& operator=(const Enumeration_Field& rhs)
|
||||
{
|
||||
if (this != &rhs) {
|
||||
*this = rhs;
|
||||
NCursesFieldType::operator=(rhs);
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
Enumeration_Field(const Enumeration_Field& rhs)
|
||||
: NCursesFieldType(rhs),
|
||||
list(rhs.list),
|
||||
case_sensitive(rhs.case_sensitive),
|
||||
non_unique_matches(rhs.non_unique_matches)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
class NCURSES_CXX_IMPEXP IPV4_Address_Field : public NCursesFieldType
|
||||
{
|
||||
private:
|
||||
void set(NCursesFormField& f) {
|
||||
OnError(::set_field_type(f.get_field(),fieldtype));
|
||||
}
|
||||
|
||||
public:
|
||||
IPV4_Address_Field() : NCursesFieldType(TYPE_IPV4) {
|
||||
}
|
||||
};
|
||||
|
||||
extern "C" {
|
||||
bool _nc_xx_fld_fcheck(FIELD *, const void*);
|
||||
bool _nc_xx_fld_ccheck(int c, const void *);
|
||||
void* _nc_xx_fld_makearg(va_list*);
|
||||
}
|
||||
|
||||
//
|
||||
// -------------------------------------------------------------------------
|
||||
// Abstract base class for User-Defined Fieldtypes
|
||||
// -------------------------------------------------------------------------
|
||||
//
|
||||
class NCURSES_CXX_IMPEXP UserDefinedFieldType : public NCursesFieldType
|
||||
{
|
||||
friend class UDF_Init; // Internal helper to set up statics
|
||||
private:
|
||||
// For all C++ defined fieldtypes we need only one generic lowlevel
|
||||
// FIELDTYPE* element.
|
||||
static FIELDTYPE* generic_fieldtype;
|
||||
|
||||
protected:
|
||||
// This are the functions required by the low level libforms functions
|
||||
// to construct a fieldtype.
|
||||
friend bool _nc_xx_fld_fcheck(FIELD *, const void*);
|
||||
friend bool _nc_xx_fld_ccheck(int c, const void *);
|
||||
friend void* _nc_xx_fld_makearg(va_list*);
|
||||
|
||||
void set(NCursesFormField& f) {
|
||||
OnError(::set_field_type(f.get_field(),fieldtype,&f));
|
||||
}
|
||||
|
||||
protected:
|
||||
// Redefine this function to do a field validation. The argument
|
||||
// is a reference to the field you should validate.
|
||||
virtual bool field_check(NCursesFormField& f) = 0;
|
||||
|
||||
// Redefine this function to do a character validation. The argument
|
||||
// is the character to be validated.
|
||||
virtual bool char_check (int c) = 0;
|
||||
|
||||
public:
|
||||
UserDefinedFieldType();
|
||||
};
|
||||
|
||||
extern "C" {
|
||||
bool _nc_xx_next_choice(FIELD*, const void *);
|
||||
bool _nc_xx_prev_choice(FIELD*, const void *);
|
||||
}
|
||||
|
||||
//
|
||||
// -------------------------------------------------------------------------
|
||||
// Abstract base class for User-Defined Fieldtypes with Choice functions
|
||||
// -------------------------------------------------------------------------
|
||||
//
|
||||
class NCURSES_CXX_IMPEXP UserDefinedFieldType_With_Choice : public UserDefinedFieldType
|
||||
{
|
||||
friend class UDF_Init; // Internal helper to set up statics
|
||||
private:
|
||||
// For all C++ defined fieldtypes with choice functions we need only one
|
||||
// generic lowlevel FIELDTYPE* element.
|
||||
static FIELDTYPE* generic_fieldtype_with_choice;
|
||||
|
||||
// This are the functions required by the low level libforms functions
|
||||
// to construct a fieldtype with choice functions.
|
||||
friend bool _nc_xx_next_choice(FIELD*, const void *);
|
||||
friend bool _nc_xx_prev_choice(FIELD*, const void *);
|
||||
|
||||
protected:
|
||||
// Redefine this function to do the retrieval of the next choice value.
|
||||
// The argument is a reference to the field tobe examined.
|
||||
virtual bool next (NCursesFormField& f) = 0;
|
||||
|
||||
// Redefine this function to do the retrieval of the previous choice value.
|
||||
// The argument is a reference to the field tobe examined.
|
||||
virtual bool previous(NCursesFormField& f) = 0;
|
||||
|
||||
public:
|
||||
UserDefinedFieldType_With_Choice();
|
||||
};
|
||||
|
||||
#endif /* NCURSES_CURSESF_H_incl */
|
||||
674
.CondaPkg/env/include/cursesm.h
vendored
Normal file
674
.CondaPkg/env/include/cursesm.h
vendored
Normal file
@@ -0,0 +1,674 @@
|
||||
// * This makes emacs happy -*-Mode: C++;-*-
|
||||
/****************************************************************************
|
||||
* Copyright 2019,2020 Thomas E. Dickey *
|
||||
* Copyright 1998-2012,2014 Free Software Foundation, Inc. *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a *
|
||||
* copy of this software and associated documentation files (the *
|
||||
* "Software"), to deal in the Software without restriction, including *
|
||||
* without limitation the rights to use, copy, modify, merge, publish, *
|
||||
* distribute, distribute with modifications, sublicense, and/or sell *
|
||||
* copies of the Software, and to permit persons to whom the Software is *
|
||||
* furnished to do so, subject to the following conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included *
|
||||
* in all copies or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
|
||||
* IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
|
||||
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
|
||||
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
|
||||
* THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
* *
|
||||
* Except as contained in this notice, the name(s) of the above copyright *
|
||||
* holders shall not be used in advertising or otherwise to promote the *
|
||||
* sale, use or other dealings in this Software without prior written *
|
||||
* authorization. *
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Author: Juergen Pfeifer, 1997 *
|
||||
****************************************************************************/
|
||||
|
||||
// $Id: cursesm.h,v 1.34 2020/05/24 01:40:20 anonymous.maarten Exp $
|
||||
|
||||
#ifndef NCURSES_CURSESM_H_incl
|
||||
#define NCURSES_CURSESM_H_incl 1
|
||||
|
||||
#include <ncursesw/cursesp.h>
|
||||
|
||||
extern "C" {
|
||||
# include <ncursesw/menu.h>
|
||||
}
|
||||
//
|
||||
// -------------------------------------------------------------------------
|
||||
// This wraps the ITEM type of <ncursesw/menu.h>
|
||||
// -------------------------------------------------------------------------
|
||||
//
|
||||
class NCURSES_CXX_IMPEXP NCursesMenuItem
|
||||
{
|
||||
friend class NCursesMenu;
|
||||
|
||||
protected:
|
||||
ITEM *item;
|
||||
|
||||
inline void OnError (int err) const THROW2(NCursesException const, NCursesMenuException) {
|
||||
if (err != E_OK)
|
||||
THROW(new NCursesMenuException (err));
|
||||
}
|
||||
|
||||
public:
|
||||
NCursesMenuItem (const char* p_name = NULL,
|
||||
const char* p_descript = NULL)
|
||||
: item(0)
|
||||
{
|
||||
item = p_name ? ::new_item (p_name, p_descript) : STATIC_CAST(ITEM*)(0);
|
||||
if (p_name && !item)
|
||||
OnError (E_SYSTEM_ERROR);
|
||||
}
|
||||
// Create an item. If you pass both parameters as NULL, a delimiting
|
||||
// item is constructed which can be used to terminate a list of
|
||||
// NCursesMenu objects.
|
||||
|
||||
NCursesMenuItem& operator=(const NCursesMenuItem& rhs)
|
||||
{
|
||||
if (this != &rhs) {
|
||||
*this = rhs;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
NCursesMenuItem(const NCursesMenuItem& rhs)
|
||||
: item(0)
|
||||
{
|
||||
(void) rhs;
|
||||
}
|
||||
|
||||
virtual ~NCursesMenuItem () THROWS(NCursesException);
|
||||
// Release the items memory
|
||||
|
||||
inline const char* name () const {
|
||||
return ::item_name (item);
|
||||
}
|
||||
// Name of the item
|
||||
|
||||
inline const char* description () const {
|
||||
return ::item_description (item);
|
||||
}
|
||||
// Description of the item
|
||||
|
||||
inline int (index) (void) const {
|
||||
return ::item_index (item);
|
||||
}
|
||||
// Index of the item in an item array (or -1)
|
||||
|
||||
inline void options_on (Item_Options opts) {
|
||||
OnError (::item_opts_on (item, opts));
|
||||
}
|
||||
// Switch on the items options
|
||||
|
||||
inline void options_off (Item_Options opts) {
|
||||
OnError (::item_opts_off (item, opts));
|
||||
}
|
||||
// Switch off the item's option
|
||||
|
||||
inline Item_Options options () const {
|
||||
return ::item_opts (item);
|
||||
}
|
||||
// Retrieve the items options
|
||||
|
||||
inline void set_options (Item_Options opts) {
|
||||
OnError (::set_item_opts (item, opts));
|
||||
}
|
||||
// Set the items options
|
||||
|
||||
inline void set_value (bool f) {
|
||||
OnError (::set_item_value (item,f));
|
||||
}
|
||||
// Set/Reset the items selection state
|
||||
|
||||
inline bool value () const {
|
||||
return ::item_value (item);
|
||||
}
|
||||
// Retrieve the items selection state
|
||||
|
||||
inline bool visible () const {
|
||||
return ::item_visible (item);
|
||||
}
|
||||
// Retrieve visibility of the item
|
||||
|
||||
virtual bool action();
|
||||
// Perform an action associated with this item; you may use this in an
|
||||
// user supplied driver for a menu; you may derive from this class and
|
||||
// overload action() to supply items with different actions.
|
||||
// If an action returns true, the menu will be exited. The default action
|
||||
// is to do nothing.
|
||||
};
|
||||
|
||||
// Prototype for an items callback function.
|
||||
typedef bool ITEMCALLBACK(NCursesMenuItem&);
|
||||
|
||||
// If you don't like to create a child class for individual items to
|
||||
// overload action(), you may use this class and provide a callback
|
||||
// function pointer for items.
|
||||
class NCURSES_CXX_IMPEXP NCursesMenuCallbackItem : public NCursesMenuItem
|
||||
{
|
||||
private:
|
||||
ITEMCALLBACK* p_fct;
|
||||
|
||||
public:
|
||||
NCursesMenuCallbackItem(ITEMCALLBACK* fct = NULL,
|
||||
const char* p_name = NULL,
|
||||
const char* p_descript = NULL )
|
||||
: NCursesMenuItem (p_name, p_descript),
|
||||
p_fct (fct) {
|
||||
}
|
||||
|
||||
NCursesMenuCallbackItem& operator=(const NCursesMenuCallbackItem& rhs)
|
||||
{
|
||||
if (this != &rhs) {
|
||||
*this = rhs;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
NCursesMenuCallbackItem(const NCursesMenuCallbackItem& rhs)
|
||||
: NCursesMenuItem(rhs),
|
||||
p_fct(0)
|
||||
{
|
||||
}
|
||||
|
||||
virtual ~NCursesMenuCallbackItem() THROWS(NCursesException);
|
||||
|
||||
bool action();
|
||||
};
|
||||
|
||||
// This are the built-in hook functions in this C++ binding. In C++ we use
|
||||
// virtual member functions (see below On_..._Init and On_..._Termination)
|
||||
// to provide this functionality in an object oriented manner.
|
||||
extern "C" {
|
||||
void _nc_xx_mnu_init(MENU *);
|
||||
void _nc_xx_mnu_term(MENU *);
|
||||
void _nc_xx_itm_init(MENU *);
|
||||
void _nc_xx_itm_term(MENU *);
|
||||
}
|
||||
|
||||
//
|
||||
// -------------------------------------------------------------------------
|
||||
// This wraps the MENU type of <ncursesw/menu.h>
|
||||
// -------------------------------------------------------------------------
|
||||
//
|
||||
class NCURSES_CXX_IMPEXP NCursesMenu : public NCursesPanel
|
||||
{
|
||||
protected:
|
||||
MENU *menu;
|
||||
|
||||
private:
|
||||
NCursesWindow* sub; // the subwindow object
|
||||
bool b_sub_owner; // is this our own subwindow?
|
||||
bool b_framed; // has the menu a border?
|
||||
bool b_autoDelete; // Delete items when deleting menu?
|
||||
|
||||
NCursesMenuItem** my_items; // The array of items for this menu
|
||||
|
||||
// This structure is used for the menu's user data field to link the
|
||||
// MENU* to the C++ object and to provide extra space for a user pointer.
|
||||
typedef struct {
|
||||
void* m_user; // the pointer for the user's data
|
||||
const NCursesMenu* m_back; // backward pointer to C++ object
|
||||
const MENU* m_owner;
|
||||
} UserHook;
|
||||
|
||||
// Get the backward pointer to the C++ object from a MENU
|
||||
static inline NCursesMenu* getHook(const MENU *m) {
|
||||
UserHook* hook = STATIC_CAST(UserHook*)(::menu_userptr(m));
|
||||
assert(hook != 0 && hook->m_owner==m);
|
||||
return const_cast<NCursesMenu*>(hook->m_back);
|
||||
}
|
||||
|
||||
friend void _nc_xx_mnu_init(MENU *);
|
||||
friend void _nc_xx_mnu_term(MENU *);
|
||||
friend void _nc_xx_itm_init(MENU *);
|
||||
friend void _nc_xx_itm_term(MENU *);
|
||||
|
||||
// Calculate ITEM* array for the menu
|
||||
ITEM** mapItems(NCursesMenuItem* nitems[]);
|
||||
|
||||
protected:
|
||||
// internal routines
|
||||
inline void set_user(void *user) {
|
||||
UserHook* uptr = STATIC_CAST(UserHook*)(::menu_userptr (menu));
|
||||
assert (uptr != 0 && uptr->m_back==this && uptr->m_owner==menu);
|
||||
uptr->m_user = user;
|
||||
}
|
||||
|
||||
inline void *get_user() {
|
||||
UserHook* uptr = STATIC_CAST(UserHook*)(::menu_userptr (menu));
|
||||
assert (uptr != 0 && uptr->m_back==this && uptr->m_owner==menu);
|
||||
return uptr->m_user;
|
||||
}
|
||||
|
||||
void InitMenu (NCursesMenuItem* menu[],
|
||||
bool with_frame,
|
||||
bool autoDeleteItems);
|
||||
|
||||
inline void OnError (int err) const THROW2(NCursesException const, NCursesMenuException) {
|
||||
if (err != E_OK)
|
||||
THROW(new NCursesMenuException (this, err));
|
||||
}
|
||||
|
||||
// this wraps the menu_driver call.
|
||||
virtual int driver (int c) ;
|
||||
|
||||
// 'Internal' constructor to create a menu without association to
|
||||
// an array of items.
|
||||
NCursesMenu( int nlines,
|
||||
int ncols,
|
||||
int begin_y = 0,
|
||||
int begin_x = 0)
|
||||
: NCursesPanel(nlines,ncols,begin_y,begin_x),
|
||||
menu (STATIC_CAST(MENU*)(0)),
|
||||
sub(0),
|
||||
b_sub_owner(0),
|
||||
b_framed(0),
|
||||
b_autoDelete(0),
|
||||
my_items(0)
|
||||
{
|
||||
}
|
||||
|
||||
public:
|
||||
// Make a full window size menu
|
||||
NCursesMenu (NCursesMenuItem* Items[],
|
||||
bool with_frame=FALSE, // Reserve space for a frame?
|
||||
bool autoDelete_Items=FALSE) // Autocleanup of Items?
|
||||
: NCursesPanel(),
|
||||
menu(0),
|
||||
sub(0),
|
||||
b_sub_owner(0),
|
||||
b_framed(0),
|
||||
b_autoDelete(0),
|
||||
my_items(0)
|
||||
{
|
||||
InitMenu(Items, with_frame, autoDelete_Items);
|
||||
}
|
||||
|
||||
// Make a menu with a window of this size.
|
||||
NCursesMenu (NCursesMenuItem* Items[],
|
||||
int nlines,
|
||||
int ncols,
|
||||
int begin_y = 0,
|
||||
int begin_x = 0,
|
||||
bool with_frame=FALSE, // Reserve space for a frame?
|
||||
bool autoDelete_Items=FALSE) // Autocleanup of Items?
|
||||
: NCursesPanel(nlines, ncols, begin_y, begin_x),
|
||||
menu(0),
|
||||
sub(0),
|
||||
b_sub_owner(0),
|
||||
b_framed(0),
|
||||
b_autoDelete(0),
|
||||
my_items(0)
|
||||
{
|
||||
InitMenu(Items, with_frame, autoDelete_Items);
|
||||
}
|
||||
|
||||
NCursesMenu& operator=(const NCursesMenu& rhs)
|
||||
{
|
||||
if (this != &rhs) {
|
||||
*this = rhs;
|
||||
NCursesPanel::operator=(rhs);
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
NCursesMenu(const NCursesMenu& rhs)
|
||||
: NCursesPanel(rhs),
|
||||
menu(rhs.menu),
|
||||
sub(rhs.sub),
|
||||
b_sub_owner(rhs.b_sub_owner),
|
||||
b_framed(rhs.b_framed),
|
||||
b_autoDelete(rhs.b_autoDelete),
|
||||
my_items(rhs.my_items)
|
||||
{
|
||||
}
|
||||
|
||||
virtual ~NCursesMenu () THROWS(NCursesException);
|
||||
|
||||
// Retrieve the menus subwindow
|
||||
inline NCursesWindow& subWindow() const {
|
||||
assert(sub!=NULL);
|
||||
return *sub;
|
||||
}
|
||||
|
||||
// Set the menus subwindow
|
||||
void setSubWindow(NCursesWindow& sub);
|
||||
|
||||
// Set these items for the menu
|
||||
inline void setItems(NCursesMenuItem* Items[]) {
|
||||
OnError(::set_menu_items(menu,mapItems(Items)));
|
||||
}
|
||||
|
||||
// Remove the menu from the screen
|
||||
inline void unpost (void) {
|
||||
OnError (::unpost_menu (menu));
|
||||
}
|
||||
|
||||
// Post the menu to the screen if flag is true, unpost it otherwise
|
||||
inline void post(bool flag = TRUE) {
|
||||
flag ? OnError (::post_menu(menu)) : OnError (::unpost_menu (menu));
|
||||
}
|
||||
|
||||
// Get the number of rows and columns for this menu
|
||||
inline void scale (int& mrows, int& mcols) const {
|
||||
OnError (::scale_menu (menu, &mrows, &mcols));
|
||||
}
|
||||
|
||||
// Set the format of this menu
|
||||
inline void set_format(int mrows, int mcols) {
|
||||
OnError (::set_menu_format(menu, mrows, mcols));
|
||||
}
|
||||
|
||||
// Get the format of this menu
|
||||
inline void menu_format(int& rows,int& ncols) {
|
||||
::menu_format(menu,&rows,&ncols);
|
||||
}
|
||||
|
||||
// Items of the menu
|
||||
inline NCursesMenuItem* items() const {
|
||||
return *my_items;
|
||||
}
|
||||
|
||||
// Get the number of items in this menu
|
||||
inline int count() const {
|
||||
return ::item_count(menu);
|
||||
}
|
||||
|
||||
// Get the current item (i.e. the one the cursor is located)
|
||||
inline NCursesMenuItem* current_item() const {
|
||||
return my_items[::item_index(::current_item(menu))];
|
||||
}
|
||||
|
||||
// Get the marker string
|
||||
inline const char* mark() const {
|
||||
return ::menu_mark(menu);
|
||||
}
|
||||
|
||||
// Set the marker string
|
||||
inline void set_mark(const char *marker) {
|
||||
OnError (::set_menu_mark (menu, marker));
|
||||
}
|
||||
|
||||
// Get the name of the request code c
|
||||
inline static const char* request_name(int c) {
|
||||
return ::menu_request_name(c);
|
||||
}
|
||||
|
||||
// Get the current pattern
|
||||
inline char* pattern() const {
|
||||
return ::menu_pattern(menu);
|
||||
}
|
||||
|
||||
// true if there is a pattern match, false otherwise.
|
||||
bool set_pattern (const char *pat);
|
||||
|
||||
// set the default attributes for the menu
|
||||
// i.e. set fore, back and grey attribute
|
||||
virtual void setDefaultAttributes();
|
||||
|
||||
// Get the menus background attributes
|
||||
inline chtype back() const {
|
||||
return ::menu_back(menu);
|
||||
}
|
||||
|
||||
// Get the menus foreground attributes
|
||||
inline chtype fore() const {
|
||||
return ::menu_fore(menu);
|
||||
}
|
||||
|
||||
// Get the menus grey attributes (used for unselectable items)
|
||||
inline chtype grey() const {
|
||||
return ::menu_grey(menu);
|
||||
}
|
||||
|
||||
// Set the menus background attributes
|
||||
inline chtype set_background(chtype a) {
|
||||
return ::set_menu_back(menu,a);
|
||||
}
|
||||
|
||||
// Set the menus foreground attributes
|
||||
inline chtype set_foreground(chtype a) {
|
||||
return ::set_menu_fore(menu,a);
|
||||
}
|
||||
|
||||
// Set the menus grey attributes (used for unselectable items)
|
||||
inline chtype set_grey(chtype a) {
|
||||
return ::set_menu_grey(menu,a);
|
||||
}
|
||||
|
||||
inline void options_on (Menu_Options opts) {
|
||||
OnError (::menu_opts_on (menu,opts));
|
||||
}
|
||||
|
||||
inline void options_off(Menu_Options opts) {
|
||||
OnError (::menu_opts_off(menu,opts));
|
||||
}
|
||||
|
||||
inline Menu_Options options() const {
|
||||
return ::menu_opts(menu);
|
||||
}
|
||||
|
||||
inline void set_options (Menu_Options opts) {
|
||||
OnError (::set_menu_opts (menu,opts));
|
||||
}
|
||||
|
||||
inline int pad() const {
|
||||
return ::menu_pad(menu);
|
||||
}
|
||||
|
||||
inline void set_pad (int padch) {
|
||||
OnError (::set_menu_pad (menu, padch));
|
||||
}
|
||||
|
||||
// Position the cursor to the current item
|
||||
inline void position_cursor () const {
|
||||
OnError (::pos_menu_cursor (menu));
|
||||
}
|
||||
|
||||
// Set the current item
|
||||
inline void set_current(NCursesMenuItem& I) {
|
||||
OnError (::set_current_item(menu, I.item));
|
||||
}
|
||||
|
||||
// Get the current top row of the menu
|
||||
inline int top_row (void) const {
|
||||
return ::top_row (menu);
|
||||
}
|
||||
|
||||
// Set the current top row of the menu
|
||||
inline void set_top_row (int row) {
|
||||
OnError (::set_top_row (menu, row));
|
||||
}
|
||||
|
||||
// spacing control
|
||||
// Set the spacing for the menu
|
||||
inline void setSpacing(int spc_description,
|
||||
int spc_rows,
|
||||
int spc_columns) {
|
||||
OnError(::set_menu_spacing(menu,
|
||||
spc_description,
|
||||
spc_rows,
|
||||
spc_columns));
|
||||
}
|
||||
|
||||
// Get the spacing info for the menu
|
||||
inline void Spacing(int& spc_description,
|
||||
int& spc_rows,
|
||||
int& spc_columns) const {
|
||||
OnError(::menu_spacing(menu,
|
||||
&spc_description,
|
||||
&spc_rows,
|
||||
&spc_columns));
|
||||
}
|
||||
|
||||
// Decorations
|
||||
inline void frame(const char *title=NULL, const char* btitle=NULL) {
|
||||
if (b_framed)
|
||||
NCursesPanel::frame(title,btitle);
|
||||
else
|
||||
OnError(E_SYSTEM_ERROR);
|
||||
}
|
||||
|
||||
inline void boldframe(const char *title=NULL, const char* btitle=NULL) {
|
||||
if (b_framed)
|
||||
NCursesPanel::boldframe(title,btitle);
|
||||
else
|
||||
OnError(E_SYSTEM_ERROR);
|
||||
}
|
||||
|
||||
inline void label(const char *topLabel, const char *bottomLabel) {
|
||||
if (b_framed)
|
||||
NCursesPanel::label(topLabel,bottomLabel);
|
||||
else
|
||||
OnError(E_SYSTEM_ERROR);
|
||||
}
|
||||
|
||||
// -----
|
||||
// Hooks
|
||||
// -----
|
||||
|
||||
// Called after the menu gets repositioned in its window.
|
||||
// This is especially true if the menu is posted.
|
||||
virtual void On_Menu_Init();
|
||||
|
||||
// Called before the menu gets repositioned in its window.
|
||||
// This is especially true if the menu is unposted.
|
||||
virtual void On_Menu_Termination();
|
||||
|
||||
// Called after the item became the current item
|
||||
virtual void On_Item_Init(NCursesMenuItem& item);
|
||||
|
||||
// Called before this item is left as current item.
|
||||
virtual void On_Item_Termination(NCursesMenuItem& item);
|
||||
|
||||
// Provide a default key virtualization. Translate the keyboard
|
||||
// code c into a menu request code.
|
||||
// The default implementation provides a hopefully straightforward
|
||||
// mapping for the most common keystrokes and menu requests.
|
||||
virtual int virtualize(int c);
|
||||
|
||||
|
||||
// Operators
|
||||
inline NCursesMenuItem* operator[](int i) const {
|
||||
if ( (i < 0) || (i >= ::item_count (menu)) )
|
||||
OnError (E_BAD_ARGUMENT);
|
||||
return (my_items[i]);
|
||||
}
|
||||
|
||||
// Perform the menu's operation
|
||||
// Return the item where you left the selection mark for a single
|
||||
// selection menu, or NULL for a multivalued menu.
|
||||
virtual NCursesMenuItem* operator()(void);
|
||||
|
||||
// --------------------
|
||||
// Exception handlers
|
||||
// Called by operator()
|
||||
// --------------------
|
||||
|
||||
// Called if the request is denied
|
||||
virtual void On_Request_Denied(int c) const;
|
||||
|
||||
// Called if the item is not selectable
|
||||
virtual void On_Not_Selectable(int c) const;
|
||||
|
||||
// Called if pattern doesn't match
|
||||
virtual void On_No_Match(int c) const;
|
||||
|
||||
// Called if the command is unknown
|
||||
virtual void On_Unknown_Command(int c) const;
|
||||
|
||||
};
|
||||
//
|
||||
// -------------------------------------------------------------------------
|
||||
// This is the typical C++ typesafe way to allow to attach
|
||||
// user data to an item of a menu. Its assumed that the user
|
||||
// data belongs to some class T. Use T as template argument
|
||||
// to create a UserItem.
|
||||
// -------------------------------------------------------------------------
|
||||
//
|
||||
template<class T> class NCURSES_CXX_IMPEXP NCursesUserItem : public NCursesMenuItem
|
||||
{
|
||||
public:
|
||||
NCursesUserItem (const char* p_name,
|
||||
const char* p_descript = NULL,
|
||||
const T* p_UserData = STATIC_CAST(T*)(0))
|
||||
: NCursesMenuItem (p_name, p_descript) {
|
||||
if (item)
|
||||
OnError (::set_item_userptr (item, const_cast<void *>(reinterpret_cast<const void*>(p_UserData))));
|
||||
}
|
||||
|
||||
virtual ~NCursesUserItem() THROWS(NCursesException) {}
|
||||
|
||||
inline const T* UserData (void) const {
|
||||
return reinterpret_cast<const T*>(::item_userptr (item));
|
||||
};
|
||||
|
||||
inline virtual void setUserData(const T* p_UserData) {
|
||||
if (item)
|
||||
OnError (::set_item_userptr (item, const_cast<void *>(reinterpret_cast<const void *>(p_UserData))));
|
||||
}
|
||||
};
|
||||
//
|
||||
// -------------------------------------------------------------------------
|
||||
// The same mechanism is used to attach user data to a menu
|
||||
// -------------------------------------------------------------------------
|
||||
//
|
||||
template<class T> class NCURSES_CXX_IMPEXP NCursesUserMenu : public NCursesMenu
|
||||
{
|
||||
protected:
|
||||
NCursesUserMenu( int nlines,
|
||||
int ncols,
|
||||
int begin_y = 0,
|
||||
int begin_x = 0,
|
||||
const T* p_UserData = STATIC_CAST(T*)(0))
|
||||
: NCursesMenu(nlines,ncols,begin_y,begin_x) {
|
||||
if (menu)
|
||||
set_user (const_cast<void *>(reinterpret_cast<const void*>(p_UserData)));
|
||||
}
|
||||
|
||||
public:
|
||||
NCursesUserMenu (NCursesMenuItem* Items[],
|
||||
const T* p_UserData = STATIC_CAST(T*)(0),
|
||||
bool with_frame=FALSE,
|
||||
bool autoDelete_Items=FALSE)
|
||||
: NCursesMenu (Items, with_frame, autoDelete_Items) {
|
||||
if (menu)
|
||||
set_user (const_cast<void *>(reinterpret_cast<const void*>(p_UserData)));
|
||||
};
|
||||
|
||||
NCursesUserMenu (NCursesMenuItem* Items[],
|
||||
int nlines,
|
||||
int ncols,
|
||||
int begin_y = 0,
|
||||
int begin_x = 0,
|
||||
const T* p_UserData = STATIC_CAST(T*)(0),
|
||||
bool with_frame=FALSE)
|
||||
: NCursesMenu (Items, nlines, ncols, begin_y, begin_x, with_frame) {
|
||||
if (menu)
|
||||
set_user (const_cast<void *>(reinterpret_cast<const void*>(p_UserData)));
|
||||
};
|
||||
|
||||
virtual ~NCursesUserMenu() THROWS(NCursesException) {
|
||||
};
|
||||
|
||||
inline T* UserData (void) {
|
||||
return reinterpret_cast<T*>(get_user ());
|
||||
};
|
||||
|
||||
inline virtual void setUserData (const T* p_UserData) {
|
||||
if (menu)
|
||||
set_user (const_cast<void *>(reinterpret_cast<const void*>(p_UserData)));
|
||||
}
|
||||
};
|
||||
|
||||
#endif /* NCURSES_CURSESM_H_incl */
|
||||
271
.CondaPkg/env/include/cursesp.h
vendored
Normal file
271
.CondaPkg/env/include/cursesp.h
vendored
Normal file
@@ -0,0 +1,271 @@
|
||||
// * This makes emacs happy -*-Mode: C++;-*-
|
||||
// vile:cppmode
|
||||
/****************************************************************************
|
||||
* Copyright 2019-2020,2021 Thomas E. Dickey *
|
||||
* Copyright 1998-2012,2014 Free Software Foundation, Inc. *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a *
|
||||
* copy of this software and associated documentation files (the *
|
||||
* "Software"), to deal in the Software without restriction, including *
|
||||
* without limitation the rights to use, copy, modify, merge, publish, *
|
||||
* distribute, distribute with modifications, sublicense, and/or sell *
|
||||
* copies of the Software, and to permit persons to whom the Software is *
|
||||
* furnished to do so, subject to the following conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included *
|
||||
* in all copies or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
|
||||
* IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
|
||||
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
|
||||
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
|
||||
* THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
* *
|
||||
* Except as contained in this notice, the name(s) of the above copyright *
|
||||
* holders shall not be used in advertising or otherwise to promote the *
|
||||
* sale, use or other dealings in this Software without prior written *
|
||||
* authorization. *
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Author: Juergen Pfeifer, 1997 *
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef NCURSES_CURSESP_H_incl
|
||||
#define NCURSES_CURSESP_H_incl 1
|
||||
|
||||
// $Id: cursesp.h,v 1.35 2021/04/17 18:11:08 tom Exp $
|
||||
|
||||
#include <ncursesw/cursesw.h>
|
||||
|
||||
extern "C" {
|
||||
# include <ncursesw/panel.h>
|
||||
}
|
||||
|
||||
class NCURSES_CXX_IMPEXP NCursesPanel
|
||||
: public NCursesWindow
|
||||
{
|
||||
protected:
|
||||
PANEL *p;
|
||||
static NCursesPanel *dummy;
|
||||
|
||||
private:
|
||||
// This structure is used for the panel's user data field to link the
|
||||
// PANEL* to the C++ object and to provide extra space for a user pointer.
|
||||
typedef struct {
|
||||
void* m_user; // the pointer for the user's data
|
||||
const NCursesPanel* m_back; // backward pointer to C++ object
|
||||
const PANEL* m_owner; // the panel itself
|
||||
} UserHook;
|
||||
|
||||
inline UserHook *UserPointer()
|
||||
{
|
||||
UserHook* uptr = reinterpret_cast<UserHook*>(
|
||||
const_cast<void *>(::panel_userptr (p)));
|
||||
return uptr;
|
||||
}
|
||||
|
||||
void init(); // Initialize the panel object
|
||||
|
||||
protected:
|
||||
void set_user(void *user)
|
||||
{
|
||||
UserHook* uptr = UserPointer();
|
||||
if (uptr != 0 && uptr->m_back==this && uptr->m_owner==p) {
|
||||
uptr->m_user = user;
|
||||
}
|
||||
}
|
||||
// Set the user pointer of the panel.
|
||||
|
||||
void *get_user()
|
||||
{
|
||||
UserHook* uptr = UserPointer();
|
||||
void *result = 0;
|
||||
if (uptr != 0 && uptr->m_back==this && uptr->m_owner==p)
|
||||
result = uptr->m_user;
|
||||
return result;
|
||||
}
|
||||
|
||||
void OnError (int err) const THROW2(NCursesException const, NCursesPanelException)
|
||||
{
|
||||
if (err==ERR)
|
||||
THROW(new NCursesPanelException (this, err));
|
||||
}
|
||||
// If err is equal to the curses error indicator ERR, an error handler
|
||||
// is called.
|
||||
|
||||
// Get a keystroke. Default implementation calls getch()
|
||||
virtual int getKey(void);
|
||||
|
||||
public:
|
||||
NCursesPanel(int nlines,
|
||||
int ncols,
|
||||
int begin_y = 0,
|
||||
int begin_x = 0)
|
||||
: NCursesWindow(nlines,ncols,begin_y,begin_x), p(0)
|
||||
{
|
||||
init();
|
||||
}
|
||||
// Create a panel with this size starting at the requested position.
|
||||
|
||||
NCursesPanel()
|
||||
: NCursesWindow(::stdscr), p(0)
|
||||
{
|
||||
init();
|
||||
}
|
||||
// This constructor creates the default Panel associated with the
|
||||
// ::stdscr window
|
||||
|
||||
NCursesPanel& operator=(const NCursesPanel& rhs)
|
||||
{
|
||||
if (this != &rhs) {
|
||||
*this = rhs;
|
||||
NCursesWindow::operator=(rhs);
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
NCursesPanel(const NCursesPanel& rhs)
|
||||
: NCursesWindow(rhs),
|
||||
p(rhs.p)
|
||||
{
|
||||
}
|
||||
|
||||
virtual ~NCursesPanel() THROWS(NCursesException);
|
||||
|
||||
// basic manipulation
|
||||
inline void hide()
|
||||
{
|
||||
OnError (::hide_panel(p));
|
||||
}
|
||||
// Hide the panel. It stays in the stack but becomes invisible.
|
||||
|
||||
inline void show()
|
||||
{
|
||||
OnError (::show_panel(p));
|
||||
}
|
||||
// Show the panel, i.e. make it visible.
|
||||
|
||||
inline void top()
|
||||
{
|
||||
OnError (::top_panel(p));
|
||||
}
|
||||
// Make this panel the top panel in the stack.
|
||||
|
||||
inline void bottom()
|
||||
{
|
||||
OnError (::bottom_panel(p));
|
||||
}
|
||||
// Make this panel the bottom panel in the stack.
|
||||
// N.B.: The panel associated with ::stdscr is always on the bottom. So
|
||||
// actually bottom() makes the panel the first above ::stdscr.
|
||||
|
||||
virtual int mvwin(int y, int x)
|
||||
{
|
||||
OnError(::move_panel(p, y, x));
|
||||
return OK;
|
||||
}
|
||||
|
||||
inline bool hidden() const
|
||||
{
|
||||
return (::panel_hidden (p) ? TRUE : FALSE);
|
||||
}
|
||||
// Return TRUE if the panel is hidden, FALSE otherwise.
|
||||
|
||||
/* The functions panel_above() and panel_below() are not reflected in
|
||||
the NCursesPanel class. The reason for this is, that we cannot
|
||||
assume that a panel retrieved by those operations is one wrapped
|
||||
by a C++ class. Although this situation might be handled, we also
|
||||
need a reverse mapping from PANEL to NCursesPanel which needs some
|
||||
redesign of the low level stuff. At the moment, we define them in the
|
||||
interface but they will always produce an error. */
|
||||
inline NCursesPanel& above() const
|
||||
{
|
||||
OnError(ERR);
|
||||
return *dummy;
|
||||
}
|
||||
|
||||
inline NCursesPanel& below() const
|
||||
{
|
||||
OnError(ERR);
|
||||
return *dummy;
|
||||
}
|
||||
|
||||
// Those two are rewrites of the corresponding virtual members of
|
||||
// NCursesWindow
|
||||
virtual int refresh();
|
||||
// Propagate all panel changes to the virtual screen and update the
|
||||
// physical screen.
|
||||
|
||||
virtual int noutrefresh();
|
||||
// Propagate all panel changes to the virtual screen.
|
||||
|
||||
static void redraw();
|
||||
// Redraw all panels.
|
||||
|
||||
// decorations
|
||||
virtual void frame(const char* title=NULL,
|
||||
const char* btitle=NULL);
|
||||
// Put a frame around the panel and put the title centered in the top line
|
||||
// and btitle in the bottom line.
|
||||
|
||||
virtual void boldframe(const char* title=NULL,
|
||||
const char* btitle=NULL);
|
||||
// Same as frame(), but use highlighted attributes.
|
||||
|
||||
virtual void label(const char* topLabel,
|
||||
const char* bottomLabel);
|
||||
// Put the title centered in the top line and btitle in the bottom line.
|
||||
|
||||
virtual void centertext(int row,const char* label);
|
||||
// Put the label text centered in the specified row.
|
||||
};
|
||||
|
||||
/* We use templates to provide a typesafe mechanism to associate
|
||||
* user data with a panel. A NCursesUserPanel<T> is a panel
|
||||
* associated with some user data of type T.
|
||||
*/
|
||||
template<class T> class NCursesUserPanel : public NCursesPanel
|
||||
{
|
||||
public:
|
||||
NCursesUserPanel (int nlines,
|
||||
int ncols,
|
||||
int begin_y = 0,
|
||||
int begin_x = 0,
|
||||
const T* p_UserData = STATIC_CAST(T*)(0))
|
||||
: NCursesPanel (nlines, ncols, begin_y, begin_x)
|
||||
{
|
||||
if (p)
|
||||
set_user (const_cast<void *>(reinterpret_cast<const void*>
|
||||
(p_UserData)));
|
||||
};
|
||||
// This creates an user panel of the requested size with associated
|
||||
// user data pointed to by p_UserData.
|
||||
|
||||
explicit NCursesUserPanel(const T* p_UserData = STATIC_CAST(T*)(0)) : NCursesPanel()
|
||||
{
|
||||
if (p)
|
||||
set_user(const_cast<void *>(reinterpret_cast<const void*>(p_UserData)));
|
||||
};
|
||||
// This creates an user panel associated with the ::stdscr and user data
|
||||
// pointed to by p_UserData.
|
||||
|
||||
virtual ~NCursesUserPanel() THROWS(NCursesException) {};
|
||||
|
||||
T* UserData (void)
|
||||
{
|
||||
return reinterpret_cast<T*>(get_user ());
|
||||
};
|
||||
// Retrieve the user data associated with the panel.
|
||||
|
||||
virtual void setUserData (const T* p_UserData)
|
||||
{
|
||||
if (p)
|
||||
set_user (const_cast<void *>(reinterpret_cast<const void*>(p_UserData)));
|
||||
}
|
||||
// Associate the user panel with the user data pointed to by p_UserData.
|
||||
};
|
||||
|
||||
#endif /* NCURSES_CURSESP_H_incl */
|
||||
1581
.CondaPkg/env/include/cursesw.h
vendored
Normal file
1581
.CondaPkg/env/include/cursesw.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
240
.CondaPkg/env/include/cursslk.h
vendored
Normal file
240
.CondaPkg/env/include/cursslk.h
vendored
Normal file
@@ -0,0 +1,240 @@
|
||||
// * this is for making emacs happy: -*-Mode: C++;-*-
|
||||
// vile:cppmode
|
||||
/****************************************************************************
|
||||
* Copyright 2019-2020,2021 Thomas E. Dickey *
|
||||
* Copyright 1998-2003,2005 Free Software Foundation, Inc. *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a *
|
||||
* copy of this software and associated documentation files (the *
|
||||
* "Software"), to deal in the Software without restriction, including *
|
||||
* without limitation the rights to use, copy, modify, merge, publish, *
|
||||
* distribute, distribute with modifications, sublicense, and/or sell *
|
||||
* copies of the Software, and to permit persons to whom the Software is *
|
||||
* furnished to do so, subject to the following conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included *
|
||||
* in all copies or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
|
||||
* IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
|
||||
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
|
||||
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
|
||||
* THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
* *
|
||||
* Except as contained in this notice, the name(s) of the above copyright *
|
||||
* holders shall not be used in advertising or otherwise to promote the *
|
||||
* sale, use or other dealings in this Software without prior written *
|
||||
* authorization. *
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Author: Juergen Pfeifer, 1997 *
|
||||
****************************************************************************/
|
||||
|
||||
// $Id: cursslk.h,v 1.19 2021/04/17 18:11:08 tom Exp $
|
||||
|
||||
#ifndef NCURSES_CURSSLK_H_incl
|
||||
#define NCURSES_CURSSLK_H_incl
|
||||
|
||||
#include <ncursesw/cursesw.h>
|
||||
|
||||
class NCURSES_CXX_IMPEXP Soft_Label_Key_Set {
|
||||
public:
|
||||
// This inner class represents the attributes of a Soft Label Key (SLK)
|
||||
class NCURSES_CXX_IMPEXP Soft_Label_Key {
|
||||
friend class Soft_Label_Key_Set;
|
||||
public:
|
||||
typedef enum { Left=0, Center=1, Right=2 } Justification;
|
||||
|
||||
private:
|
||||
char *label; // The Text of the Label
|
||||
Justification format; // The Justification
|
||||
int num; // The number of the Label
|
||||
|
||||
Soft_Label_Key() : label(NULL), format(Left), num(-1) {
|
||||
}
|
||||
|
||||
virtual ~Soft_Label_Key() {
|
||||
delete[] label;
|
||||
};
|
||||
|
||||
public:
|
||||
// Set the text of the Label
|
||||
Soft_Label_Key& operator=(char *text);
|
||||
|
||||
// Set the Justification of the Label
|
||||
Soft_Label_Key& operator=(Justification just) {
|
||||
format = just;
|
||||
return *this;
|
||||
}
|
||||
|
||||
// Retrieve the text of the label
|
||||
inline char* operator()(void) const {
|
||||
return label;
|
||||
}
|
||||
|
||||
Soft_Label_Key& operator=(const Soft_Label_Key& rhs)
|
||||
{
|
||||
if (this != &rhs) {
|
||||
*this = rhs;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
Soft_Label_Key(const Soft_Label_Key& rhs)
|
||||
: label(NULL),
|
||||
format(rhs.format),
|
||||
num(rhs.num)
|
||||
{
|
||||
*this = rhs.label;
|
||||
}
|
||||
};
|
||||
|
||||
public:
|
||||
typedef enum {
|
||||
None = -1,
|
||||
Three_Two_Three = 0,
|
||||
Four_Four = 1,
|
||||
PC_Style = 2,
|
||||
PC_Style_With_Index = 3
|
||||
} Label_Layout;
|
||||
|
||||
private:
|
||||
static long count; // Number of Key Sets
|
||||
static Label_Layout format; // Layout of the Key Sets
|
||||
static int num_labels; // Number Of Labels in Key Sets
|
||||
bool b_attrInit; // Are attributes initialized
|
||||
|
||||
Soft_Label_Key *slk_array; // The array of SLK's
|
||||
|
||||
// Init the Key Set
|
||||
void init();
|
||||
|
||||
// Activate or Deactivate Label# i, Label counting starts with 1!
|
||||
void activate_label(int i, bool bf=TRUE);
|
||||
|
||||
// Activate of Deactivate all Labels
|
||||
void activate_labels(bool bf);
|
||||
|
||||
protected:
|
||||
inline void Error (const char* msg) const THROWS(NCursesException) {
|
||||
THROW(new NCursesException (msg));
|
||||
}
|
||||
|
||||
// Remove SLK's from screen
|
||||
void clear() {
|
||||
if (ERR==::slk_clear())
|
||||
Error("slk_clear");
|
||||
}
|
||||
|
||||
// Restore them
|
||||
void restore() {
|
||||
if (ERR==::slk_restore())
|
||||
Error("slk_restore");
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
// Construct a Key Set, use the most comfortable layout as default.
|
||||
// You must create a Soft_Label_Key_Set before you create any object of
|
||||
// the NCursesWindow, NCursesPanel or derived classes. (Actually before
|
||||
// ::initscr() is called).
|
||||
explicit Soft_Label_Key_Set(Label_Layout fmt);
|
||||
|
||||
// This constructor assumes, that you already constructed a Key Set
|
||||
// with a layout by the constructor above. This layout will be reused.
|
||||
Soft_Label_Key_Set();
|
||||
|
||||
Soft_Label_Key_Set& operator=(const Soft_Label_Key_Set& rhs)
|
||||
{
|
||||
if (this != &rhs) {
|
||||
*this = rhs;
|
||||
init(); // allocate a new slk_array[]
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
Soft_Label_Key_Set(const Soft_Label_Key_Set& rhs)
|
||||
: b_attrInit(rhs.b_attrInit),
|
||||
slk_array(NULL)
|
||||
{
|
||||
init(); // allocate a new slk_array[]
|
||||
}
|
||||
|
||||
virtual ~Soft_Label_Key_Set() THROWS(NCursesException);
|
||||
|
||||
// Get Label# i. Label counting starts with 1!
|
||||
Soft_Label_Key& operator[](int i);
|
||||
|
||||
// Retrieve number of Labels
|
||||
int labels() const;
|
||||
|
||||
// Refresh the SLK portion of the screen
|
||||
inline void refresh() {
|
||||
if (ERR==::slk_refresh())
|
||||
Error("slk_refresh");
|
||||
}
|
||||
|
||||
// Mark the SLK portion of the screen for refresh, defer actual refresh
|
||||
// until next update call.
|
||||
inline void noutrefresh() {
|
||||
if (ERR==::slk_noutrefresh())
|
||||
Error("slk_noutrefresh");
|
||||
}
|
||||
|
||||
// Mark the whole SLK portion of the screen as modified
|
||||
inline void touch() {
|
||||
if (ERR==::slk_touch())
|
||||
Error("slk_touch");
|
||||
}
|
||||
|
||||
// Activate Label# i
|
||||
inline void show(int i) {
|
||||
activate_label(i,FALSE);
|
||||
activate_label(i,TRUE);
|
||||
}
|
||||
|
||||
// Hide Label# i
|
||||
inline void hide(int i) {
|
||||
activate_label(i,FALSE);
|
||||
}
|
||||
|
||||
// Show all Labels
|
||||
inline void show() {
|
||||
activate_labels(FALSE);
|
||||
activate_labels(TRUE);
|
||||
}
|
||||
|
||||
// Hide all Labels
|
||||
inline void hide() {
|
||||
activate_labels(FALSE);
|
||||
}
|
||||
|
||||
inline void attron(attr_t attrs) {
|
||||
if (ERR==::slk_attron(attrs))
|
||||
Error("slk_attron");
|
||||
}
|
||||
|
||||
inline void attroff(attr_t attrs) {
|
||||
if (ERR==::slk_attroff(attrs))
|
||||
Error("slk_attroff");
|
||||
}
|
||||
|
||||
inline void attrset(attr_t attrs) {
|
||||
if (ERR==::slk_attrset(attrs))
|
||||
Error("slk_attrset");
|
||||
}
|
||||
|
||||
inline void color(short color_pair_number) {
|
||||
if (ERR==::slk_color(color_pair_number))
|
||||
Error("slk_color");
|
||||
}
|
||||
|
||||
inline attr_t attr() const {
|
||||
return ::slk_attr();
|
||||
}
|
||||
};
|
||||
|
||||
#endif /* NCURSES_CURSSLK_H_incl */
|
||||
27
.CondaPkg/env/include/default.h
vendored
Normal file
27
.CondaPkg/env/include/default.h
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
* default.h --
|
||||
*
|
||||
* This file defines the defaults for all options for all of
|
||||
* the Tk widgets.
|
||||
*
|
||||
* Copyright (c) 1991-1994 The Regents of the University of California.
|
||||
* Copyright (c) 1994 Sun Microsystems, Inc.
|
||||
*
|
||||
* See the file "license.terms" for information on usage and redistribution
|
||||
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
*/
|
||||
|
||||
#ifndef _DEFAULT
|
||||
#define _DEFAULT
|
||||
|
||||
#ifdef _WIN32
|
||||
# include "tkWinDefault.h"
|
||||
#else
|
||||
# if defined(MAC_OSX_TK)
|
||||
# include "tkMacOSXDefault.h"
|
||||
# else
|
||||
# include "tkUnixDefault.h"
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#endif /* _DEFAULT */
|
||||
55
.CondaPkg/env/include/eti.h
vendored
Normal file
55
.CondaPkg/env/include/eti.h
vendored
Normal file
@@ -0,0 +1,55 @@
|
||||
/****************************************************************************
|
||||
* Copyright 2020 Thomas E. Dickey *
|
||||
* Copyright 1998-2002,2003 Free Software Foundation, Inc. *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a *
|
||||
* copy of this software and associated documentation files (the *
|
||||
* "Software"), to deal in the Software without restriction, including *
|
||||
* without limitation the rights to use, copy, modify, merge, publish, *
|
||||
* distribute, distribute with modifications, sublicense, and/or sell *
|
||||
* copies of the Software, and to permit persons to whom the Software is *
|
||||
* furnished to do so, subject to the following conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included *
|
||||
* in all copies or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
|
||||
* IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
|
||||
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
|
||||
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
|
||||
* THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
* *
|
||||
* Except as contained in this notice, the name(s) of the above copyright *
|
||||
* holders shall not be used in advertising or otherwise to promote the *
|
||||
* sale, use or other dealings in this Software without prior written *
|
||||
* authorization. *
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Author: Juergen Pfeifer, 1995,1997 *
|
||||
****************************************************************************/
|
||||
|
||||
/* $Id: eti.h,v 1.9 2020/02/02 23:34:34 tom Exp $ */
|
||||
|
||||
#ifndef NCURSES_ETI_H_incl
|
||||
#define NCURSES_ETI_H_incl 1
|
||||
|
||||
#define E_OK (0)
|
||||
#define E_SYSTEM_ERROR (-1)
|
||||
#define E_BAD_ARGUMENT (-2)
|
||||
#define E_POSTED (-3)
|
||||
#define E_CONNECTED (-4)
|
||||
#define E_BAD_STATE (-5)
|
||||
#define E_NO_ROOM (-6)
|
||||
#define E_NOT_POSTED (-7)
|
||||
#define E_UNKNOWN_COMMAND (-8)
|
||||
#define E_NO_MATCH (-9)
|
||||
#define E_NOT_SELECTABLE (-10)
|
||||
#define E_NOT_CONNECTED (-11)
|
||||
#define E_REQUEST_DENIED (-12)
|
||||
#define E_INVALID_FIELD (-13)
|
||||
#define E_CURRENT (-14)
|
||||
|
||||
#endif
|
||||
396
.CondaPkg/env/include/etip.h
vendored
Normal file
396
.CondaPkg/env/include/etip.h
vendored
Normal file
@@ -0,0 +1,396 @@
|
||||
// * This makes emacs happy -*-Mode: C++;-*-
|
||||
/****************************************************************************
|
||||
* Copyright 2018-2020,2021 Thomas E. Dickey *
|
||||
* Copyright 1998-2012,2017 Free Software Foundation, Inc. *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a *
|
||||
* copy of this software and associated documentation files (the *
|
||||
* "Software"), to deal in the Software without restriction, including *
|
||||
* without limitation the rights to use, copy, modify, merge, publish, *
|
||||
* distribute, distribute with modifications, sublicense, and/or sell *
|
||||
* copies of the Software, and to permit persons to whom the Software is *
|
||||
* furnished to do so, subject to the following conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included *
|
||||
* in all copies or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
|
||||
* IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
|
||||
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
|
||||
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
|
||||
* THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
* *
|
||||
* Except as contained in this notice, the name(s) of the above copyright *
|
||||
* holders shall not be used in advertising or otherwise to promote the *
|
||||
* sale, use or other dealings in this Software without prior written *
|
||||
* authorization. *
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Author: Juergen Pfeifer, 1997 *
|
||||
****************************************************************************/
|
||||
|
||||
// $Id: etip.h.in,v 1.48 2021/06/17 21:11:08 tom Exp $
|
||||
|
||||
#ifndef NCURSES_ETIP_H_incl
|
||||
#define NCURSES_ETIP_H_incl 1
|
||||
|
||||
// These are substituted at configure/build time
|
||||
#ifndef HAVE_BUILTIN_H
|
||||
#define HAVE_BUILTIN_H 0
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_GXX_BUILTIN_H
|
||||
#define HAVE_GXX_BUILTIN_H 0
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_GPP_BUILTIN_H
|
||||
#define HAVE_GPP_BUILTIN_H 0
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_IOSTREAM
|
||||
#define HAVE_IOSTREAM 1
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_TYPEINFO
|
||||
#define HAVE_TYPEINFO 1
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_VALUES_H
|
||||
#define HAVE_VALUES_H 0
|
||||
#endif
|
||||
|
||||
#ifndef ETIP_NEEDS_MATH_H
|
||||
#define ETIP_NEEDS_MATH_H 0
|
||||
#endif
|
||||
|
||||
#ifndef ETIP_NEEDS_MATH_EXCEPTION
|
||||
#define ETIP_NEEDS_MATH_EXCEPTION 0
|
||||
#endif
|
||||
|
||||
#ifndef CPP_HAS_PARAM_INIT
|
||||
#define CPP_HAS_PARAM_INIT 0
|
||||
#endif
|
||||
|
||||
#ifndef CPP_HAS_STATIC_CAST
|
||||
#define CPP_HAS_STATIC_CAST 1
|
||||
#endif
|
||||
|
||||
#ifndef IOSTREAM_NAMESPACE
|
||||
#define IOSTREAM_NAMESPACE 1
|
||||
#endif
|
||||
|
||||
#ifdef __GNUG__
|
||||
# if ((__GNUG__ <= 2) && (__GNUC_MINOR__ < 8))
|
||||
# if HAVE_TYPEINFO
|
||||
# include <typeinfo>
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined(__GNUG__)
|
||||
# if HAVE_BUILTIN_H || HAVE_GXX_BUILTIN_H || HAVE_GPP_BUILTIN_H
|
||||
# if ETIP_NEEDS_MATH_H
|
||||
# if ETIP_NEEDS_MATH_EXCEPTION
|
||||
# undef exception
|
||||
# define exception math_exception
|
||||
# endif
|
||||
# include <math.h>
|
||||
# endif
|
||||
# undef exception
|
||||
# define exception builtin_exception
|
||||
# if HAVE_GPP_BUILTIN_H
|
||||
# include <gpp/builtin.h>
|
||||
# elif HAVE_GXX_BUILTIN_H
|
||||
# include <g++/builtin.h>
|
||||
# else
|
||||
# include <builtin.h>
|
||||
# endif
|
||||
# undef exception
|
||||
# endif
|
||||
#elif defined (__SUNPRO_CC)
|
||||
# include <generic.h>
|
||||
#endif
|
||||
|
||||
#include <ncursesw/curses.h>
|
||||
|
||||
extern "C" {
|
||||
#if HAVE_VALUES_H
|
||||
# include <values.h>
|
||||
#endif
|
||||
|
||||
#include <assert.h>
|
||||
#include <ncursesw/eti.h>
|
||||
#include <errno.h>
|
||||
}
|
||||
|
||||
// Language features
|
||||
#if CPP_HAS_PARAM_INIT
|
||||
#define NCURSES_PARAM_INIT(value) = value
|
||||
#else
|
||||
#define NCURSES_PARAM_INIT(value) /*nothing*/
|
||||
#endif
|
||||
|
||||
#if CPP_HAS_STATIC_CAST
|
||||
#define STATIC_CAST(s) static_cast<s>
|
||||
#else
|
||||
#define STATIC_CAST(s) (s)
|
||||
#endif
|
||||
|
||||
#ifndef NCURSES_CXX_IMPEXP
|
||||
#define NCURSES_CXX_IMPEXP /* nothing */
|
||||
#endif
|
||||
|
||||
// Forward Declarations
|
||||
class NCURSES_CXX_IMPEXP NCursesPanel;
|
||||
class NCURSES_CXX_IMPEXP NCursesMenu;
|
||||
class NCURSES_CXX_IMPEXP NCursesForm;
|
||||
|
||||
class NCURSES_CXX_IMPEXP NCursesException
|
||||
{
|
||||
public:
|
||||
const char *message;
|
||||
int errorno;
|
||||
|
||||
NCursesException (const char* msg, int err)
|
||||
: message(msg), errorno (err)
|
||||
{};
|
||||
|
||||
explicit NCursesException (const char* msg)
|
||||
: message(msg), errorno (E_SYSTEM_ERROR)
|
||||
{};
|
||||
|
||||
NCursesException& operator=(const NCursesException& rhs)
|
||||
{
|
||||
message = rhs.message;
|
||||
errorno = rhs.errorno;
|
||||
return *this;
|
||||
}
|
||||
|
||||
NCursesException(const NCursesException& rhs)
|
||||
: message(rhs.message), errorno(rhs.errorno)
|
||||
{
|
||||
}
|
||||
|
||||
virtual const char *classname() const {
|
||||
return "NCursesWindow";
|
||||
}
|
||||
|
||||
virtual ~NCursesException()
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
class NCURSES_CXX_IMPEXP NCursesPanelException : public NCursesException
|
||||
{
|
||||
public:
|
||||
const NCursesPanel* p;
|
||||
|
||||
NCursesPanelException (const char *msg, int err) :
|
||||
NCursesException (msg, err),
|
||||
p (0)
|
||||
{};
|
||||
|
||||
NCursesPanelException (const NCursesPanel* panel,
|
||||
const char *msg,
|
||||
int err) :
|
||||
NCursesException (msg, err),
|
||||
p (panel)
|
||||
{};
|
||||
|
||||
explicit NCursesPanelException (int err) :
|
||||
NCursesException ("panel library error", err),
|
||||
p (0)
|
||||
{};
|
||||
|
||||
NCursesPanelException (const NCursesPanel* panel,
|
||||
int err) :
|
||||
NCursesException ("panel library error", err),
|
||||
p (panel)
|
||||
{};
|
||||
|
||||
NCursesPanelException& operator=(const NCursesPanelException& rhs)
|
||||
{
|
||||
if (this != &rhs) {
|
||||
NCursesException::operator=(rhs);
|
||||
p = rhs.p;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
NCursesPanelException(const NCursesPanelException& rhs)
|
||||
: NCursesException(rhs), p(rhs.p)
|
||||
{
|
||||
}
|
||||
|
||||
virtual const char *classname() const {
|
||||
return "NCursesPanel";
|
||||
}
|
||||
|
||||
virtual ~NCursesPanelException()
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
class NCURSES_CXX_IMPEXP NCursesMenuException : public NCursesException
|
||||
{
|
||||
public:
|
||||
const NCursesMenu* m;
|
||||
|
||||
NCursesMenuException (const char *msg, int err) :
|
||||
NCursesException (msg, err),
|
||||
m (0)
|
||||
{};
|
||||
|
||||
NCursesMenuException (const NCursesMenu* menu,
|
||||
const char *msg,
|
||||
int err) :
|
||||
NCursesException (msg, err),
|
||||
m (menu)
|
||||
{};
|
||||
|
||||
explicit NCursesMenuException (int err) :
|
||||
NCursesException ("menu library error", err),
|
||||
m (0)
|
||||
{};
|
||||
|
||||
NCursesMenuException (const NCursesMenu* menu,
|
||||
int err) :
|
||||
NCursesException ("menu library error", err),
|
||||
m (menu)
|
||||
{};
|
||||
|
||||
NCursesMenuException& operator=(const NCursesMenuException& rhs)
|
||||
{
|
||||
if (this != &rhs) {
|
||||
NCursesException::operator=(rhs);
|
||||
m = rhs.m;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
NCursesMenuException(const NCursesMenuException& rhs)
|
||||
: NCursesException(rhs), m(rhs.m)
|
||||
{
|
||||
}
|
||||
|
||||
virtual const char *classname() const {
|
||||
return "NCursesMenu";
|
||||
}
|
||||
|
||||
virtual ~NCursesMenuException()
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
class NCURSES_CXX_IMPEXP NCursesFormException : public NCursesException
|
||||
{
|
||||
public:
|
||||
const NCursesForm* f;
|
||||
|
||||
NCursesFormException (const char *msg, int err) :
|
||||
NCursesException (msg, err),
|
||||
f (0)
|
||||
{};
|
||||
|
||||
NCursesFormException (const NCursesForm* form,
|
||||
const char *msg,
|
||||
int err) :
|
||||
NCursesException (msg, err),
|
||||
f (form)
|
||||
{};
|
||||
|
||||
explicit NCursesFormException (int err) :
|
||||
NCursesException ("form library error", err),
|
||||
f (0)
|
||||
{};
|
||||
|
||||
NCursesFormException (const NCursesForm* form,
|
||||
int err) :
|
||||
NCursesException ("form library error", err),
|
||||
f (form)
|
||||
{};
|
||||
|
||||
NCursesFormException& operator=(const NCursesFormException& rhs)
|
||||
{
|
||||
if (this != &rhs) {
|
||||
NCursesException::operator=(rhs);
|
||||
f = rhs.f;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
NCursesFormException(const NCursesFormException& rhs)
|
||||
: NCursesException(rhs), f(rhs.f)
|
||||
{
|
||||
}
|
||||
|
||||
virtual const char *classname() const {
|
||||
return "NCursesForm";
|
||||
}
|
||||
|
||||
virtual ~NCursesFormException()
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
#if !((defined(__GNUG__) && defined(__EXCEPTIONS) && (__GNUG__ < 7)) || defined(__SUNPRO_CC))
|
||||
# if HAVE_IOSTREAM
|
||||
# include <iostream>
|
||||
# if IOSTREAM_NAMESPACE
|
||||
using std::cerr;
|
||||
using std::endl;
|
||||
# endif
|
||||
# else
|
||||
# include <iostream.h>
|
||||
# endif
|
||||
#endif
|
||||
|
||||
inline void THROW(const NCursesException *e) {
|
||||
#if defined(__GNUG__) && defined(__EXCEPTIONS)
|
||||
# if ((__GNUG__ <= 2) && (__GNUC_MINOR__ < 8))
|
||||
(*lib_error_handler)(e ? e->classname() : "", e ? e->message : "");
|
||||
# elif (__GNUG__ >= 7)
|
||||
// g++ 7.0 warns about deprecation, but lacks the predefined symbols
|
||||
::endwin();
|
||||
std::cerr << "Found a problem - goodbye" << std::endl;
|
||||
exit(EXIT_FAILURE);
|
||||
# else
|
||||
# define CPP_HAS_TRY_CATCH 1
|
||||
# endif
|
||||
#elif defined(__SUNPRO_CC)
|
||||
# if !defined(__SUNPRO_CC_COMPAT) || (__SUNPRO_CC_COMPAT < 5)
|
||||
genericerror(1, ((e != 0) ? (char *)(e->message) : ""));
|
||||
# else
|
||||
# define CPP_HAS_TRY_CATCH 1
|
||||
# endif
|
||||
#else
|
||||
if (e)
|
||||
cerr << e->message << endl;
|
||||
exit(0);
|
||||
#endif
|
||||
|
||||
#ifndef CPP_HAS_TRY_CATCH
|
||||
#define CPP_HAS_TRY_CATCH 0
|
||||
#define NCURSES_CPP_TRY /* nothing */
|
||||
#define NCURSES_CPP_CATCH(e) if (false)
|
||||
#define THROWS(s) /* nothing */
|
||||
#define THROW2(s,t) /* nothing */
|
||||
#elif CPP_HAS_TRY_CATCH
|
||||
throw *e;
|
||||
#define NCURSES_CPP_TRY try
|
||||
#define NCURSES_CPP_CATCH(e) catch(e)
|
||||
#if defined(__cpp_noexcept_function_type) && (__cpp_noexcept_function_type >= 201510)
|
||||
// C++17 deprecates the usage of throw().
|
||||
#define THROWS(s) /* nothing */
|
||||
#define THROW2(s,t) /* nothing */
|
||||
#else
|
||||
#define THROWS(s) throw(s)
|
||||
#define THROW2(s,t) throw(s,t)
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* NCURSES_ETIP_H_incl */
|
||||
335
.CondaPkg/env/include/fakemysql.h
vendored
Normal file
335
.CondaPkg/env/include/fakemysql.h
vendored
Normal file
@@ -0,0 +1,335 @@
|
||||
/*
|
||||
* fakemysql.h --
|
||||
*
|
||||
* Fake definitions of the MySQL API sufficient to build tdbc::mysql
|
||||
* without having an MySQL installation on the build system. This file
|
||||
* comprises only data type, constant and function definitions.
|
||||
*
|
||||
* The programmers of this file believe that it contains material not
|
||||
* subject to copyright under the doctrines of scenes a faire and
|
||||
* of merger of idea and expression. Accordingly, this file is in the
|
||||
* public domain.
|
||||
*
|
||||
*-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#ifndef FAKEMYSQL_H_INCLUDED
|
||||
#define FAKEMYSQL_H_INCLUDED
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#ifndef MODULE_SCOPE
|
||||
#define MODULE_SCOPE extern
|
||||
#endif
|
||||
|
||||
MODULE_SCOPE Tcl_LoadHandle MysqlInitStubs(Tcl_Interp*);
|
||||
|
||||
#ifdef _WIN32
|
||||
#define STDCALL __stdcall
|
||||
#else
|
||||
#define STDCALL /* nothing */
|
||||
#endif
|
||||
|
||||
enum enum_field_types {
|
||||
MYSQL_TYPE_DECIMAL=0,
|
||||
MYSQL_TYPE_TINY=1,
|
||||
MYSQL_TYPE_SHORT=2,
|
||||
MYSQL_TYPE_LONG=3,
|
||||
MYSQL_TYPE_FLOAT=4,
|
||||
MYSQL_TYPE_DOUBLE=5,
|
||||
MYSQL_TYPE_NULL=6,
|
||||
MYSQL_TYPE_TIMESTAMP=7,
|
||||
MYSQL_TYPE_LONGLONG=8,
|
||||
MYSQL_TYPE_INT24=9,
|
||||
MYSQL_TYPE_DATE=10,
|
||||
MYSQL_TYPE_TIME=11,
|
||||
MYSQL_TYPE_DATETIME=12,
|
||||
MYSQL_TYPE_YEAR=13,
|
||||
MYSQL_TYPE_NEWDATE=14,
|
||||
MYSQL_TYPE_VARCHAR=15,
|
||||
MYSQL_TYPE_BIT=16,
|
||||
MYSQL_TYPE_NEWDECIMAL=246,
|
||||
MYSQL_TYPE_ENUM=247,
|
||||
MYSQL_TYPE_SET=248,
|
||||
MYSQL_TYPE_TINY_BLOB=249,
|
||||
MYSQL_TYPE_MEDIUM_BLOB=250,
|
||||
MYSQL_TYPE_LONG_BLOB=251,
|
||||
MYSQL_TYPE_BLOB=252,
|
||||
MYSQL_TYPE_VAR_STRING=253,
|
||||
MYSQL_TYPE_STRING=254,
|
||||
MYSQL_TYPE_GEOMETRY=255
|
||||
};
|
||||
|
||||
enum mysql_option {
|
||||
MYSQL_SET_CHARSET_NAME=7,
|
||||
};
|
||||
|
||||
enum mysql_status {
|
||||
MYSQL_STATUS_READY=0,
|
||||
};
|
||||
|
||||
#define CLIENT_COMPRESS 32
|
||||
#define CLIENT_INTERACTIVE 1024
|
||||
#define MYSQL_DATA_TRUNCATED 101
|
||||
#define MYSQL_ERRMSG_SIZE 512
|
||||
#define MYSQL_NO_DATA 100
|
||||
#define SCRAMBLE_LENGTH 20
|
||||
#define SQLSTATE_LENGTH 5
|
||||
|
||||
typedef struct st_list LIST;
|
||||
typedef struct st_mem_root MEM_ROOT;
|
||||
typedef struct st_mysql MYSQL;
|
||||
typedef struct st_mysql_bind MYSQL_BIND;
|
||||
typedef struct st_mysql_field MYSQL_FIELD;
|
||||
typedef struct st_mysql_res MYSQL_RES;
|
||||
typedef char** MYSQL_ROW;
|
||||
typedef struct st_mysql_stmt MYSQL_STMT;
|
||||
typedef char my_bool;
|
||||
#ifndef Socket_defined
|
||||
typedef int my_socket;
|
||||
#define INVALID_SOCKET -1
|
||||
#endif
|
||||
typedef Tcl_WideUInt my_ulonglong;
|
||||
typedef struct st_net NET;
|
||||
typedef struct st_used_mem USED_MEM;
|
||||
typedef struct st_vio Vio;
|
||||
|
||||
struct st_mem_root {
|
||||
USED_MEM *free;
|
||||
USED_MEM *used;
|
||||
USED_MEM *pre_alloc;
|
||||
size_t min_malloc;
|
||||
size_t block_size;
|
||||
unsigned int block_num;
|
||||
unsigned int first_block_usage;
|
||||
void (*error_handler)(void);
|
||||
};
|
||||
|
||||
struct st_mysql_options {
|
||||
unsigned int connect_timeout;
|
||||
unsigned int read_timeout;
|
||||
unsigned int write_timeout;
|
||||
unsigned int port;
|
||||
unsigned int protocol;
|
||||
unsigned long client_flag;
|
||||
char *host;
|
||||
char *user;
|
||||
char *password;
|
||||
char *unix_socket;
|
||||
char *db;
|
||||
struct st_dynamic_array *init_commands;
|
||||
char *my_cnf_file;
|
||||
char *my_cnf_group;
|
||||
char *charset_dir;
|
||||
char *charset_name;
|
||||
char *ssl_key;
|
||||
char *ssl_cert;
|
||||
char *ssl_ca;
|
||||
char *ssl_capath;
|
||||
char *ssl_cipher;
|
||||
char *shared_memory_base_name;
|
||||
unsigned long max_allowed_packet;
|
||||
my_bool use_ssl;
|
||||
my_bool compress,named_pipe;
|
||||
my_bool rpl_probe;
|
||||
my_bool rpl_parse;
|
||||
my_bool no_master_reads;
|
||||
#if !defined(CHECK_EMBEDDED_DIFFERENCES) || defined(EMBEDDED_LIBRARY)
|
||||
my_bool separate_thread;
|
||||
#endif
|
||||
enum mysql_option methods_to_use;
|
||||
char *client_ip;
|
||||
my_bool secure_auth;
|
||||
my_bool report_data_truncation;
|
||||
int (*local_infile_init)(void **, const char *, void *);
|
||||
int (*local_infile_read)(void *, char *, unsigned int);
|
||||
void (*local_infile_end)(void *);
|
||||
int (*local_infile_error)(void *, char *, unsigned int);
|
||||
void *local_infile_userdata;
|
||||
void *extension;
|
||||
};
|
||||
|
||||
struct st_net {
|
||||
#if !defined(CHECK_EMBEDDED_DIFFERENCES) || !defined(EMBEDDED_LIBRARY)
|
||||
Vio *vio;
|
||||
unsigned char *buff;
|
||||
unsigned char *buff_end;
|
||||
unsigned char *write_pos;
|
||||
unsigned char *read_pos;
|
||||
my_socket fd;
|
||||
unsigned long remain_in_buf;
|
||||
unsigned long length;
|
||||
unsigned long buf_length;
|
||||
unsigned long where_b;
|
||||
unsigned long max_packet;
|
||||
unsigned long max_packet_size;
|
||||
unsigned int pkt_nr;
|
||||
unsigned int compress_pkt_nr;
|
||||
unsigned int write_timeout;
|
||||
unsigned int read_timeout;
|
||||
unsigned int retry_count;
|
||||
int fcntl;
|
||||
unsigned int *return_status;
|
||||
unsigned char reading_or_writing;
|
||||
char save_char;
|
||||
my_bool unused0;
|
||||
my_bool unused;
|
||||
my_bool compress;
|
||||
my_bool unused1;
|
||||
#endif
|
||||
unsigned char *query_cache_query;
|
||||
unsigned int last_errno;
|
||||
unsigned char error;
|
||||
my_bool unused2;
|
||||
my_bool return_errno;
|
||||
char last_error[MYSQL_ERRMSG_SIZE];
|
||||
char sqlstate[SQLSTATE_LENGTH+1];
|
||||
void *extension;
|
||||
#if defined(MYSQL_SERVER) && !defined(EMBEDDED_LIBRARY)
|
||||
my_bool skip_big_packet;
|
||||
#endif
|
||||
};
|
||||
|
||||
/*
|
||||
* st_mysql differs between 5.0 and 5.1, but the 5.0 version is a
|
||||
* strict subset, we don't use any of the 5.1 fields, and we don't
|
||||
* ever allocate the structure ourselves.
|
||||
*/
|
||||
|
||||
struct st_mysql {
|
||||
NET net;
|
||||
unsigned char *connector_fd;
|
||||
char *host;
|
||||
char *user;
|
||||
char *passwd;
|
||||
char *unix_socket;
|
||||
char *server_version;
|
||||
char *host_info;
|
||||
char *info;
|
||||
char *db;
|
||||
struct charset_info_st *charset;
|
||||
MYSQL_FIELD *fields;
|
||||
MEM_ROOT field_alloc;
|
||||
my_ulonglong affected_rows;
|
||||
my_ulonglong insert_id;
|
||||
my_ulonglong extra_info;
|
||||
unsigned long thread_id;
|
||||
unsigned long packet_length;
|
||||
unsigned int port;
|
||||
unsigned long client_flag;
|
||||
unsigned long server_capabilities;
|
||||
unsigned int protocol_version;
|
||||
unsigned int field_count;
|
||||
unsigned int server_status;
|
||||
unsigned int server_language;
|
||||
unsigned int warning_count;
|
||||
struct st_mysql_options options;
|
||||
enum mysql_status status;
|
||||
my_bool free_me;
|
||||
my_bool reconnect;
|
||||
char scramble[SCRAMBLE_LENGTH+1];
|
||||
my_bool rpl_pivot;
|
||||
struct st_mysql *master;
|
||||
struct st_mysql *next_slave;
|
||||
struct st_mysql* last_used_slave;
|
||||
struct st_mysql* last_used_con;
|
||||
LIST *stmts;
|
||||
const struct st_mysql_methods *methods;
|
||||
void *thd;
|
||||
my_bool *unbuffered_fetch_owner;
|
||||
char *info_buffer;
|
||||
};
|
||||
|
||||
/*
|
||||
* There are different version of the MYSQL_BIND structure before and after
|
||||
* MySQL 5.1. We go after the fields of the structure using accessor functions
|
||||
* so that the code in this file is compatible with both versions.
|
||||
*/
|
||||
|
||||
struct st_mysql_bind_51 { /* Post-5.1 */
|
||||
unsigned long* length;
|
||||
my_bool* is_null;
|
||||
void* buffer;
|
||||
my_bool* error;
|
||||
unsigned char* row_ptr;
|
||||
void (*store_param_func)(NET* net, MYSQL_BIND* param);
|
||||
void (*fetch_result)(MYSQL_BIND*, MYSQL_FIELD*, unsigned char**);
|
||||
void (*skip_result)(MYSQL_BIND*, MYSQL_FIELD*, unsigned char**);
|
||||
unsigned long buffer_length;
|
||||
unsigned long offset;
|
||||
unsigned long length_value;
|
||||
unsigned int param_number;
|
||||
unsigned int pack_length;
|
||||
enum enum_field_types buffer_type;
|
||||
my_bool error_value;
|
||||
my_bool is_unsigned;
|
||||
my_bool long_data_used;
|
||||
my_bool is_null_value;
|
||||
void* extension;
|
||||
};
|
||||
|
||||
struct st_mysql_bind_50 { /* Pre-5.1 */
|
||||
unsigned long* length;
|
||||
my_bool* is_null;
|
||||
void* buffer;
|
||||
my_bool* error;
|
||||
enum enum_field_types buffer_type;
|
||||
unsigned long buffer_length;
|
||||
unsigned char* row_ptr;
|
||||
unsigned long offset;
|
||||
unsigned long length_value;
|
||||
unsigned int param_number;
|
||||
unsigned int pack_length;
|
||||
my_bool error_value;
|
||||
my_bool is_unsigned;
|
||||
my_bool long_data_used;
|
||||
my_bool is_null_value;
|
||||
void (*store_param_func)(NET* net, MYSQL_BIND* param);
|
||||
void (*fetch_result)(MYSQL_BIND*, MYSQL_FIELD*, unsigned char**);
|
||||
void (*skip_result)(MYSQL_BIND*, MYSQL_FIELD*, unsigned char**);
|
||||
};
|
||||
|
||||
/*
|
||||
* There are also different versions of the MYSQL_FIELD structure; fortunately,
|
||||
* the 5.1 version is a strict extension of the 5.0 version.
|
||||
*/
|
||||
|
||||
struct st_mysql_field {
|
||||
char* name;
|
||||
char *org_name;
|
||||
char* table;
|
||||
char* org_table;
|
||||
char* db;
|
||||
char* catalog;
|
||||
char* def;
|
||||
unsigned long length;
|
||||
unsigned long max_length;
|
||||
unsigned int name_length;
|
||||
unsigned int org_name_length;
|
||||
unsigned int table_length;
|
||||
unsigned int org_table_length;
|
||||
unsigned int db_length;
|
||||
unsigned int catalog_length;
|
||||
unsigned int def_length;
|
||||
unsigned int flags;
|
||||
unsigned int decimals;
|
||||
unsigned int charsetnr;
|
||||
enum enum_field_types type;
|
||||
};
|
||||
struct st_mysql_field_50 {
|
||||
struct st_mysql_field field;
|
||||
};
|
||||
struct st_mysql_field_51 {
|
||||
struct st_mysql_field field;
|
||||
void* extension;
|
||||
};
|
||||
#define NOT_NULL_FLAG 1
|
||||
|
||||
#define IS_NUM(t) ((t) <= MYSQL_TYPE_INT24 || (t) == MYSQL_TYPE_YEAR || (t) == MYSQL_TYPE_NEWDECIMAL)
|
||||
|
||||
#define mysql_library_init mysql_server_init
|
||||
#define mysql_library_end mysql_server_end
|
||||
|
||||
#include "mysqlStubs.h"
|
||||
|
||||
#endif /* not FAKEMYSQL_H_INCLUDED */
|
||||
46
.CondaPkg/env/include/fakepq.h
vendored
Normal file
46
.CondaPkg/env/include/fakepq.h
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
* fakepq.h --
|
||||
*
|
||||
* Minimal replacement for 'pq-fe.h' in the PostgreSQL client
|
||||
* without having a PostgreSQL installation on the build system.
|
||||
* This file comprises only data type, constant and function definitions.
|
||||
*
|
||||
* The programmers of this file believe that it contains material not
|
||||
* subject to copyright under the doctrines of scenes a faire and
|
||||
* of merger of idea and expression. Accordingly, this file is in the
|
||||
* public domain.
|
||||
*
|
||||
*-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#ifndef FAKEPQ_H_INCLUDED
|
||||
#define FAKEPQ_H_INCLUDED
|
||||
|
||||
#ifndef MODULE_SCOPE
|
||||
#define MODULE_SCOPE extern
|
||||
#endif
|
||||
|
||||
MODULE_SCOPE Tcl_LoadHandle PostgresqlInitStubs(Tcl_Interp*);
|
||||
|
||||
typedef enum {
|
||||
CONNECTION_OK=0,
|
||||
} ConnStatusType;
|
||||
typedef enum {
|
||||
PGRES_EMPTY_QUERY=0,
|
||||
PGRES_BAD_RESPONSE=5,
|
||||
PGRES_NONFATAL_ERROR=6,
|
||||
PGRES_FATAL_ERROR=7,
|
||||
} ExecStatusType;
|
||||
typedef unsigned int Oid;
|
||||
typedef struct pg_conn PGconn;
|
||||
typedef struct pg_result PGresult;
|
||||
typedef void (*PQnoticeProcessor)(void*, const PGresult*);
|
||||
|
||||
#define PG_DIAG_SQLSTATE 'C'
|
||||
#define PG_DIAG_MESSAGE_PRIMARY 'M'
|
||||
|
||||
#include "pqStubs.h"
|
||||
|
||||
MODULE_SCOPE const pqStubDefs* pqStubs;
|
||||
|
||||
#endif
|
||||
282
.CondaPkg/env/include/fakesql.h
vendored
Normal file
282
.CondaPkg/env/include/fakesql.h
vendored
Normal file
@@ -0,0 +1,282 @@
|
||||
/*
|
||||
* fakesql.h --
|
||||
*
|
||||
* Include file that defines the subset of SQL/CLI that TDBC
|
||||
* uses, so that tdbc::odbc can build without an explicit ODBC
|
||||
* dependency. It comprises only data type, constant and
|
||||
* function declarations.
|
||||
*
|
||||
* The programmers of this file believe that it contains material not
|
||||
* subject to copyright under the doctrines of scenes a faire and
|
||||
* of merger of idea and expression. Accordingly, this file is in the
|
||||
* public domain.
|
||||
*
|
||||
*-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#ifndef FAKESQL_H_INCLUDED
|
||||
#define FAKESQL_H_INCLUDED
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#ifndef MODULE_SCOPE
|
||||
#define MODULE_SCOPE extern
|
||||
#endif
|
||||
|
||||
/* Limits */
|
||||
|
||||
#define SQL_MAX_DSN_LENGTH 32
|
||||
#define SQL_MAX_MESSAGE_LENGTH 512
|
||||
|
||||
/* Fundamental data types */
|
||||
|
||||
#ifndef _WIN32
|
||||
typedef int BOOL;
|
||||
typedef unsigned int DWORD;
|
||||
typedef void* HANDLE;
|
||||
typedef HANDLE HWND;
|
||||
typedef unsigned short WCHAR;
|
||||
typedef char* LPSTR;
|
||||
typedef WCHAR* LPWSTR;
|
||||
typedef const char* LPCSTR;
|
||||
typedef const WCHAR* LPCWSTR;
|
||||
typedef unsigned short WORD;
|
||||
#endif
|
||||
typedef void* PVOID;
|
||||
typedef short RETCODE;
|
||||
typedef long SDWORD;
|
||||
typedef short SWORD;
|
||||
typedef unsigned short USHORT;
|
||||
typedef USHORT UWORD;
|
||||
|
||||
/* ODBC data types */
|
||||
|
||||
typedef Tcl_WideInt SQLBIGINT;
|
||||
typedef unsigned char SQLCHAR;
|
||||
typedef double SQLDOUBLE;
|
||||
typedef void* SQLHANDLE;
|
||||
typedef SDWORD SQLINTEGER;
|
||||
typedef PVOID SQLPOINTER;
|
||||
typedef SWORD SQLSMALLINT;
|
||||
typedef Tcl_WideUInt SQLUBIGINT;
|
||||
typedef unsigned char SQLUCHAR;
|
||||
typedef unsigned int SQLUINTEGER;
|
||||
typedef UWORD SQLUSMALLINT;
|
||||
typedef WCHAR SQLWCHAR;
|
||||
|
||||
typedef SQLSMALLINT SQLRETURN;
|
||||
|
||||
/* TODO - Check how the SQLLEN and SQLULEN types are handled on
|
||||
* 64-bit Unix. */
|
||||
|
||||
#if defined(_WIN64)
|
||||
typedef Tcl_WideInt SQLLEN;
|
||||
typedef Tcl_WideUInt SQLULEN;
|
||||
#else
|
||||
typedef SQLINTEGER SQLLEN;
|
||||
typedef SQLUINTEGER SQLULEN;
|
||||
#endif
|
||||
|
||||
/* Handle types */
|
||||
|
||||
typedef SQLHANDLE SQLHENV;
|
||||
typedef SQLHANDLE SQLHDBC;
|
||||
typedef SQLHANDLE SQLHSTMT;
|
||||
typedef HWND SQLHWND;
|
||||
|
||||
#define SQL_HANDLE_DBC 2
|
||||
#define SQL_HANDLE_ENV 1
|
||||
#define SQL_HANDLE_STMT 3
|
||||
|
||||
/* Null handles */
|
||||
|
||||
#define SQL_NULL_HANDLE ((SQLHANDLE) 0)
|
||||
#define SQL_NULL_HENV ((SQLHENV) 0)
|
||||
#define SQL_NULL_HDBC ((SQLHDBC) 0)
|
||||
#define SQL_NULL_HSTMT ((SQLHSTMT) 0)
|
||||
|
||||
/* SQL data types */
|
||||
|
||||
enum _SQL_DATATYPE {
|
||||
SQL_BIGINT = -5,
|
||||
SQL_BINARY = -2,
|
||||
SQL_BIT = -7,
|
||||
SQL_CHAR = 1,
|
||||
SQL_DATE = 9,
|
||||
SQL_DECIMAL = 3,
|
||||
SQL_DOUBLE = 8,
|
||||
SQL_FLOAT = 6,
|
||||
SQL_INTEGER = 4,
|
||||
SQL_LONGVARBINARY = -4,
|
||||
SQL_LONGVARCHAR = -1,
|
||||
SQL_NUMERIC = 2,
|
||||
SQL_REAL = 7,
|
||||
SQL_SMALLINT = 5,
|
||||
SQL_TIME = 10,
|
||||
SQL_TIMESTAMP = 11,
|
||||
SQL_TINYINT = -6,
|
||||
SQL_VARBINARY = -3,
|
||||
SQL_VARCHAR = 12,
|
||||
SQL_WCHAR = -8,
|
||||
SQL_WVARCHAR = -9,
|
||||
SQL_WLONGVARCHAR = -10,
|
||||
};
|
||||
|
||||
/* C data types */
|
||||
|
||||
#define SQL_SIGNED_OFFSET (-20)
|
||||
|
||||
#define SQL_C_BINARY SQL_BINARY
|
||||
#define SQL_C_CHAR SQL_CHAR
|
||||
#define SQL_C_DOUBLE SQL_DOUBLE
|
||||
#define SQL_C_LONG SQL_INTEGER
|
||||
#define SQL_C_SBIGINT SQL_BIGINT + SQL_SIGNED_OFFSET
|
||||
#define SQL_C_SLONG SQL_INTEGER + SQL_SIGNED_OFFSET
|
||||
#define SQL_C_WCHAR SQL_WCHAR
|
||||
|
||||
/* Parameter transmission diretions */
|
||||
|
||||
#define SQL_PARAM_INPUT 1
|
||||
|
||||
/* Status returns */
|
||||
|
||||
#define SQL_ERROR (-1)
|
||||
#define SQL_NO_DATA 100
|
||||
#define SQL_NO_TOTAL (-4)
|
||||
#define SQL_SUCCESS 0
|
||||
#define SQL_SUCCESS_WITH_INFO 1
|
||||
#define SQL_SUCCEEDED(rc) (((rc)&(~1))==0)
|
||||
|
||||
/* Diagnostic fields */
|
||||
|
||||
enum _SQL_DIAG {
|
||||
SQL_DIAG_SQLSTATE = 4,
|
||||
};
|
||||
|
||||
/* Transaction isolation levels */
|
||||
|
||||
#define SQL_TXN_READ_COMMITTED 2
|
||||
#define SQL_TXN_READ_UNCOMMITTED 1
|
||||
#define SQL_TXN_REPEATABLE_READ 4
|
||||
#define SQL_TXN_SERIALIZABLE 8
|
||||
|
||||
/* Access modes */
|
||||
|
||||
#define SQL_MODE_READ_ONLY 1UL
|
||||
#define SQL_MODE_READ_WRITE 0UL
|
||||
|
||||
/* ODBC properties */
|
||||
|
||||
#define SQL_ACCESS_MODE 101
|
||||
#define SQL_AUTOCOMMIT 102
|
||||
#define SQL_TXN_ISOLATION 108
|
||||
|
||||
/* ODBC attributes */
|
||||
|
||||
#define SQL_ATTR_ACCESS_MODE SQL_ACCESS_MODE
|
||||
#define SQL_ATTR_CONNECTION_TIMEOUT 113
|
||||
#define SQL_ATTR_ODBC_VERSION 200
|
||||
#define SQL_ATTR_TXN_ISOLATION SQL_TXN_ISOLATION
|
||||
#define SQL_ATTR_AUTOCOMMIT SQL_AUTOCOMMIT
|
||||
|
||||
/* Nullable? */
|
||||
|
||||
#define SQL_NULLABLE_UNKNOWN 2
|
||||
|
||||
/* Placeholder for length of missing data */
|
||||
|
||||
#define SQL_NULL_DATA (-1)
|
||||
|
||||
/* ODBC versions */
|
||||
|
||||
#define SQL_OV_ODBC3 3UL
|
||||
#define SQL_ODBC_VER 10
|
||||
|
||||
/* SQLDriverConnect flags */
|
||||
|
||||
#define SQL_DRIVER_COMPLETE_REQUIRED 3
|
||||
#define SQL_DRIVER_NOPROMPT 0
|
||||
|
||||
/* SQLGetTypeInfo flags */
|
||||
|
||||
#define SQL_ALL_TYPES 0
|
||||
|
||||
/* Transaction actions */
|
||||
|
||||
#define SQL_COMMIT 0
|
||||
#define SQL_ROLLBACK 1
|
||||
|
||||
/* Data source fetch flags */
|
||||
|
||||
#define SQL_FETCH_FIRST 2
|
||||
#define SQL_FETCH_FIRST_SYSTEM 32
|
||||
#define SQL_FETCH_FIRST_USER 31
|
||||
#define SQL_FETCH_NEXT 1
|
||||
|
||||
/* ODBCINST actions */
|
||||
|
||||
#define ODBC_ADD_DSN 1
|
||||
#define ODBC_CONFIG_DSN 2
|
||||
#define ODBC_REMOVE_DSN 3
|
||||
#define ODBC_ADD_SYS_DSN 4
|
||||
#define ODBC_CONFIG_SYS_DSN 5
|
||||
#define ODBC_REMOVE_SYS_DSN 6
|
||||
|
||||
/* ODBCINST errors */
|
||||
|
||||
#define ODBC_ERROR_GENERAL_ERR 1
|
||||
#define ODBC_ERROR_INVALID_BUFF_LEN 2
|
||||
#define ODBC_ERROR_INVALID_HWND 3
|
||||
#define ODBC_ERROR_INVALID_STR 4
|
||||
#define ODBC_ERROR_INVALID_REQUEST_TYPE 5
|
||||
#define ODBC_ERROR_COMPONENT_NOT_FOUND 6
|
||||
#define ODBC_ERROR_INVALID_NAME 7
|
||||
#define ODBC_ERROR_INVALID_KEYWORD_VALUE 8
|
||||
#define ODBC_ERROR_INVALID_DSN 9
|
||||
#define ODBC_ERROR_INVALID_INF 10
|
||||
#define ODBC_ERROR_REQUEST_FAILED 11
|
||||
#define ODBC_ERROR_INVALID_PATH 12
|
||||
#define ODBC_ERROR_LOAD_LIB_FAILED 13
|
||||
#define ODBC_ERROR_INVALID_PARAM_SEQUENCE 14
|
||||
#define ODBC_ERROR_INVALID_LOG_FILE 15
|
||||
#define ODBC_ERROR_USER_CANCELED 16
|
||||
#define ODBC_ERROR_USAGE_UPDATE_FAILED 17
|
||||
#define ODBC_ERROR_CREATE_DSN_FAILED 18
|
||||
#define ODBC_ERROR_WRITING_SYSINFO_FAILED 19
|
||||
#define ODBC_ERROR_REMOVE_DSN_FAILED 20
|
||||
#define ODBC_ERROR_OUT_OF_MEM 21
|
||||
#define ODBC_ERROR_OUTPUT_STRING_TRUNCATED 22
|
||||
|
||||
/* ODBC client library entry points */
|
||||
|
||||
#ifdef _WIN32
|
||||
#define SQL_API __stdcall
|
||||
#define INSTAPI __stdcall
|
||||
#else
|
||||
#define SQL_API /* nothing */
|
||||
#define INSTAPI /* nothing */
|
||||
#endif
|
||||
|
||||
#include "odbcStubs.h"
|
||||
MODULE_SCOPE const odbcStubDefs* odbcStubs;
|
||||
|
||||
/*
|
||||
* Additional entry points in ODBCINST - all of these are optional
|
||||
* and resolved with Tcl_FindSymbol, not directly in Tcl_LoadLibrary.
|
||||
*/
|
||||
|
||||
MODULE_SCOPE BOOL (INSTAPI* SQLConfigDataSourceW)(HWND, WORD, LPCWSTR,
|
||||
LPCWSTR);
|
||||
MODULE_SCOPE BOOL (INSTAPI* SQLConfigDataSource)(HWND, WORD, LPCSTR, LPCSTR);
|
||||
MODULE_SCOPE BOOL (INSTAPI* SQLInstallerErrorW)(WORD, DWORD*, LPWSTR, WORD,
|
||||
WORD*);
|
||||
MODULE_SCOPE BOOL (INSTAPI* SQLInstallerError)(WORD, DWORD*, LPSTR, WORD,
|
||||
WORD*);
|
||||
|
||||
/*
|
||||
* Function that initialises the stubs
|
||||
*/
|
||||
|
||||
MODULE_SCOPE Tcl_LoadHandle OdbcInitStubs(Tcl_Interp*, Tcl_LoadHandle*);
|
||||
|
||||
#endif
|
||||
536
.CondaPkg/env/include/ffi.h
vendored
Normal file
536
.CondaPkg/env/include/ffi.h
vendored
Normal file
@@ -0,0 +1,536 @@
|
||||
/* -----------------------------------------------------------------*-C-*-
|
||||
libffi 3.4.2
|
||||
- Copyright (c) 2011, 2014, 2019, 2021 Anthony Green
|
||||
- Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person
|
||||
obtaining a copy of this software and associated documentation
|
||||
files (the ``Software''), to deal in the Software without
|
||||
restriction, including without limitation the rights to use, copy,
|
||||
modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||
of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
|
||||
----------------------------------------------------------------------- */
|
||||
|
||||
/* -------------------------------------------------------------------
|
||||
Most of the API is documented in doc/libffi.texi.
|
||||
|
||||
The raw API is designed to bypass some of the argument packing and
|
||||
unpacking on architectures for which it can be avoided. Routines
|
||||
are provided to emulate the raw API if the underlying platform
|
||||
doesn't allow faster implementation.
|
||||
|
||||
More details on the raw API can be found in:
|
||||
|
||||
http://gcc.gnu.org/ml/java/1999-q3/msg00138.html
|
||||
|
||||
and
|
||||
|
||||
http://gcc.gnu.org/ml/java/1999-q3/msg00174.html
|
||||
-------------------------------------------------------------------- */
|
||||
|
||||
#ifndef LIBFFI_H
|
||||
#define LIBFFI_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Specify which architecture libffi is configured for. */
|
||||
#ifndef X86_64
|
||||
#define X86_64
|
||||
#endif
|
||||
|
||||
/* ---- System configuration information --------------------------------- */
|
||||
|
||||
#include <ffitarget.h>
|
||||
|
||||
#ifndef LIBFFI_ASM
|
||||
|
||||
#if defined(_MSC_VER) && !defined(__clang__)
|
||||
#define __attribute__(X)
|
||||
#endif
|
||||
|
||||
#include <stddef.h>
|
||||
#include <limits.h>
|
||||
|
||||
/* LONG_LONG_MAX is not always defined (not if STRICT_ANSI, for example).
|
||||
But we can find it either under the correct ANSI name, or under GNU
|
||||
C's internal name. */
|
||||
|
||||
#define FFI_64_BIT_MAX 9223372036854775807
|
||||
|
||||
#ifdef LONG_LONG_MAX
|
||||
# define FFI_LONG_LONG_MAX LONG_LONG_MAX
|
||||
#else
|
||||
# ifdef LLONG_MAX
|
||||
# define FFI_LONG_LONG_MAX LLONG_MAX
|
||||
# ifdef _AIX52 /* or newer has C99 LLONG_MAX */
|
||||
# undef FFI_64_BIT_MAX
|
||||
# define FFI_64_BIT_MAX 9223372036854775807LL
|
||||
# endif /* _AIX52 or newer */
|
||||
# else
|
||||
# ifdef __GNUC__
|
||||
# define FFI_LONG_LONG_MAX __LONG_LONG_MAX__
|
||||
# endif
|
||||
# ifdef _AIX /* AIX 5.1 and earlier have LONGLONG_MAX */
|
||||
# ifndef __PPC64__
|
||||
# if defined (__IBMC__) || defined (__IBMCPP__)
|
||||
# define FFI_LONG_LONG_MAX LONGLONG_MAX
|
||||
# endif
|
||||
# endif /* __PPC64__ */
|
||||
# undef FFI_64_BIT_MAX
|
||||
# define FFI_64_BIT_MAX 9223372036854775807LL
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* The closure code assumes that this works on pointers, i.e. a size_t
|
||||
can hold a pointer. */
|
||||
|
||||
typedef struct _ffi_type
|
||||
{
|
||||
size_t size;
|
||||
unsigned short alignment;
|
||||
unsigned short type;
|
||||
struct _ffi_type **elements;
|
||||
} ffi_type;
|
||||
|
||||
/* Need minimal decorations for DLLs to work on Windows. GCC has
|
||||
autoimport and autoexport. Always mark externally visible symbols
|
||||
as dllimport for MSVC clients, even if it means an extra indirection
|
||||
when using the static version of the library.
|
||||
Besides, as a workaround, they can define FFI_BUILDING if they
|
||||
*know* they are going to link with the static library. */
|
||||
#if defined _MSC_VER
|
||||
# if defined FFI_BUILDING_DLL /* Building libffi.DLL with msvcc.sh */
|
||||
# define FFI_API __declspec(dllexport)
|
||||
# elif !defined FFI_BUILDING /* Importing libffi.DLL */
|
||||
# define FFI_API __declspec(dllimport)
|
||||
# else /* Building/linking static library */
|
||||
# define FFI_API
|
||||
# endif
|
||||
#else
|
||||
# define FFI_API
|
||||
#endif
|
||||
|
||||
/* The externally visible type declarations also need the MSVC DLL
|
||||
decorations, or they will not be exported from the object file. */
|
||||
#if defined LIBFFI_HIDE_BASIC_TYPES
|
||||
# define FFI_EXTERN FFI_API
|
||||
#else
|
||||
# define FFI_EXTERN extern FFI_API
|
||||
#endif
|
||||
|
||||
#ifndef LIBFFI_HIDE_BASIC_TYPES
|
||||
#if SCHAR_MAX == 127
|
||||
# define ffi_type_uchar ffi_type_uint8
|
||||
# define ffi_type_schar ffi_type_sint8
|
||||
#else
|
||||
#error "char size not supported"
|
||||
#endif
|
||||
|
||||
#if SHRT_MAX == 32767
|
||||
# define ffi_type_ushort ffi_type_uint16
|
||||
# define ffi_type_sshort ffi_type_sint16
|
||||
#elif SHRT_MAX == 2147483647
|
||||
# define ffi_type_ushort ffi_type_uint32
|
||||
# define ffi_type_sshort ffi_type_sint32
|
||||
#else
|
||||
#error "short size not supported"
|
||||
#endif
|
||||
|
||||
#if INT_MAX == 32767
|
||||
# define ffi_type_uint ffi_type_uint16
|
||||
# define ffi_type_sint ffi_type_sint16
|
||||
#elif INT_MAX == 2147483647
|
||||
# define ffi_type_uint ffi_type_uint32
|
||||
# define ffi_type_sint ffi_type_sint32
|
||||
#elif INT_MAX == 9223372036854775807
|
||||
# define ffi_type_uint ffi_type_uint64
|
||||
# define ffi_type_sint ffi_type_sint64
|
||||
#else
|
||||
#error "int size not supported"
|
||||
#endif
|
||||
|
||||
#if LONG_MAX == 2147483647
|
||||
# if FFI_LONG_LONG_MAX != FFI_64_BIT_MAX
|
||||
#error "no 64-bit data type supported"
|
||||
# endif
|
||||
#elif LONG_MAX != FFI_64_BIT_MAX
|
||||
#error "long size not supported"
|
||||
#endif
|
||||
|
||||
#if LONG_MAX == 2147483647
|
||||
# define ffi_type_ulong ffi_type_uint32
|
||||
# define ffi_type_slong ffi_type_sint32
|
||||
#elif LONG_MAX == FFI_64_BIT_MAX
|
||||
# define ffi_type_ulong ffi_type_uint64
|
||||
# define ffi_type_slong ffi_type_sint64
|
||||
#else
|
||||
#error "long size not supported"
|
||||
#endif
|
||||
|
||||
/* These are defined in types.c. */
|
||||
FFI_EXTERN ffi_type ffi_type_void;
|
||||
FFI_EXTERN ffi_type ffi_type_uint8;
|
||||
FFI_EXTERN ffi_type ffi_type_sint8;
|
||||
FFI_EXTERN ffi_type ffi_type_uint16;
|
||||
FFI_EXTERN ffi_type ffi_type_sint16;
|
||||
FFI_EXTERN ffi_type ffi_type_uint32;
|
||||
FFI_EXTERN ffi_type ffi_type_sint32;
|
||||
FFI_EXTERN ffi_type ffi_type_uint64;
|
||||
FFI_EXTERN ffi_type ffi_type_sint64;
|
||||
FFI_EXTERN ffi_type ffi_type_float;
|
||||
FFI_EXTERN ffi_type ffi_type_double;
|
||||
FFI_EXTERN ffi_type ffi_type_pointer;
|
||||
|
||||
#if 1
|
||||
FFI_EXTERN ffi_type ffi_type_longdouble;
|
||||
#else
|
||||
#define ffi_type_longdouble ffi_type_double
|
||||
#endif
|
||||
|
||||
#ifdef FFI_TARGET_HAS_COMPLEX_TYPE
|
||||
FFI_EXTERN ffi_type ffi_type_complex_float;
|
||||
FFI_EXTERN ffi_type ffi_type_complex_double;
|
||||
#if 1
|
||||
FFI_EXTERN ffi_type ffi_type_complex_longdouble;
|
||||
#else
|
||||
#define ffi_type_complex_longdouble ffi_type_complex_double
|
||||
#endif
|
||||
#endif
|
||||
#endif /* LIBFFI_HIDE_BASIC_TYPES */
|
||||
|
||||
typedef enum {
|
||||
FFI_OK = 0,
|
||||
FFI_BAD_TYPEDEF,
|
||||
FFI_BAD_ABI,
|
||||
FFI_BAD_ARGTYPE
|
||||
} ffi_status;
|
||||
|
||||
typedef struct {
|
||||
ffi_abi abi;
|
||||
unsigned nargs;
|
||||
ffi_type **arg_types;
|
||||
ffi_type *rtype;
|
||||
unsigned bytes;
|
||||
unsigned flags;
|
||||
#ifdef FFI_EXTRA_CIF_FIELDS
|
||||
FFI_EXTRA_CIF_FIELDS;
|
||||
#endif
|
||||
} ffi_cif;
|
||||
|
||||
/* ---- Definitions for the raw API -------------------------------------- */
|
||||
|
||||
#ifndef FFI_SIZEOF_ARG
|
||||
# if LONG_MAX == 2147483647
|
||||
# define FFI_SIZEOF_ARG 4
|
||||
# elif LONG_MAX == FFI_64_BIT_MAX
|
||||
# define FFI_SIZEOF_ARG 8
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef FFI_SIZEOF_JAVA_RAW
|
||||
# define FFI_SIZEOF_JAVA_RAW FFI_SIZEOF_ARG
|
||||
#endif
|
||||
|
||||
typedef union {
|
||||
ffi_sarg sint;
|
||||
ffi_arg uint;
|
||||
float flt;
|
||||
char data[FFI_SIZEOF_ARG];
|
||||
void* ptr;
|
||||
} ffi_raw;
|
||||
|
||||
#if FFI_SIZEOF_JAVA_RAW == 4 && FFI_SIZEOF_ARG == 8
|
||||
/* This is a special case for mips64/n32 ABI (and perhaps others) where
|
||||
sizeof(void *) is 4 and FFI_SIZEOF_ARG is 8. */
|
||||
typedef union {
|
||||
signed int sint;
|
||||
unsigned int uint;
|
||||
float flt;
|
||||
char data[FFI_SIZEOF_JAVA_RAW];
|
||||
void* ptr;
|
||||
} ffi_java_raw;
|
||||
#else
|
||||
typedef ffi_raw ffi_java_raw;
|
||||
#endif
|
||||
|
||||
|
||||
FFI_API
|
||||
void ffi_raw_call (ffi_cif *cif,
|
||||
void (*fn)(void),
|
||||
void *rvalue,
|
||||
ffi_raw *avalue);
|
||||
|
||||
FFI_API void ffi_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_raw *raw);
|
||||
FFI_API void ffi_raw_to_ptrarray (ffi_cif *cif, ffi_raw *raw, void **args);
|
||||
FFI_API size_t ffi_raw_size (ffi_cif *cif);
|
||||
|
||||
/* This is analogous to the raw API, except it uses Java parameter
|
||||
packing, even on 64-bit machines. I.e. on 64-bit machines longs
|
||||
and doubles are followed by an empty 64-bit word. */
|
||||
|
||||
#if !FFI_NATIVE_RAW_API
|
||||
FFI_API
|
||||
void ffi_java_raw_call (ffi_cif *cif,
|
||||
void (*fn)(void),
|
||||
void *rvalue,
|
||||
ffi_java_raw *avalue) __attribute__((deprecated));
|
||||
#endif
|
||||
|
||||
FFI_API
|
||||
void ffi_java_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_java_raw *raw) __attribute__((deprecated));
|
||||
FFI_API
|
||||
void ffi_java_raw_to_ptrarray (ffi_cif *cif, ffi_java_raw *raw, void **args) __attribute__((deprecated));
|
||||
FFI_API
|
||||
size_t ffi_java_raw_size (ffi_cif *cif) __attribute__((deprecated));
|
||||
|
||||
/* ---- Definitions for closures ----------------------------------------- */
|
||||
|
||||
#if FFI_CLOSURES
|
||||
|
||||
#ifdef _MSC_VER
|
||||
__declspec(align(8))
|
||||
#endif
|
||||
typedef struct {
|
||||
#if 0
|
||||
void *trampoline_table;
|
||||
void *trampoline_table_entry;
|
||||
#else
|
||||
union {
|
||||
char tramp[FFI_TRAMPOLINE_SIZE];
|
||||
void *ftramp;
|
||||
};
|
||||
#endif
|
||||
ffi_cif *cif;
|
||||
void (*fun)(ffi_cif*,void*,void**,void*);
|
||||
void *user_data;
|
||||
} ffi_closure
|
||||
#ifdef __GNUC__
|
||||
__attribute__((aligned (8)))
|
||||
#endif
|
||||
;
|
||||
|
||||
#ifndef __GNUC__
|
||||
# ifdef __sgi
|
||||
# pragma pack 0
|
||||
# endif
|
||||
#endif
|
||||
|
||||
FFI_API void *ffi_closure_alloc (size_t size, void **code);
|
||||
FFI_API void ffi_closure_free (void *);
|
||||
|
||||
#if defined(PA_LINUX) || defined(PA_HPUX)
|
||||
#define FFI_CLOSURE_PTR(X) ((void *)((unsigned int)(X) | 2))
|
||||
#define FFI_RESTORE_PTR(X) ((void *)((unsigned int)(X) & ~3))
|
||||
#else
|
||||
#define FFI_CLOSURE_PTR(X) (X)
|
||||
#define FFI_RESTORE_PTR(X) (X)
|
||||
#endif
|
||||
|
||||
FFI_API ffi_status
|
||||
ffi_prep_closure (ffi_closure*,
|
||||
ffi_cif *,
|
||||
void (*fun)(ffi_cif*,void*,void**,void*),
|
||||
void *user_data)
|
||||
#if defined(__GNUC__) && (((__GNUC__ * 100) + __GNUC_MINOR__) >= 405)
|
||||
__attribute__((deprecated ("use ffi_prep_closure_loc instead")))
|
||||
#elif defined(__GNUC__) && __GNUC__ >= 3
|
||||
__attribute__((deprecated))
|
||||
#endif
|
||||
;
|
||||
|
||||
FFI_API ffi_status
|
||||
ffi_prep_closure_loc (ffi_closure*,
|
||||
ffi_cif *,
|
||||
void (*fun)(ffi_cif*,void*,void**,void*),
|
||||
void *user_data,
|
||||
void*codeloc);
|
||||
|
||||
#if defined(__x86_64__) || defined(__arm64__)
|
||||
FFI_API ffi_closure *
|
||||
ffi_find_closure_for_code(void *code);
|
||||
#ifdef __APPLE__
|
||||
FFI_API ffi_closure *ffi_find_closure_for_code_np(void *code);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __sgi
|
||||
# pragma pack 8
|
||||
#endif
|
||||
typedef struct {
|
||||
#if 0
|
||||
void *trampoline_table;
|
||||
void *trampoline_table_entry;
|
||||
#else
|
||||
char tramp[FFI_TRAMPOLINE_SIZE];
|
||||
#endif
|
||||
ffi_cif *cif;
|
||||
|
||||
#if !FFI_NATIVE_RAW_API
|
||||
|
||||
/* If this is enabled, then a raw closure has the same layout
|
||||
as a regular closure. We use this to install an intermediate
|
||||
handler to do the transaltion, void** -> ffi_raw*. */
|
||||
|
||||
void (*translate_args)(ffi_cif*,void*,void**,void*);
|
||||
void *this_closure;
|
||||
|
||||
#endif
|
||||
|
||||
void (*fun)(ffi_cif*,void*,ffi_raw*,void*);
|
||||
void *user_data;
|
||||
|
||||
} ffi_raw_closure;
|
||||
|
||||
typedef struct {
|
||||
#if 0
|
||||
void *trampoline_table;
|
||||
void *trampoline_table_entry;
|
||||
#else
|
||||
char tramp[FFI_TRAMPOLINE_SIZE];
|
||||
#endif
|
||||
|
||||
ffi_cif *cif;
|
||||
|
||||
#if !FFI_NATIVE_RAW_API
|
||||
|
||||
/* If this is enabled, then a raw closure has the same layout
|
||||
as a regular closure. We use this to install an intermediate
|
||||
handler to do the translation, void** -> ffi_raw*. */
|
||||
|
||||
void (*translate_args)(ffi_cif*,void*,void**,void*);
|
||||
void *this_closure;
|
||||
|
||||
#endif
|
||||
|
||||
void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*);
|
||||
void *user_data;
|
||||
|
||||
} ffi_java_raw_closure;
|
||||
|
||||
FFI_API ffi_status
|
||||
ffi_prep_raw_closure (ffi_raw_closure*,
|
||||
ffi_cif *cif,
|
||||
void (*fun)(ffi_cif*,void*,ffi_raw*,void*),
|
||||
void *user_data);
|
||||
|
||||
FFI_API ffi_status
|
||||
ffi_prep_raw_closure_loc (ffi_raw_closure*,
|
||||
ffi_cif *cif,
|
||||
void (*fun)(ffi_cif*,void*,ffi_raw*,void*),
|
||||
void *user_data,
|
||||
void *codeloc);
|
||||
|
||||
#if !FFI_NATIVE_RAW_API
|
||||
FFI_API ffi_status
|
||||
ffi_prep_java_raw_closure (ffi_java_raw_closure*,
|
||||
ffi_cif *cif,
|
||||
void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*),
|
||||
void *user_data) __attribute__((deprecated));
|
||||
|
||||
FFI_API ffi_status
|
||||
ffi_prep_java_raw_closure_loc (ffi_java_raw_closure*,
|
||||
ffi_cif *cif,
|
||||
void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*),
|
||||
void *user_data,
|
||||
void *codeloc) __attribute__((deprecated));
|
||||
#endif
|
||||
|
||||
#endif /* FFI_CLOSURES */
|
||||
|
||||
#if FFI_GO_CLOSURES
|
||||
|
||||
typedef struct {
|
||||
void *tramp;
|
||||
ffi_cif *cif;
|
||||
void (*fun)(ffi_cif*,void*,void**,void*);
|
||||
} ffi_go_closure;
|
||||
|
||||
FFI_API ffi_status ffi_prep_go_closure (ffi_go_closure*, ffi_cif *,
|
||||
void (*fun)(ffi_cif*,void*,void**,void*));
|
||||
|
||||
FFI_API void ffi_call_go (ffi_cif *cif, void (*fn)(void), void *rvalue,
|
||||
void **avalue, void *closure);
|
||||
|
||||
#endif /* FFI_GO_CLOSURES */
|
||||
|
||||
/* ---- Public interface definition -------------------------------------- */
|
||||
|
||||
FFI_API
|
||||
ffi_status ffi_prep_cif(ffi_cif *cif,
|
||||
ffi_abi abi,
|
||||
unsigned int nargs,
|
||||
ffi_type *rtype,
|
||||
ffi_type **atypes);
|
||||
|
||||
FFI_API
|
||||
ffi_status ffi_prep_cif_var(ffi_cif *cif,
|
||||
ffi_abi abi,
|
||||
unsigned int nfixedargs,
|
||||
unsigned int ntotalargs,
|
||||
ffi_type *rtype,
|
||||
ffi_type **atypes);
|
||||
|
||||
FFI_API
|
||||
void ffi_call(ffi_cif *cif,
|
||||
void (*fn)(void),
|
||||
void *rvalue,
|
||||
void **avalue);
|
||||
|
||||
FFI_API
|
||||
ffi_status ffi_get_struct_offsets (ffi_abi abi, ffi_type *struct_type,
|
||||
size_t *offsets);
|
||||
|
||||
/* Useful for eliminating compiler warnings. */
|
||||
#define FFI_FN(f) ((void (*)(void))f)
|
||||
|
||||
/* ---- Definitions shared with assembly code ---------------------------- */
|
||||
|
||||
#endif
|
||||
|
||||
/* If these change, update src/mips/ffitarget.h. */
|
||||
#define FFI_TYPE_VOID 0
|
||||
#define FFI_TYPE_INT 1
|
||||
#define FFI_TYPE_FLOAT 2
|
||||
#define FFI_TYPE_DOUBLE 3
|
||||
#if 1
|
||||
#define FFI_TYPE_LONGDOUBLE 4
|
||||
#else
|
||||
#define FFI_TYPE_LONGDOUBLE FFI_TYPE_DOUBLE
|
||||
#endif
|
||||
#define FFI_TYPE_UINT8 5
|
||||
#define FFI_TYPE_SINT8 6
|
||||
#define FFI_TYPE_UINT16 7
|
||||
#define FFI_TYPE_SINT16 8
|
||||
#define FFI_TYPE_UINT32 9
|
||||
#define FFI_TYPE_SINT32 10
|
||||
#define FFI_TYPE_UINT64 11
|
||||
#define FFI_TYPE_SINT64 12
|
||||
#define FFI_TYPE_STRUCT 13
|
||||
#define FFI_TYPE_POINTER 14
|
||||
#define FFI_TYPE_COMPLEX 15
|
||||
|
||||
/* This should always refer to the last type code (for sanity checks). */
|
||||
#define FFI_TYPE_LAST FFI_TYPE_COMPLEX
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
162
.CondaPkg/env/include/ffitarget.h
vendored
Normal file
162
.CondaPkg/env/include/ffitarget.h
vendored
Normal file
@@ -0,0 +1,162 @@
|
||||
/* -----------------------------------------------------------------*-C-*-
|
||||
ffitarget.h - Copyright (c) 2012, 2014, 2018 Anthony Green
|
||||
Copyright (c) 1996-2003, 2010 Red Hat, Inc.
|
||||
Copyright (C) 2008 Free Software Foundation, Inc.
|
||||
|
||||
Target configuration macros for x86 and x86-64.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
``Software''), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included
|
||||
in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
|
||||
----------------------------------------------------------------------- */
|
||||
|
||||
#ifndef LIBFFI_TARGET_H
|
||||
#define LIBFFI_TARGET_H
|
||||
|
||||
#ifndef LIBFFI_H
|
||||
#error "Please do not include ffitarget.h directly into your source. Use ffi.h instead."
|
||||
#endif
|
||||
|
||||
/* ---- System specific configurations ----------------------------------- */
|
||||
|
||||
/* For code common to all platforms on x86 and x86_64. */
|
||||
#define X86_ANY
|
||||
|
||||
#if defined (X86_64) && defined (__i386__)
|
||||
#undef X86_64
|
||||
#define X86
|
||||
#endif
|
||||
|
||||
#ifdef X86_WIN64
|
||||
#define FFI_SIZEOF_ARG 8
|
||||
#define USE_BUILTIN_FFS 0 /* not yet implemented in mingw-64 */
|
||||
#endif
|
||||
|
||||
#define FFI_TARGET_SPECIFIC_STACK_SPACE_ALLOCATION
|
||||
#ifndef _MSC_VER
|
||||
#define FFI_TARGET_HAS_COMPLEX_TYPE
|
||||
#endif
|
||||
|
||||
/* ---- Generic type definitions ----------------------------------------- */
|
||||
|
||||
#ifndef LIBFFI_ASM
|
||||
#ifdef X86_WIN64
|
||||
#ifdef _MSC_VER
|
||||
typedef unsigned __int64 ffi_arg;
|
||||
typedef __int64 ffi_sarg;
|
||||
#else
|
||||
typedef unsigned long long ffi_arg;
|
||||
typedef long long ffi_sarg;
|
||||
#endif
|
||||
#else
|
||||
#if defined __x86_64__ && defined __ILP32__
|
||||
#define FFI_SIZEOF_ARG 8
|
||||
#define FFI_SIZEOF_JAVA_RAW 4
|
||||
typedef unsigned long long ffi_arg;
|
||||
typedef long long ffi_sarg;
|
||||
#else
|
||||
typedef unsigned long ffi_arg;
|
||||
typedef signed long ffi_sarg;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
typedef enum ffi_abi {
|
||||
#if defined(X86_WIN64)
|
||||
FFI_FIRST_ABI = 0,
|
||||
FFI_WIN64, /* sizeof(long double) == 8 - microsoft compilers */
|
||||
FFI_GNUW64, /* sizeof(long double) == 16 - GNU compilers */
|
||||
FFI_LAST_ABI,
|
||||
#ifdef __GNUC__
|
||||
FFI_DEFAULT_ABI = FFI_GNUW64
|
||||
#else
|
||||
FFI_DEFAULT_ABI = FFI_WIN64
|
||||
#endif
|
||||
|
||||
#elif defined(X86_64) || (defined (__x86_64__) && defined (X86_DARWIN))
|
||||
FFI_FIRST_ABI = 1,
|
||||
FFI_UNIX64,
|
||||
FFI_WIN64,
|
||||
FFI_EFI64 = FFI_WIN64,
|
||||
FFI_GNUW64,
|
||||
FFI_LAST_ABI,
|
||||
FFI_DEFAULT_ABI = FFI_UNIX64
|
||||
|
||||
#elif defined(X86_WIN32)
|
||||
FFI_FIRST_ABI = 0,
|
||||
FFI_SYSV = 1,
|
||||
FFI_STDCALL = 2,
|
||||
FFI_THISCALL = 3,
|
||||
FFI_FASTCALL = 4,
|
||||
FFI_MS_CDECL = 5,
|
||||
FFI_PASCAL = 6,
|
||||
FFI_REGISTER = 7,
|
||||
FFI_LAST_ABI,
|
||||
FFI_DEFAULT_ABI = FFI_MS_CDECL
|
||||
#else
|
||||
FFI_FIRST_ABI = 0,
|
||||
FFI_SYSV = 1,
|
||||
FFI_THISCALL = 3,
|
||||
FFI_FASTCALL = 4,
|
||||
FFI_STDCALL = 5,
|
||||
FFI_PASCAL = 6,
|
||||
FFI_REGISTER = 7,
|
||||
FFI_MS_CDECL = 8,
|
||||
FFI_LAST_ABI,
|
||||
FFI_DEFAULT_ABI = FFI_SYSV
|
||||
#endif
|
||||
} ffi_abi;
|
||||
#endif
|
||||
|
||||
/* ---- Definitions for closures ----------------------------------------- */
|
||||
|
||||
#define FFI_CLOSURES 1
|
||||
#define FFI_GO_CLOSURES 1
|
||||
|
||||
#define FFI_TYPE_SMALL_STRUCT_1B (FFI_TYPE_LAST + 1)
|
||||
#define FFI_TYPE_SMALL_STRUCT_2B (FFI_TYPE_LAST + 2)
|
||||
#define FFI_TYPE_SMALL_STRUCT_4B (FFI_TYPE_LAST + 3)
|
||||
#define FFI_TYPE_MS_STRUCT (FFI_TYPE_LAST + 4)
|
||||
|
||||
#if defined (X86_64) || defined(X86_WIN64) \
|
||||
|| (defined (__x86_64__) && defined (X86_DARWIN))
|
||||
/* 4 bytes of ENDBR64 + 7 bytes of LEA + 6 bytes of JMP + 7 bytes of NOP
|
||||
+ 8 bytes of pointer. */
|
||||
# define FFI_TRAMPOLINE_SIZE 32
|
||||
# define FFI_NATIVE_RAW_API 0
|
||||
#else
|
||||
/* 4 bytes of ENDBR32 + 5 bytes of MOV + 5 bytes of JMP + 2 unused
|
||||
bytes. */
|
||||
# define FFI_TRAMPOLINE_SIZE 16
|
||||
# define FFI_NATIVE_RAW_API 1 /* x86 has native raw api support */
|
||||
#endif
|
||||
|
||||
#if !defined(GENERATE_LIBFFI_MAP) && defined(__CET__)
|
||||
# include <cet.h>
|
||||
# if (__CET__ & 1) != 0
|
||||
# define ENDBR_PRESENT
|
||||
# endif
|
||||
# define _CET_NOTRACK notrack
|
||||
#else
|
||||
# define _CET_ENDBR
|
||||
# define _CET_NOTRACK
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
460
.CondaPkg/env/include/form.h
vendored
Normal file
460
.CondaPkg/env/include/form.h
vendored
Normal file
@@ -0,0 +1,460 @@
|
||||
/****************************************************************************
|
||||
* Copyright 2018-2019-2020,2021 Thomas E. Dickey *
|
||||
* Copyright 1998-2016,2017 Free Software Foundation, Inc. *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a *
|
||||
* copy of this software and associated documentation files (the *
|
||||
* "Software"), to deal in the Software without restriction, including *
|
||||
* without limitation the rights to use, copy, modify, merge, publish, *
|
||||
* distribute, distribute with modifications, sublicense, and/or sell *
|
||||
* copies of the Software, and to permit persons to whom the Software is *
|
||||
* furnished to do so, subject to the following conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included *
|
||||
* in all copies or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
|
||||
* IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
|
||||
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
|
||||
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
|
||||
* THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
* *
|
||||
* Except as contained in this notice, the name(s) of the above copyright *
|
||||
* holders shall not be used in advertising or otherwise to promote the *
|
||||
* sale, use or other dealings in this Software without prior written *
|
||||
* authorization. *
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Author: Juergen Pfeifer, 1995,1997 *
|
||||
****************************************************************************/
|
||||
|
||||
/* $Id: form.h,v 0.32 2021/06/17 21:26:02 tom Exp $ */
|
||||
|
||||
#ifndef FORM_H
|
||||
#define FORM_H
|
||||
/* *INDENT-OFF*/
|
||||
|
||||
#include <ncursesw/curses.h>
|
||||
#include <ncursesw/eti.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#if defined(BUILDING_FORM)
|
||||
# define FORM_IMPEXP NCURSES_EXPORT_GENERAL_EXPORT
|
||||
#else
|
||||
# define FORM_IMPEXP NCURSES_EXPORT_GENERAL_IMPORT
|
||||
#endif
|
||||
|
||||
#define FORM_WRAPPED_VAR(type,name) extern FORM_IMPEXP type NCURSES_PUBLIC_VAR(name)(void)
|
||||
|
||||
#define FORM_EXPORT(type) FORM_IMPEXP type NCURSES_API
|
||||
#define FORM_EXPORT_VAR(type) FORM_IMPEXP type
|
||||
|
||||
#ifndef FORM_PRIV_H
|
||||
typedef void *FIELD_CELL;
|
||||
#endif
|
||||
|
||||
#ifndef NCURSES_FIELD_INTERNALS
|
||||
#define NCURSES_FIELD_INTERNALS /* nothing */
|
||||
#endif
|
||||
|
||||
typedef int Form_Options;
|
||||
typedef int Field_Options;
|
||||
|
||||
/**********
|
||||
* _PAGE *
|
||||
**********/
|
||||
|
||||
typedef struct pagenode
|
||||
#if !NCURSES_OPAQUE_FORM
|
||||
{
|
||||
short pmin; /* index of first field on page */
|
||||
short pmax; /* index of last field on page */
|
||||
short smin; /* index of top leftmost field on page */
|
||||
short smax; /* index of bottom rightmost field on page */
|
||||
}
|
||||
#endif /* !NCURSES_OPAQUE_FORM */
|
||||
_PAGE;
|
||||
|
||||
/**********
|
||||
* FIELD *
|
||||
**********/
|
||||
|
||||
typedef struct fieldnode
|
||||
#if 1 /* not yet: !NCURSES_OPAQUE_FORM */
|
||||
{
|
||||
unsigned short status; /* flags */
|
||||
short rows; /* size in rows */
|
||||
short cols; /* size in cols */
|
||||
short frow; /* first row */
|
||||
short fcol; /* first col */
|
||||
int drows; /* dynamic rows */
|
||||
int dcols; /* dynamic cols */
|
||||
int maxgrow; /* maximum field growth */
|
||||
int nrow; /* off-screen rows */
|
||||
short nbuf; /* additional buffers */
|
||||
short just; /* justification */
|
||||
short page; /* page on form */
|
||||
short index; /* into form -> field */
|
||||
int pad; /* pad character */
|
||||
chtype fore; /* foreground attribute */
|
||||
chtype back; /* background attribute */
|
||||
Field_Options opts; /* options */
|
||||
struct fieldnode * snext; /* sorted order pointer */
|
||||
struct fieldnode * sprev; /* sorted order pointer */
|
||||
struct fieldnode * link; /* linked field chain */
|
||||
struct formnode * form; /* containing form */
|
||||
struct typenode * type; /* field type */
|
||||
void * arg; /* argument for type */
|
||||
FIELD_CELL * buf; /* field buffers */
|
||||
void * usrptr; /* user pointer */
|
||||
/*
|
||||
* The wide-character configuration requires extra information. Because
|
||||
* there are existing applications that manipulate the members of FIELD
|
||||
* directly, we cannot make the struct opaque, except by changing the ABI.
|
||||
* Offsets of members up to this point are the same in the narrow- and
|
||||
* wide-character configuration. But note that the type of buf depends on
|
||||
* the configuration, and is made opaque for that reason.
|
||||
*/
|
||||
NCURSES_FIELD_INTERNALS
|
||||
}
|
||||
#endif /* NCURSES_OPAQUE_FORM */
|
||||
FIELD;
|
||||
|
||||
|
||||
/*********
|
||||
* FORM *
|
||||
*********/
|
||||
|
||||
typedef struct formnode
|
||||
#if 1 /* not yet: !NCURSES_OPAQUE_FORM */
|
||||
{
|
||||
unsigned short status; /* flags */
|
||||
short rows; /* size in rows */
|
||||
short cols; /* size in cols */
|
||||
int currow; /* current row in field window */
|
||||
int curcol; /* current col in field window */
|
||||
int toprow; /* in scrollable field window */
|
||||
int begincol; /* in horiz. scrollable field */
|
||||
short maxfield; /* number of fields */
|
||||
short maxpage; /* number of pages */
|
||||
short curpage; /* index into page */
|
||||
Form_Options opts; /* options */
|
||||
WINDOW * win; /* window */
|
||||
WINDOW * sub; /* subwindow */
|
||||
WINDOW * w; /* window for current field */
|
||||
FIELD ** field; /* field [maxfield] */
|
||||
FIELD * current; /* current field */
|
||||
_PAGE * page; /* page [maxpage] */
|
||||
void * usrptr; /* user pointer */
|
||||
|
||||
void (*forminit)(struct formnode *);
|
||||
void (*formterm)(struct formnode *);
|
||||
void (*fieldinit)(struct formnode *);
|
||||
void (*fieldterm)(struct formnode *);
|
||||
|
||||
}
|
||||
#endif /* !NCURSES_OPAQUE_FORM */
|
||||
FORM;
|
||||
|
||||
|
||||
/**************
|
||||
* FIELDTYPE *
|
||||
**************/
|
||||
|
||||
typedef struct typenode
|
||||
#if !NCURSES_OPAQUE_FORM
|
||||
{
|
||||
unsigned short status; /* flags */
|
||||
long ref; /* reference count */
|
||||
struct typenode * left; /* ptr to operand for | */
|
||||
struct typenode * right; /* ptr to operand for | */
|
||||
|
||||
void* (*makearg)(va_list *); /* make fieldtype arg */
|
||||
void* (*copyarg)(const void *); /* copy fieldtype arg */
|
||||
void (*freearg)(void *); /* free fieldtype arg */
|
||||
|
||||
#if NCURSES_INTEROP_FUNCS
|
||||
union {
|
||||
bool (*ofcheck)(FIELD *,const void *); /* field validation */
|
||||
bool (*gfcheck)(FORM*,FIELD *,const void*); /* generic field validation */
|
||||
} fieldcheck;
|
||||
union {
|
||||
bool (*occheck)(int,const void *); /* character validation */
|
||||
bool (*gccheck)(int,FORM*,
|
||||
FIELD*,const void*); /* generic char validation */
|
||||
} charcheck;
|
||||
union {
|
||||
bool (*onext)(FIELD *,const void *); /* enumerate next value */
|
||||
bool (*gnext)(FORM*,FIELD*,const void*); /* generic enumerate next */
|
||||
} enum_next;
|
||||
union {
|
||||
bool (*oprev)(FIELD *,const void *); /* enumerate prev value */
|
||||
bool (*gprev)(FORM*,FIELD*,const void*); /* generic enumerate prev */
|
||||
} enum_prev;
|
||||
void* (*genericarg)(void*); /* Alternate Arg method */
|
||||
#else
|
||||
bool (*fcheck)(FIELD *,const void *); /* field validation */
|
||||
bool (*ccheck)(int,const void *); /* character validation */
|
||||
|
||||
bool (*next)(FIELD *,const void *); /* enumerate next value */
|
||||
bool (*prev)(FIELD *,const void *); /* enumerate prev value */
|
||||
#endif
|
||||
}
|
||||
#endif /* !NCURSES_OPAQUE_FORM */
|
||||
FIELDTYPE;
|
||||
|
||||
typedef void (*Form_Hook)(FORM *);
|
||||
|
||||
/***************************
|
||||
* miscellaneous #defines *
|
||||
***************************/
|
||||
|
||||
/* field justification */
|
||||
#define NO_JUSTIFICATION (0)
|
||||
#define JUSTIFY_LEFT (1)
|
||||
#define JUSTIFY_CENTER (2)
|
||||
#define JUSTIFY_RIGHT (3)
|
||||
|
||||
/* field options */
|
||||
#define O_VISIBLE (0x0001U)
|
||||
#define O_ACTIVE (0x0002U)
|
||||
#define O_PUBLIC (0x0004U)
|
||||
#define O_EDIT (0x0008U)
|
||||
#define O_WRAP (0x0010U)
|
||||
#define O_BLANK (0x0020U)
|
||||
#define O_AUTOSKIP (0x0040U)
|
||||
#define O_NULLOK (0x0080U)
|
||||
#define O_PASSOK (0x0100U)
|
||||
#define O_STATIC (0x0200U)
|
||||
#define O_DYNAMIC_JUSTIFY (0x0400U) /* ncurses extension */
|
||||
#define O_NO_LEFT_STRIP (0x0800U) /* ncurses extension */
|
||||
#define O_EDGE_INSERT_STAY (0x1000U) /* ncurses extension */
|
||||
#define O_INPUT_LIMIT (0x2000U) /* ncurses extension */
|
||||
|
||||
/* form options */
|
||||
#define O_NL_OVERLOAD (0x0001U)
|
||||
#define O_BS_OVERLOAD (0x0002U)
|
||||
|
||||
/* form driver commands */
|
||||
#define REQ_NEXT_PAGE (KEY_MAX + 1) /* move to next page */
|
||||
#define REQ_PREV_PAGE (KEY_MAX + 2) /* move to previous page */
|
||||
#define REQ_FIRST_PAGE (KEY_MAX + 3) /* move to first page */
|
||||
#define REQ_LAST_PAGE (KEY_MAX + 4) /* move to last page */
|
||||
|
||||
#define REQ_NEXT_FIELD (KEY_MAX + 5) /* move to next field */
|
||||
#define REQ_PREV_FIELD (KEY_MAX + 6) /* move to previous field */
|
||||
#define REQ_FIRST_FIELD (KEY_MAX + 7) /* move to first field */
|
||||
#define REQ_LAST_FIELD (KEY_MAX + 8) /* move to last field */
|
||||
#define REQ_SNEXT_FIELD (KEY_MAX + 9) /* move to sorted next field */
|
||||
#define REQ_SPREV_FIELD (KEY_MAX + 10) /* move to sorted prev field */
|
||||
#define REQ_SFIRST_FIELD (KEY_MAX + 11) /* move to sorted first field */
|
||||
#define REQ_SLAST_FIELD (KEY_MAX + 12) /* move to sorted last field */
|
||||
#define REQ_LEFT_FIELD (KEY_MAX + 13) /* move to left to field */
|
||||
#define REQ_RIGHT_FIELD (KEY_MAX + 14) /* move to right to field */
|
||||
#define REQ_UP_FIELD (KEY_MAX + 15) /* move to up to field */
|
||||
#define REQ_DOWN_FIELD (KEY_MAX + 16) /* move to down to field */
|
||||
|
||||
#define REQ_NEXT_CHAR (KEY_MAX + 17) /* move to next char in field */
|
||||
#define REQ_PREV_CHAR (KEY_MAX + 18) /* move to prev char in field */
|
||||
#define REQ_NEXT_LINE (KEY_MAX + 19) /* move to next line in field */
|
||||
#define REQ_PREV_LINE (KEY_MAX + 20) /* move to prev line in field */
|
||||
#define REQ_NEXT_WORD (KEY_MAX + 21) /* move to next word in field */
|
||||
#define REQ_PREV_WORD (KEY_MAX + 22) /* move to prev word in field */
|
||||
#define REQ_BEG_FIELD (KEY_MAX + 23) /* move to first char in field */
|
||||
#define REQ_END_FIELD (KEY_MAX + 24) /* move after last char in fld */
|
||||
#define REQ_BEG_LINE (KEY_MAX + 25) /* move to beginning of line */
|
||||
#define REQ_END_LINE (KEY_MAX + 26) /* move after last char in line */
|
||||
#define REQ_LEFT_CHAR (KEY_MAX + 27) /* move left in field */
|
||||
#define REQ_RIGHT_CHAR (KEY_MAX + 28) /* move right in field */
|
||||
#define REQ_UP_CHAR (KEY_MAX + 29) /* move up in field */
|
||||
#define REQ_DOWN_CHAR (KEY_MAX + 30) /* move down in field */
|
||||
|
||||
#define REQ_NEW_LINE (KEY_MAX + 31) /* insert/overlay new line */
|
||||
#define REQ_INS_CHAR (KEY_MAX + 32) /* insert blank char at cursor */
|
||||
#define REQ_INS_LINE (KEY_MAX + 33) /* insert blank line at cursor */
|
||||
#define REQ_DEL_CHAR (KEY_MAX + 34) /* delete char at cursor */
|
||||
#define REQ_DEL_PREV (KEY_MAX + 35) /* delete char before cursor */
|
||||
#define REQ_DEL_LINE (KEY_MAX + 36) /* delete line at cursor */
|
||||
#define REQ_DEL_WORD (KEY_MAX + 37) /* delete word at cursor */
|
||||
#define REQ_CLR_EOL (KEY_MAX + 38) /* clear to end of line */
|
||||
#define REQ_CLR_EOF (KEY_MAX + 39) /* clear to end of field */
|
||||
#define REQ_CLR_FIELD (KEY_MAX + 40) /* clear entire field */
|
||||
#define REQ_OVL_MODE (KEY_MAX + 41) /* begin overlay mode */
|
||||
#define REQ_INS_MODE (KEY_MAX + 42) /* begin insert mode */
|
||||
#define REQ_SCR_FLINE (KEY_MAX + 43) /* scroll field forward a line */
|
||||
#define REQ_SCR_BLINE (KEY_MAX + 44) /* scroll field backward a line */
|
||||
#define REQ_SCR_FPAGE (KEY_MAX + 45) /* scroll field forward a page */
|
||||
#define REQ_SCR_BPAGE (KEY_MAX + 46) /* scroll field backward a page */
|
||||
#define REQ_SCR_FHPAGE (KEY_MAX + 47) /* scroll field forward half page */
|
||||
#define REQ_SCR_BHPAGE (KEY_MAX + 48) /* scroll field backward half page */
|
||||
#define REQ_SCR_FCHAR (KEY_MAX + 49) /* horizontal scroll char */
|
||||
#define REQ_SCR_BCHAR (KEY_MAX + 50) /* horizontal scroll char */
|
||||
#define REQ_SCR_HFLINE (KEY_MAX + 51) /* horizontal scroll line */
|
||||
#define REQ_SCR_HBLINE (KEY_MAX + 52) /* horizontal scroll line */
|
||||
#define REQ_SCR_HFHALF (KEY_MAX + 53) /* horizontal scroll half line */
|
||||
#define REQ_SCR_HBHALF (KEY_MAX + 54) /* horizontal scroll half line */
|
||||
|
||||
#define REQ_VALIDATION (KEY_MAX + 55) /* validate field */
|
||||
#define REQ_NEXT_CHOICE (KEY_MAX + 56) /* display next field choice */
|
||||
#define REQ_PREV_CHOICE (KEY_MAX + 57) /* display prev field choice */
|
||||
|
||||
#define MIN_FORM_COMMAND (KEY_MAX + 1) /* used by form_driver */
|
||||
#define MAX_FORM_COMMAND (KEY_MAX + 57) /* used by form_driver */
|
||||
|
||||
#if defined(MAX_COMMAND)
|
||||
# if (MAX_FORM_COMMAND > MAX_COMMAND)
|
||||
# error Something is wrong -- MAX_FORM_COMMAND is greater than MAX_COMMAND
|
||||
# elif (MAX_COMMAND != (KEY_MAX + 128))
|
||||
# error Something is wrong -- MAX_COMMAND is already inconsistently defined.
|
||||
# endif
|
||||
#else
|
||||
# define MAX_COMMAND (KEY_MAX + 128)
|
||||
#endif
|
||||
|
||||
/*************************
|
||||
* standard field types *
|
||||
*************************/
|
||||
extern FORM_EXPORT_VAR(FIELDTYPE *) TYPE_ALPHA;
|
||||
extern FORM_EXPORT_VAR(FIELDTYPE *) TYPE_ALNUM;
|
||||
extern FORM_EXPORT_VAR(FIELDTYPE *) TYPE_ENUM;
|
||||
extern FORM_EXPORT_VAR(FIELDTYPE *) TYPE_INTEGER;
|
||||
extern FORM_EXPORT_VAR(FIELDTYPE *) TYPE_NUMERIC;
|
||||
extern FORM_EXPORT_VAR(FIELDTYPE *) TYPE_REGEXP;
|
||||
|
||||
/************************************
|
||||
* built-in additional field types *
|
||||
* They are not defined in SVr4 *
|
||||
************************************/
|
||||
extern FORM_EXPORT_VAR(FIELDTYPE *) TYPE_IPV4; /* Internet IP Version 4 address */
|
||||
|
||||
/***********************
|
||||
* FIELDTYPE routines *
|
||||
***********************/
|
||||
extern FORM_EXPORT(FIELDTYPE *) new_fieldtype (
|
||||
bool (* const field_check)(FIELD *,const void *),
|
||||
bool (* const char_check)(int,const void *));
|
||||
extern FORM_EXPORT(FIELDTYPE *) link_fieldtype(
|
||||
FIELDTYPE *, FIELDTYPE *);
|
||||
|
||||
extern FORM_EXPORT(int) free_fieldtype (FIELDTYPE *);
|
||||
extern FORM_EXPORT(int) set_fieldtype_arg (FIELDTYPE *,
|
||||
void * (* const make_arg)(va_list *),
|
||||
void * (* const copy_arg)(const void *),
|
||||
void (* const free_arg)(void *));
|
||||
extern FORM_EXPORT(int) set_fieldtype_choice (FIELDTYPE *,
|
||||
bool (* const next_choice)(FIELD *,const void *),
|
||||
bool (* const prev_choice)(FIELD *,const void *));
|
||||
|
||||
/*******************
|
||||
* FIELD routines *
|
||||
*******************/
|
||||
extern FORM_EXPORT(FIELD *) new_field (int,int,int,int,int,int);
|
||||
extern FORM_EXPORT(FIELD *) dup_field (FIELD *,int,int);
|
||||
extern FORM_EXPORT(FIELD *) link_field (FIELD *,int,int);
|
||||
|
||||
extern FORM_EXPORT(int) free_field (FIELD *);
|
||||
extern FORM_EXPORT(int) field_info (const FIELD *,int *,int *,int *,int *,int *,int *);
|
||||
extern FORM_EXPORT(int) dynamic_field_info (const FIELD *,int *,int *,int *);
|
||||
extern FORM_EXPORT(int) set_max_field ( FIELD *,int);
|
||||
extern FORM_EXPORT(int) move_field (FIELD *,int,int);
|
||||
extern FORM_EXPORT(int) set_field_type (FIELD *,FIELDTYPE *,...);
|
||||
extern FORM_EXPORT(int) set_new_page (FIELD *,bool);
|
||||
extern FORM_EXPORT(int) set_field_just (FIELD *,int);
|
||||
extern FORM_EXPORT(int) field_just (const FIELD *);
|
||||
extern FORM_EXPORT(int) set_field_fore (FIELD *,chtype);
|
||||
extern FORM_EXPORT(int) set_field_back (FIELD *,chtype);
|
||||
extern FORM_EXPORT(int) set_field_pad (FIELD *,int);
|
||||
extern FORM_EXPORT(int) field_pad (const FIELD *);
|
||||
extern FORM_EXPORT(int) set_field_buffer (FIELD *,int,const char *);
|
||||
extern FORM_EXPORT(int) set_field_status (FIELD *,bool);
|
||||
extern FORM_EXPORT(int) set_field_userptr (FIELD *, void *);
|
||||
extern FORM_EXPORT(int) set_field_opts (FIELD *,Field_Options);
|
||||
extern FORM_EXPORT(int) field_opts_on (FIELD *,Field_Options);
|
||||
extern FORM_EXPORT(int) field_opts_off (FIELD *,Field_Options);
|
||||
|
||||
extern FORM_EXPORT(chtype) field_fore (const FIELD *);
|
||||
extern FORM_EXPORT(chtype) field_back (const FIELD *);
|
||||
|
||||
extern FORM_EXPORT(bool) new_page (const FIELD *);
|
||||
extern FORM_EXPORT(bool) field_status (const FIELD *);
|
||||
|
||||
extern FORM_EXPORT(void *) field_arg (const FIELD *);
|
||||
|
||||
extern FORM_EXPORT(void *) field_userptr (const FIELD *);
|
||||
|
||||
extern FORM_EXPORT(FIELDTYPE *) field_type (const FIELD *);
|
||||
|
||||
extern FORM_EXPORT(char *) field_buffer (const FIELD *,int);
|
||||
|
||||
extern FORM_EXPORT(Field_Options) field_opts (const FIELD *);
|
||||
|
||||
/******************
|
||||
* FORM routines *
|
||||
******************/
|
||||
|
||||
extern FORM_EXPORT(FORM *) new_form (FIELD **);
|
||||
|
||||
extern FORM_EXPORT(FIELD **) form_fields (const FORM *);
|
||||
extern FORM_EXPORT(FIELD *) current_field (const FORM *);
|
||||
|
||||
extern FORM_EXPORT(WINDOW *) form_win (const FORM *);
|
||||
extern FORM_EXPORT(WINDOW *) form_sub (const FORM *);
|
||||
|
||||
extern FORM_EXPORT(Form_Hook) form_init (const FORM *);
|
||||
extern FORM_EXPORT(Form_Hook) form_term (const FORM *);
|
||||
extern FORM_EXPORT(Form_Hook) field_init (const FORM *);
|
||||
extern FORM_EXPORT(Form_Hook) field_term (const FORM *);
|
||||
|
||||
extern FORM_EXPORT(int) free_form (FORM *);
|
||||
extern FORM_EXPORT(int) set_form_fields (FORM *,FIELD **);
|
||||
extern FORM_EXPORT(int) field_count (const FORM *);
|
||||
extern FORM_EXPORT(int) set_form_win (FORM *,WINDOW *);
|
||||
extern FORM_EXPORT(int) set_form_sub (FORM *,WINDOW *);
|
||||
extern FORM_EXPORT(int) set_current_field (FORM *,FIELD *);
|
||||
extern FORM_EXPORT(int) unfocus_current_field (FORM *);
|
||||
extern FORM_EXPORT(int) field_index (const FIELD *);
|
||||
extern FORM_EXPORT(int) set_form_page (FORM *,int);
|
||||
extern FORM_EXPORT(int) form_page (const FORM *);
|
||||
extern FORM_EXPORT(int) scale_form (const FORM *,int *,int *);
|
||||
extern FORM_EXPORT(int) set_form_init (FORM *,Form_Hook);
|
||||
extern FORM_EXPORT(int) set_form_term (FORM *,Form_Hook);
|
||||
extern FORM_EXPORT(int) set_field_init (FORM *,Form_Hook);
|
||||
extern FORM_EXPORT(int) set_field_term (FORM *,Form_Hook);
|
||||
extern FORM_EXPORT(int) post_form (FORM *);
|
||||
extern FORM_EXPORT(int) unpost_form (FORM *);
|
||||
extern FORM_EXPORT(int) pos_form_cursor (FORM *);
|
||||
extern FORM_EXPORT(int) form_driver (FORM *,int);
|
||||
# if NCURSES_WIDECHAR
|
||||
extern FORM_EXPORT(int) form_driver_w (FORM *,int,wchar_t);
|
||||
# endif
|
||||
extern FORM_EXPORT(int) set_form_userptr (FORM *,void *);
|
||||
extern FORM_EXPORT(int) set_form_opts (FORM *,Form_Options);
|
||||
extern FORM_EXPORT(int) form_opts_on (FORM *,Form_Options);
|
||||
extern FORM_EXPORT(int) form_opts_off (FORM *,Form_Options);
|
||||
extern FORM_EXPORT(int) form_request_by_name (const char *);
|
||||
|
||||
extern FORM_EXPORT(const char *) form_request_name (int);
|
||||
|
||||
extern FORM_EXPORT(void *) form_userptr (const FORM *);
|
||||
|
||||
extern FORM_EXPORT(Form_Options) form_opts (const FORM *);
|
||||
|
||||
extern FORM_EXPORT(bool) data_ahead (const FORM *);
|
||||
extern FORM_EXPORT(bool) data_behind (const FORM *);
|
||||
|
||||
#if NCURSES_SP_FUNCS
|
||||
extern FORM_EXPORT(FORM *) NCURSES_SP_NAME(new_form) (SCREEN*, FIELD **);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
/* *INDENT-ON*/
|
||||
|
||||
#endif /* FORM_H */
|
||||
194
.CondaPkg/env/include/itcl.h
vendored
Normal file
194
.CondaPkg/env/include/itcl.h
vendored
Normal file
@@ -0,0 +1,194 @@
|
||||
/*
|
||||
* itcl.h --
|
||||
*
|
||||
* This file contains definitions for the C-implemeted part of a Itcl
|
||||
* this version of [incr Tcl] (Itcl) is a completely new implementation
|
||||
* based on TclOO extension of Tcl 8.5
|
||||
* It tries to provide the same interfaces as the original implementation
|
||||
* of Michael J. McLennan
|
||||
* Some small pieces of code are taken from that implementation
|
||||
*
|
||||
* Copyright (c) 2007 by Arnulf P. Wiedemann
|
||||
*
|
||||
* See the file "license.terms" for information on usage and redistribution of
|
||||
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
*/
|
||||
|
||||
/*
|
||||
* ------------------------------------------------------------------------
|
||||
* PACKAGE: [incr Tcl]
|
||||
* DESCRIPTION: Object-Oriented Extensions to Tcl
|
||||
*
|
||||
* [incr Tcl] provides object-oriented extensions to Tcl, much as
|
||||
* C++ provides object-oriented extensions to C. It provides a means
|
||||
* of encapsulating related procedures together with their shared data
|
||||
* in a local namespace that is hidden from the outside world. It
|
||||
* promotes code re-use through inheritance. More than anything else,
|
||||
* it encourages better organization of Tcl applications through the
|
||||
* object-oriented paradigm, leading to code that is easier to
|
||||
* understand and maintain.
|
||||
*
|
||||
* ADDING [incr Tcl] TO A Tcl-BASED APPLICATION:
|
||||
*
|
||||
* To add [incr Tcl] facilities to a Tcl application, modify the
|
||||
* Tcl_AppInit() routine as follows:
|
||||
*
|
||||
* 1) Include this header file near the top of the file containing
|
||||
* Tcl_AppInit():
|
||||
*
|
||||
* #include "itcl.h"
|
||||
*
|
||||
* 2) Within the body of Tcl_AppInit(), add the following lines:
|
||||
*
|
||||
* if (Itcl_Init(interp) == TCL_ERROR) {
|
||||
* return TCL_ERROR;
|
||||
* }
|
||||
*
|
||||
* 3) Link your application with libitcl.a
|
||||
*
|
||||
* NOTE: An example file "tclAppInit.c" containing the changes shown
|
||||
* above is included in this distribution.
|
||||
*
|
||||
*---------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#ifndef ITCL_H_INCLUDED
|
||||
#define ITCL_H_INCLUDED
|
||||
|
||||
#include <tcl.h>
|
||||
|
||||
#if (TCL_MAJOR_VERSION == 8) && (TCL_MINOR_VERSION < 6)
|
||||
# error Itcl 4 build requires tcl.h from Tcl 8.6 or later
|
||||
#endif
|
||||
|
||||
/*
|
||||
* For C++ compilers, use extern "C"
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef TCL_ALPHA_RELEASE
|
||||
# define TCL_ALPHA_RELEASE 0
|
||||
#endif
|
||||
#ifndef TCL_BETA_RELEASE
|
||||
# define TCL_BETA_RELEASE 1
|
||||
#endif
|
||||
#ifndef TCL_FINAL_RELEASE
|
||||
# define TCL_FINAL_RELEASE 2
|
||||
#endif
|
||||
|
||||
#define ITCL_MAJOR_VERSION 4
|
||||
#define ITCL_MINOR_VERSION 2
|
||||
#define ITCL_RELEASE_LEVEL TCL_FINAL_RELEASE
|
||||
#define ITCL_RELEASE_SERIAL 2
|
||||
|
||||
#define ITCL_VERSION "4.2"
|
||||
#define ITCL_PATCH_LEVEL "4.2.2"
|
||||
|
||||
|
||||
/*
|
||||
* A special definition used to allow this header file to be included from
|
||||
* windows resource files so that they can obtain version information.
|
||||
* RC_INVOKED is defined by default by the windows RC tool.
|
||||
*
|
||||
* Resource compilers don't like all the C stuff, like typedefs and function
|
||||
* declarations, that occur below, so block them out.
|
||||
*/
|
||||
|
||||
#ifndef RC_INVOKED
|
||||
|
||||
#define ITCL_NAMESPACE "::itcl"
|
||||
|
||||
#ifndef ITCLAPI
|
||||
# if defined(BUILD_itcl)
|
||||
# define ITCLAPI MODULE_SCOPE
|
||||
# else
|
||||
# define ITCLAPI extern
|
||||
# undef USE_ITCL_STUBS
|
||||
# define USE_ITCL_STUBS 1
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined(BUILD_itcl) && !defined(STATIC_BUILD)
|
||||
# define ITCL_EXTERN extern DLLEXPORT
|
||||
#else
|
||||
# define ITCL_EXTERN extern
|
||||
#endif
|
||||
|
||||
ITCL_EXTERN int Itcl_Init(Tcl_Interp *interp);
|
||||
ITCL_EXTERN int Itcl_SafeInit(Tcl_Interp *interp);
|
||||
|
||||
/*
|
||||
* Protection levels:
|
||||
*
|
||||
* ITCL_PUBLIC - accessible from any namespace
|
||||
* ITCL_PROTECTED - accessible from namespace that imports in "protected" mode
|
||||
* ITCL_PRIVATE - accessible only within the namespace that contains it
|
||||
*/
|
||||
#define ITCL_PUBLIC 1
|
||||
#define ITCL_PROTECTED 2
|
||||
#define ITCL_PRIVATE 3
|
||||
#define ITCL_DEFAULT_PROTECT 4
|
||||
|
||||
/*
|
||||
* Generic stack.
|
||||
*/
|
||||
typedef struct Itcl_Stack {
|
||||
ClientData *values; /* values on stack */
|
||||
int len; /* number of values on stack */
|
||||
int max; /* maximum size of stack */
|
||||
ClientData space[5]; /* initial space for stack data */
|
||||
} Itcl_Stack;
|
||||
|
||||
#define Itcl_GetStackSize(stackPtr) ((stackPtr)->len)
|
||||
|
||||
/*
|
||||
* Generic linked list.
|
||||
*/
|
||||
struct Itcl_List;
|
||||
typedef struct Itcl_ListElem {
|
||||
struct Itcl_List* owner; /* list containing this element */
|
||||
ClientData value; /* value associated with this element */
|
||||
struct Itcl_ListElem *prev; /* previous element in linked list */
|
||||
struct Itcl_ListElem *next; /* next element in linked list */
|
||||
} Itcl_ListElem;
|
||||
|
||||
typedef struct Itcl_List {
|
||||
int validate; /* validation stamp */
|
||||
int num; /* number of elements */
|
||||
struct Itcl_ListElem *head; /* previous element in linked list */
|
||||
struct Itcl_ListElem *tail; /* next element in linked list */
|
||||
} Itcl_List;
|
||||
|
||||
#define Itcl_FirstListElem(listPtr) ((listPtr)->head)
|
||||
#define Itcl_LastListElem(listPtr) ((listPtr)->tail)
|
||||
#define Itcl_NextListElem(elemPtr) ((elemPtr)->next)
|
||||
#define Itcl_PrevListElem(elemPtr) ((elemPtr)->prev)
|
||||
#define Itcl_GetListLength(listPtr) ((listPtr)->num)
|
||||
#define Itcl_GetListValue(elemPtr) ((elemPtr)->value)
|
||||
|
||||
/*
|
||||
* Token representing the state of an interpreter.
|
||||
*/
|
||||
typedef struct Itcl_InterpState_ *Itcl_InterpState;
|
||||
|
||||
|
||||
/*
|
||||
* Include all the public API, generated from itcl.decls.
|
||||
*/
|
||||
|
||||
#include "itclDecls.h"
|
||||
|
||||
#endif /* RC_INVOKED */
|
||||
|
||||
/*
|
||||
* end block for C++
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* ITCL_H_INCLUDED */
|
||||
33
.CondaPkg/env/include/itcl2TclOO.h
vendored
Normal file
33
.CondaPkg/env/include/itcl2TclOO.h
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
|
||||
#ifndef _TCLINT
|
||||
typedef void (ProcErrorProc)(Tcl_Interp *interp, Tcl_Obj *procNameObj);
|
||||
#endif
|
||||
|
||||
#ifndef TCL_OO_INTERNAL_H
|
||||
typedef int (TclOO_PreCallProc)(ClientData clientData, Tcl_Interp *interp,
|
||||
Tcl_ObjectContext context, Tcl_CallFrame *framePtr, int *isFinished);
|
||||
typedef int (TclOO_PostCallProc)(ClientData clientData, Tcl_Interp *interp,
|
||||
Tcl_ObjectContext context, Tcl_Namespace *namespacePtr, int result);
|
||||
#endif
|
||||
|
||||
MODULE_SCOPE int Itcl_NRRunCallbacks(Tcl_Interp *interp, void *rootPtr);
|
||||
MODULE_SCOPE void * Itcl_GetCurrentCallbackPtr(Tcl_Interp *interp);
|
||||
MODULE_SCOPE Tcl_Method Itcl_NewProcClassMethod(Tcl_Interp *interp, Tcl_Class clsPtr,
|
||||
TclOO_PreCallProc *preCallPtr, TclOO_PostCallProc *postCallPtr,
|
||||
ProcErrorProc *errProc, ClientData clientData, Tcl_Obj *nameObj,
|
||||
Tcl_Obj *argsObj, Tcl_Obj *bodyObj, ClientData *clientData2);
|
||||
MODULE_SCOPE Tcl_Method Itcl_NewProcMethod(Tcl_Interp *interp, Tcl_Object oPtr,
|
||||
TclOO_PreCallProc *preCallPtr, TclOO_PostCallProc *postCallPtr,
|
||||
ProcErrorProc *errProc, ClientData clientData, Tcl_Obj *nameObj,
|
||||
Tcl_Obj *argsObj, Tcl_Obj *bodyObj, ClientData *clientData2);
|
||||
MODULE_SCOPE int Itcl_PublicObjectCmd(ClientData clientData, Tcl_Interp *interp,
|
||||
Tcl_Class clsPtr, int objc, Tcl_Obj *const *objv);
|
||||
MODULE_SCOPE Tcl_Method Itcl_NewForwardClassMethod(Tcl_Interp *interp,
|
||||
Tcl_Class clsPtr, int flags, Tcl_Obj *nameObj, Tcl_Obj *prefixObj);
|
||||
MODULE_SCOPE int Itcl_SelfCmd(ClientData clientData, Tcl_Interp *interp,
|
||||
int objc, Tcl_Obj *const *objv);
|
||||
MODULE_SCOPE int Itcl_IsMethodCallFrame(Tcl_Interp *interp);
|
||||
MODULE_SCOPE int Itcl_InvokeEnsembleMethod(Tcl_Interp *interp, Tcl_Namespace *nsPtr,
|
||||
Tcl_Obj *namePtr, Tcl_Proc *procPtr, int objc, Tcl_Obj *const *objv);
|
||||
MODULE_SCOPE int Itcl_InvokeProcedureMethod(ClientData clientData, Tcl_Interp *interp,
|
||||
int objc, Tcl_Obj *const *objv);
|
||||
211
.CondaPkg/env/include/itclDecls.h
vendored
Normal file
211
.CondaPkg/env/include/itclDecls.h
vendored
Normal file
@@ -0,0 +1,211 @@
|
||||
/*
|
||||
* This file is (mostly) automatically generated from itcl.decls.
|
||||
*/
|
||||
|
||||
#ifndef _ITCLDECLS
|
||||
#define _ITCLDECLS
|
||||
|
||||
#if defined(USE_ITCL_STUBS)
|
||||
|
||||
ITCLAPI const char *Itcl_InitStubs(
|
||||
Tcl_Interp *, const char *version, int exact);
|
||||
#else
|
||||
|
||||
#define Itcl_InitStubs(interp, version, exact) Tcl_PkgRequireEx(interp,"itcl",version,exact,NULL)
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* !BEGIN!: Do not edit below this line. */
|
||||
|
||||
#define ITCL_STUBS_EPOCH 0
|
||||
#define ITCL_STUBS_REVISION 152
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Exported function declarations:
|
||||
*/
|
||||
|
||||
/* Slot 0 is reserved */
|
||||
/* Slot 1 is reserved */
|
||||
/* 2 */
|
||||
ITCLAPI int Itcl_RegisterC(Tcl_Interp *interp, const char *name,
|
||||
Tcl_CmdProc *proc, ClientData clientData,
|
||||
Tcl_CmdDeleteProc *deleteProc);
|
||||
/* 3 */
|
||||
ITCLAPI int Itcl_RegisterObjC(Tcl_Interp *interp,
|
||||
const char *name, Tcl_ObjCmdProc *proc,
|
||||
ClientData clientData,
|
||||
Tcl_CmdDeleteProc *deleteProc);
|
||||
/* 4 */
|
||||
ITCLAPI int Itcl_FindC(Tcl_Interp *interp, const char *name,
|
||||
Tcl_CmdProc **argProcPtr,
|
||||
Tcl_ObjCmdProc **objProcPtr,
|
||||
ClientData *cDataPtr);
|
||||
/* 5 */
|
||||
ITCLAPI void Itcl_InitStack(Itcl_Stack *stack);
|
||||
/* 6 */
|
||||
ITCLAPI void Itcl_DeleteStack(Itcl_Stack *stack);
|
||||
/* 7 */
|
||||
ITCLAPI void Itcl_PushStack(ClientData cdata, Itcl_Stack *stack);
|
||||
/* 8 */
|
||||
ITCLAPI ClientData Itcl_PopStack(Itcl_Stack *stack);
|
||||
/* 9 */
|
||||
ITCLAPI ClientData Itcl_PeekStack(Itcl_Stack *stack);
|
||||
/* 10 */
|
||||
ITCLAPI ClientData Itcl_GetStackValue(Itcl_Stack *stack, int pos);
|
||||
/* 11 */
|
||||
ITCLAPI void Itcl_InitList(Itcl_List *listPtr);
|
||||
/* 12 */
|
||||
ITCLAPI void Itcl_DeleteList(Itcl_List *listPtr);
|
||||
/* 13 */
|
||||
ITCLAPI Itcl_ListElem * Itcl_CreateListElem(Itcl_List *listPtr);
|
||||
/* 14 */
|
||||
ITCLAPI Itcl_ListElem * Itcl_DeleteListElem(Itcl_ListElem *elemPtr);
|
||||
/* 15 */
|
||||
ITCLAPI Itcl_ListElem * Itcl_InsertList(Itcl_List *listPtr, ClientData val);
|
||||
/* 16 */
|
||||
ITCLAPI Itcl_ListElem * Itcl_InsertListElem(Itcl_ListElem *pos,
|
||||
ClientData val);
|
||||
/* 17 */
|
||||
ITCLAPI Itcl_ListElem * Itcl_AppendList(Itcl_List *listPtr, ClientData val);
|
||||
/* 18 */
|
||||
ITCLAPI Itcl_ListElem * Itcl_AppendListElem(Itcl_ListElem *pos,
|
||||
ClientData val);
|
||||
/* 19 */
|
||||
ITCLAPI void Itcl_SetListValue(Itcl_ListElem *elemPtr,
|
||||
ClientData val);
|
||||
/* 20 */
|
||||
ITCLAPI void Itcl_EventuallyFree(ClientData cdata,
|
||||
Tcl_FreeProc *fproc);
|
||||
/* 21 */
|
||||
ITCLAPI void Itcl_PreserveData(ClientData cdata);
|
||||
/* 22 */
|
||||
ITCLAPI void Itcl_ReleaseData(ClientData cdata);
|
||||
/* 23 */
|
||||
ITCLAPI Itcl_InterpState Itcl_SaveInterpState(Tcl_Interp *interp, int status);
|
||||
/* 24 */
|
||||
ITCLAPI int Itcl_RestoreInterpState(Tcl_Interp *interp,
|
||||
Itcl_InterpState state);
|
||||
/* 25 */
|
||||
ITCLAPI void Itcl_DiscardInterpState(Itcl_InterpState state);
|
||||
/* 26 */
|
||||
ITCLAPI void * Itcl_Alloc(size_t size);
|
||||
/* 27 */
|
||||
ITCLAPI void Itcl_Free(void *ptr);
|
||||
|
||||
typedef struct {
|
||||
const struct ItclIntStubs *itclIntStubs;
|
||||
} ItclStubHooks;
|
||||
|
||||
typedef struct ItclStubs {
|
||||
int magic;
|
||||
int epoch;
|
||||
int revision;
|
||||
const ItclStubHooks *hooks;
|
||||
|
||||
void (*reserved0)(void);
|
||||
void (*reserved1)(void);
|
||||
int (*itcl_RegisterC) (Tcl_Interp *interp, const char *name, Tcl_CmdProc *proc, ClientData clientData, Tcl_CmdDeleteProc *deleteProc); /* 2 */
|
||||
int (*itcl_RegisterObjC) (Tcl_Interp *interp, const char *name, Tcl_ObjCmdProc *proc, ClientData clientData, Tcl_CmdDeleteProc *deleteProc); /* 3 */
|
||||
int (*itcl_FindC) (Tcl_Interp *interp, const char *name, Tcl_CmdProc **argProcPtr, Tcl_ObjCmdProc **objProcPtr, ClientData *cDataPtr); /* 4 */
|
||||
void (*itcl_InitStack) (Itcl_Stack *stack); /* 5 */
|
||||
void (*itcl_DeleteStack) (Itcl_Stack *stack); /* 6 */
|
||||
void (*itcl_PushStack) (ClientData cdata, Itcl_Stack *stack); /* 7 */
|
||||
ClientData (*itcl_PopStack) (Itcl_Stack *stack); /* 8 */
|
||||
ClientData (*itcl_PeekStack) (Itcl_Stack *stack); /* 9 */
|
||||
ClientData (*itcl_GetStackValue) (Itcl_Stack *stack, int pos); /* 10 */
|
||||
void (*itcl_InitList) (Itcl_List *listPtr); /* 11 */
|
||||
void (*itcl_DeleteList) (Itcl_List *listPtr); /* 12 */
|
||||
Itcl_ListElem * (*itcl_CreateListElem) (Itcl_List *listPtr); /* 13 */
|
||||
Itcl_ListElem * (*itcl_DeleteListElem) (Itcl_ListElem *elemPtr); /* 14 */
|
||||
Itcl_ListElem * (*itcl_InsertList) (Itcl_List *listPtr, ClientData val); /* 15 */
|
||||
Itcl_ListElem * (*itcl_InsertListElem) (Itcl_ListElem *pos, ClientData val); /* 16 */
|
||||
Itcl_ListElem * (*itcl_AppendList) (Itcl_List *listPtr, ClientData val); /* 17 */
|
||||
Itcl_ListElem * (*itcl_AppendListElem) (Itcl_ListElem *pos, ClientData val); /* 18 */
|
||||
void (*itcl_SetListValue) (Itcl_ListElem *elemPtr, ClientData val); /* 19 */
|
||||
void (*itcl_EventuallyFree) (ClientData cdata, Tcl_FreeProc *fproc); /* 20 */
|
||||
void (*itcl_PreserveData) (ClientData cdata); /* 21 */
|
||||
void (*itcl_ReleaseData) (ClientData cdata); /* 22 */
|
||||
Itcl_InterpState (*itcl_SaveInterpState) (Tcl_Interp *interp, int status); /* 23 */
|
||||
int (*itcl_RestoreInterpState) (Tcl_Interp *interp, Itcl_InterpState state); /* 24 */
|
||||
void (*itcl_DiscardInterpState) (Itcl_InterpState state); /* 25 */
|
||||
void * (*itcl_Alloc) (size_t size); /* 26 */
|
||||
void (*itcl_Free) (void *ptr); /* 27 */
|
||||
} ItclStubs;
|
||||
|
||||
extern const ItclStubs *itclStubsPtr;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(USE_ITCL_STUBS)
|
||||
|
||||
/*
|
||||
* Inline function declarations:
|
||||
*/
|
||||
|
||||
/* Slot 0 is reserved */
|
||||
/* Slot 1 is reserved */
|
||||
#define Itcl_RegisterC \
|
||||
(itclStubsPtr->itcl_RegisterC) /* 2 */
|
||||
#define Itcl_RegisterObjC \
|
||||
(itclStubsPtr->itcl_RegisterObjC) /* 3 */
|
||||
#define Itcl_FindC \
|
||||
(itclStubsPtr->itcl_FindC) /* 4 */
|
||||
#define Itcl_InitStack \
|
||||
(itclStubsPtr->itcl_InitStack) /* 5 */
|
||||
#define Itcl_DeleteStack \
|
||||
(itclStubsPtr->itcl_DeleteStack) /* 6 */
|
||||
#define Itcl_PushStack \
|
||||
(itclStubsPtr->itcl_PushStack) /* 7 */
|
||||
#define Itcl_PopStack \
|
||||
(itclStubsPtr->itcl_PopStack) /* 8 */
|
||||
#define Itcl_PeekStack \
|
||||
(itclStubsPtr->itcl_PeekStack) /* 9 */
|
||||
#define Itcl_GetStackValue \
|
||||
(itclStubsPtr->itcl_GetStackValue) /* 10 */
|
||||
#define Itcl_InitList \
|
||||
(itclStubsPtr->itcl_InitList) /* 11 */
|
||||
#define Itcl_DeleteList \
|
||||
(itclStubsPtr->itcl_DeleteList) /* 12 */
|
||||
#define Itcl_CreateListElem \
|
||||
(itclStubsPtr->itcl_CreateListElem) /* 13 */
|
||||
#define Itcl_DeleteListElem \
|
||||
(itclStubsPtr->itcl_DeleteListElem) /* 14 */
|
||||
#define Itcl_InsertList \
|
||||
(itclStubsPtr->itcl_InsertList) /* 15 */
|
||||
#define Itcl_InsertListElem \
|
||||
(itclStubsPtr->itcl_InsertListElem) /* 16 */
|
||||
#define Itcl_AppendList \
|
||||
(itclStubsPtr->itcl_AppendList) /* 17 */
|
||||
#define Itcl_AppendListElem \
|
||||
(itclStubsPtr->itcl_AppendListElem) /* 18 */
|
||||
#define Itcl_SetListValue \
|
||||
(itclStubsPtr->itcl_SetListValue) /* 19 */
|
||||
#define Itcl_EventuallyFree \
|
||||
(itclStubsPtr->itcl_EventuallyFree) /* 20 */
|
||||
#define Itcl_PreserveData \
|
||||
(itclStubsPtr->itcl_PreserveData) /* 21 */
|
||||
#define Itcl_ReleaseData \
|
||||
(itclStubsPtr->itcl_ReleaseData) /* 22 */
|
||||
#define Itcl_SaveInterpState \
|
||||
(itclStubsPtr->itcl_SaveInterpState) /* 23 */
|
||||
#define Itcl_RestoreInterpState \
|
||||
(itclStubsPtr->itcl_RestoreInterpState) /* 24 */
|
||||
#define Itcl_DiscardInterpState \
|
||||
(itclStubsPtr->itcl_DiscardInterpState) /* 25 */
|
||||
#define Itcl_Alloc \
|
||||
(itclStubsPtr->itcl_Alloc) /* 26 */
|
||||
#define Itcl_Free \
|
||||
(itclStubsPtr->itcl_Free) /* 27 */
|
||||
|
||||
#endif /* defined(USE_ITCL_STUBS) */
|
||||
|
||||
/* !END!: Do not edit above this line. */
|
||||
|
||||
#endif /* _ITCLDECLS */
|
||||
843
.CondaPkg/env/include/itclInt.h
vendored
Normal file
843
.CondaPkg/env/include/itclInt.h
vendored
Normal file
@@ -0,0 +1,843 @@
|
||||
/*
|
||||
* itclInt.h --
|
||||
*
|
||||
* This file contains internal definitions for the C-implemented part of a
|
||||
* Itcl
|
||||
*
|
||||
* Copyright (c) 2007 by Arnulf P. Wiedemann
|
||||
*
|
||||
* See the file "license.terms" for information on usage and redistribution of
|
||||
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_UNISTD_H
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
#ifdef HAVE_STDINT_H
|
||||
#include <stdint.h>
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Used to tag functions that are only to be visible within the module being
|
||||
* built and not outside it (where this is supported by the linker).
|
||||
*/
|
||||
|
||||
#ifndef MODULE_SCOPE
|
||||
# ifdef __cplusplus
|
||||
# define MODULE_SCOPE extern "C"
|
||||
# else
|
||||
# define MODULE_SCOPE extern
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
#include <tclOO.h>
|
||||
#include "itcl.h"
|
||||
#include "itclMigrate2TclCore.h"
|
||||
#include "itclTclIntStubsFcn.h"
|
||||
|
||||
/*
|
||||
* Utility macros: STRINGIFY takes an argument and wraps it in "" (double
|
||||
* quotation marks).
|
||||
*/
|
||||
|
||||
#ifndef STRINGIFY
|
||||
# define STRINGIFY(x) STRINGIFY1(x)
|
||||
# define STRINGIFY1(x) #x
|
||||
#endif
|
||||
|
||||
/*
|
||||
* MSVC 8.0 started to mark many standard C library functions depreciated
|
||||
* including the *printf family and others. Tell it to shut up.
|
||||
* (_MSC_VER is 1200 for VC6, 1300 or 1310 for vc7.net, 1400 for 8.0)
|
||||
*/
|
||||
#if defined(_MSC_VER)
|
||||
# pragma warning(disable:4244)
|
||||
# if _MSC_VER >= 1400
|
||||
# pragma warning(disable:4267)
|
||||
# pragma warning(disable:4996)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef JOIN
|
||||
# define JOIN(a,b) JOIN1(a,b)
|
||||
# define JOIN1(a,b) a##b
|
||||
#endif
|
||||
|
||||
#ifndef TCL_UNUSED
|
||||
# if defined(__cplusplus)
|
||||
# define TCL_UNUSED(T) T
|
||||
# else
|
||||
# define TCL_UNUSED(T) T JOIN(dummy, __LINE__)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Since the Tcl/Tk distribution doesn't perform any asserts,
|
||||
* dynamic loading can fail to find the __assert function.
|
||||
* As a workaround, we'll include our own.
|
||||
*/
|
||||
|
||||
#undef assert
|
||||
#if defined(NDEBUG) && !defined(DEBUG)
|
||||
#define assert(EX) ((void)0)
|
||||
#else /* !NDEBUG || DEBUG */
|
||||
#define assert(EX) (void)((EX) || (Itcl_Assert(STRINGIFY(EX), __FILE__, __LINE__), 0))
|
||||
#endif
|
||||
|
||||
#define ITCL_INTERP_DATA "itcl_data"
|
||||
#define ITCL_TK_VERSION "8.6"
|
||||
|
||||
/*
|
||||
* Convenience macros for iterating through hash tables. FOREACH_HASH_DECLS
|
||||
* sets up the declarations needed for the main macro, FOREACH_HASH, which
|
||||
* does the actual iteration. FOREACH_HASH_VALUE is a restricted version that
|
||||
* only iterates over values.
|
||||
*/
|
||||
|
||||
#define FOREACH_HASH_DECLS \
|
||||
Tcl_HashEntry *hPtr;Tcl_HashSearch search
|
||||
#define FOREACH_HASH(key,val,tablePtr) \
|
||||
for(hPtr=Tcl_FirstHashEntry((tablePtr),&search); hPtr!=NULL ? \
|
||||
(*(void **)&(key)=Tcl_GetHashKey((tablePtr),hPtr),\
|
||||
*(void **)&(val)=Tcl_GetHashValue(hPtr),1):0; hPtr=Tcl_NextHashEntry(&search))
|
||||
#define FOREACH_HASH_VALUE(val,tablePtr) \
|
||||
for(hPtr=Tcl_FirstHashEntry((tablePtr),&search); hPtr!=NULL ? \
|
||||
(*(void **)&(val)=Tcl_GetHashValue(hPtr),1):0;hPtr=Tcl_NextHashEntry(&search))
|
||||
|
||||
/*
|
||||
* What sort of size of things we like to allocate.
|
||||
*/
|
||||
|
||||
#define ALLOC_CHUNK 8
|
||||
|
||||
#define ITCL_INT_NAMESPACE ITCL_NAMESPACE"::internal"
|
||||
#define ITCL_INTDICTS_NAMESPACE ITCL_INT_NAMESPACE"::dicts"
|
||||
#define ITCL_VARIABLES_NAMESPACE ITCL_INT_NAMESPACE"::variables"
|
||||
#define ITCL_COMMANDS_NAMESPACE ITCL_INT_NAMESPACE"::commands"
|
||||
|
||||
typedef struct ItclFoundation {
|
||||
Itcl_Stack methodCallStack;
|
||||
Tcl_Command dispatchCommand;
|
||||
} ItclFoundation;
|
||||
|
||||
typedef struct ItclArgList {
|
||||
struct ItclArgList *nextPtr; /* pointer to next argument */
|
||||
Tcl_Obj *namePtr; /* name of the argument */
|
||||
Tcl_Obj *defaultValuePtr; /* default value or NULL if none */
|
||||
} ItclArgList;
|
||||
|
||||
/*
|
||||
* Common info for managing all known objects.
|
||||
* Each interpreter has one of these data structures stored as
|
||||
* clientData in the "itcl" namespace. It is also accessible
|
||||
* as associated data via the key ITCL_INTERP_DATA.
|
||||
*/
|
||||
struct ItclClass;
|
||||
struct ItclObject;
|
||||
struct ItclMemberFunc;
|
||||
struct EnsembleInfo;
|
||||
struct ItclDelegatedOption;
|
||||
struct ItclDelegatedFunction;
|
||||
|
||||
typedef struct ItclObjectInfo {
|
||||
Tcl_Interp *interp; /* interpreter that manages this info */
|
||||
Tcl_HashTable objects; /* list of all known objects key is
|
||||
* ioPtr */
|
||||
Tcl_HashTable objectCmds; /* list of known objects using accessCmd */
|
||||
Tcl_HashTable unused5; /* list of known objects using namePtr */
|
||||
Tcl_HashTable classes; /* list of all known classes,
|
||||
* key is iclsPtr */
|
||||
Tcl_HashTable nameClasses; /* maps from fullNamePtr to iclsPtr */
|
||||
Tcl_HashTable namespaceClasses; /* maps from nsPtr to iclsPtr */
|
||||
Tcl_HashTable procMethods; /* maps from procPtr to mFunc */
|
||||
Tcl_HashTable instances; /* maps from instanceNumber to ioPtr */
|
||||
Tcl_HashTable unused8; /* maps from ioPtr to instanceNumber */
|
||||
Tcl_HashTable frameContext; /* maps frame to context stack */
|
||||
Tcl_HashTable classTypes; /* maps from class type i.e. "widget"
|
||||
* to define value i.e. ITCL_WIDGET */
|
||||
int protection; /* protection level currently in effect */
|
||||
int useOldResolvers; /* whether to use the "old" style
|
||||
* resolvers or the CallFrame resolvers */
|
||||
Itcl_Stack clsStack; /* stack of class definitions currently
|
||||
* being parsed */
|
||||
Itcl_Stack unused; /* Removed */
|
||||
Itcl_Stack unused6; /* obsolete field */
|
||||
struct ItclObject *currIoPtr; /* object currently being constructed
|
||||
* set only during calling of constructors
|
||||
* otherwise NULL */
|
||||
Tcl_ObjectMetadataType *class_meta_type;
|
||||
/* type for getting the Itcl class info
|
||||
* from a TclOO Tcl_Object */
|
||||
const Tcl_ObjectMetadataType *object_meta_type;
|
||||
/* type for getting the Itcl object info
|
||||
* from a TclOO Tcl_Object */
|
||||
Tcl_Object clazzObjectPtr; /* the root object of Itcl */
|
||||
Tcl_Class clazzClassPtr; /* the root class of Itcl */
|
||||
struct EnsembleInfo *ensembleInfo;
|
||||
struct ItclClass *currContextIclsPtr;
|
||||
/* context class for delegated option
|
||||
* handling */
|
||||
int currClassFlags; /* flags for the class just in creation */
|
||||
int buildingWidget; /* set if in construction of a widget */
|
||||
int unparsedObjc; /* number options not parsed by
|
||||
ItclExtendedConfigure/-Cget function */
|
||||
Tcl_Obj **unparsedObjv; /* options not parsed by
|
||||
ItclExtendedConfigure/-Cget function */
|
||||
int functionFlags; /* used for creating of ItclMemberCode */
|
||||
int unused7;
|
||||
struct ItclDelegatedOption *currIdoPtr;
|
||||
/* the current delegated option info */
|
||||
int inOptionHandling; /* used to indicate for type/widget ...
|
||||
* that there is an option processing
|
||||
* and methods are allowed to be called */
|
||||
/* these are the Tcl_Obj Ptrs for the clazz unknown procedure */
|
||||
/* need to store them to be able to free them at the end */
|
||||
int itclWidgetInitted; /* set to 1 if itclWidget.tcl has already
|
||||
* been called
|
||||
*/
|
||||
int itclHullCmdsInitted; /* set to 1 if itclHullCmds.tcl has already
|
||||
* been called
|
||||
*/
|
||||
Tcl_Obj *unused2;
|
||||
Tcl_Obj *unused3;
|
||||
Tcl_Obj *unused4;
|
||||
Tcl_Obj *infoVarsPtr;
|
||||
Tcl_Obj *unused9;
|
||||
Tcl_Obj *infoVars4Ptr;
|
||||
Tcl_Obj *typeDestructorArgumentPtr;
|
||||
struct ItclObject *lastIoPtr; /* last object constructed */
|
||||
Tcl_Command infoCmd;
|
||||
} ItclObjectInfo;
|
||||
|
||||
typedef struct EnsembleInfo {
|
||||
Tcl_HashTable ensembles; /* list of all known ensembles */
|
||||
Tcl_HashTable subEnsembles; /* list of all known subensembles */
|
||||
int numEnsembles;
|
||||
Tcl_Namespace *ensembleNsPtr;
|
||||
} EnsembleInfo;
|
||||
/*
|
||||
* Representation for each [incr Tcl] class.
|
||||
*/
|
||||
#define ITCL_CLASS 0x1
|
||||
#define ITCL_TYPE 0x2
|
||||
#define ITCL_WIDGET 0x4
|
||||
#define ITCL_WIDGETADAPTOR 0x8
|
||||
#define ITCL_ECLASS 0x10
|
||||
#define ITCL_NWIDGET 0x20
|
||||
#define ITCL_WIDGET_FRAME 0x40
|
||||
#define ITCL_WIDGET_LABEL_FRAME 0x80
|
||||
#define ITCL_WIDGET_TOPLEVEL 0x100
|
||||
#define ITCL_WIDGET_TTK_FRAME 0x200
|
||||
#define ITCL_WIDGET_TTK_LABEL_FRAME 0x400
|
||||
#define ITCL_WIDGET_TTK_TOPLEVEL 0x800
|
||||
#define ITCL_CLASS_IS_DELETED 0x1000
|
||||
#define ITCL_CLASS_IS_DESTROYED 0x2000
|
||||
#define ITCL_CLASS_NS_IS_DESTROYED 0x4000
|
||||
#define ITCL_CLASS_IS_RENAMED 0x8000 /* unused */
|
||||
#define ITCL_CLASS_IS_FREED 0x10000
|
||||
#define ITCL_CLASS_DERIVED_RELEASED 0x20000
|
||||
#define ITCL_CLASS_NS_TEARDOWN 0x40000
|
||||
#define ITCL_CLASS_NO_VARNS_DELETE 0x80000
|
||||
#define ITCL_CLASS_SHOULD_VARNS_DELETE 0x100000
|
||||
#define ITCL_CLASS_DESTRUCTOR_CALLED 0x400000
|
||||
|
||||
|
||||
typedef struct ItclClass {
|
||||
Tcl_Obj *namePtr; /* class name */
|
||||
Tcl_Obj *fullNamePtr; /* fully qualified class name */
|
||||
Tcl_Interp *interp; /* interpreter that manages this info */
|
||||
Tcl_Namespace *nsPtr; /* namespace representing class scope */
|
||||
Tcl_Command accessCmd; /* access command for creating instances */
|
||||
Tcl_Command thisCmd; /* needed for deletion of class */
|
||||
|
||||
struct ItclObjectInfo *infoPtr;
|
||||
/* info about all known objects
|
||||
* and other stuff like stacks */
|
||||
Itcl_List bases; /* list of base classes */
|
||||
Itcl_List derived; /* list of all derived classes */
|
||||
Tcl_HashTable heritage; /* table of all base classes. Look up
|
||||
* by pointer to class definition. This
|
||||
* provides fast lookup for inheritance
|
||||
* tests. */
|
||||
Tcl_Obj *initCode; /* initialization code for new objs */
|
||||
Tcl_HashTable variables; /* definitions for all data members
|
||||
in this class. Look up simple string
|
||||
names and get back ItclVariable* ptrs */
|
||||
Tcl_HashTable options; /* definitions for all option members
|
||||
in this class. Look up simple string
|
||||
names and get back ItclOption* ptrs */
|
||||
Tcl_HashTable components; /* definitions for all component members
|
||||
in this class. Look up simple string
|
||||
names and get back ItclComponent* ptrs */
|
||||
Tcl_HashTable functions; /* definitions for all member functions
|
||||
in this class. Look up simple string
|
||||
names and get back ItclMemberFunc* ptrs */
|
||||
Tcl_HashTable delegatedOptions; /* definitions for all delegated options
|
||||
in this class. Look up simple string
|
||||
names and get back
|
||||
ItclDelegatedOption * ptrs */
|
||||
Tcl_HashTable delegatedFunctions; /* definitions for all delegated methods
|
||||
or procs in this class. Look up simple
|
||||
string names and get back
|
||||
ItclDelegatedFunction * ptrs */
|
||||
Tcl_HashTable methodVariables; /* definitions for all methodvariable members
|
||||
in this class. Look up simple string
|
||||
names and get back
|
||||
ItclMethodVariable* ptrs */
|
||||
int numInstanceVars; /* number of instance vars in variables
|
||||
table */
|
||||
Tcl_HashTable classCommons; /* used for storing variable namespace
|
||||
* string for Tcl_Resolve */
|
||||
Tcl_HashTable resolveVars; /* all possible names for variables in
|
||||
* this class (e.g., x, foo::x, etc.) */
|
||||
Tcl_HashTable resolveCmds; /* all possible names for functions in
|
||||
* this class (e.g., x, foo::x, etc.) */
|
||||
Tcl_HashTable contextCache; /* cache for function contexts */
|
||||
struct ItclMemberFunc *unused2;
|
||||
/* the class constructor or NULL */
|
||||
struct ItclMemberFunc *unused3;
|
||||
/* the class destructor or NULL */
|
||||
struct ItclMemberFunc *unused1;
|
||||
Tcl_Resolve *resolvePtr;
|
||||
Tcl_Obj *widgetClassPtr; /* class name for widget if class is a
|
||||
* ::itcl::widget */
|
||||
Tcl_Obj *hullTypePtr; /* hulltype name for widget if class is a
|
||||
* ::itcl::widget */
|
||||
Tcl_Object oPtr; /* TclOO class object */
|
||||
Tcl_Class clsPtr; /* TclOO class */
|
||||
int numCommons; /* number of commons in this class */
|
||||
int numVariables; /* number of variables in this class */
|
||||
int numOptions; /* number of options in this class */
|
||||
int unique; /* unique number for #auto generation */
|
||||
int flags; /* maintains class status */
|
||||
int callRefCount; /* prevent deleting of class if refcount>1 */
|
||||
Tcl_Obj *typeConstructorPtr; /* initialization for types */
|
||||
int destructorHasBeenCalled; /* prevent multiple invocations of destrcutor */
|
||||
int refCount;
|
||||
} ItclClass;
|
||||
|
||||
typedef struct ItclHierIter {
|
||||
ItclClass *current; /* current position in hierarchy */
|
||||
Itcl_Stack stack; /* stack used for traversal */
|
||||
} ItclHierIter;
|
||||
|
||||
#define ITCL_OBJECT_IS_DELETED 0x01
|
||||
#define ITCL_OBJECT_IS_DESTRUCTED 0x02
|
||||
#define ITCL_OBJECT_IS_DESTROYED 0x04
|
||||
#define ITCL_OBJECT_IS_RENAMED 0x08
|
||||
#define ITCL_OBJECT_CLASS_DESTRUCTED 0x10
|
||||
#define ITCL_TCLOO_OBJECT_IS_DELETED 0x20
|
||||
#define ITCL_OBJECT_DESTRUCT_ERROR 0x40
|
||||
#define ITCL_OBJECT_SHOULD_VARNS_DELETE 0x80
|
||||
#define ITCL_OBJECT_ROOT_METHOD 0x8000
|
||||
|
||||
/*
|
||||
* Representation for each [incr Tcl] object.
|
||||
*/
|
||||
typedef struct ItclObject {
|
||||
ItclClass *iclsPtr; /* most-specific class */
|
||||
Tcl_Command accessCmd; /* object access command */
|
||||
|
||||
Tcl_HashTable* constructed; /* temp storage used during construction */
|
||||
Tcl_HashTable* destructed; /* temp storage used during destruction */
|
||||
Tcl_HashTable objectVariables;
|
||||
/* used for storing Tcl_Var entries for
|
||||
* variable resolving, key is ivPtr of
|
||||
* variable, value is varPtr */
|
||||
Tcl_HashTable objectOptions; /* definitions for all option members
|
||||
in this object. Look up option namePtr
|
||||
names and get back ItclOption* ptrs */
|
||||
Tcl_HashTable objectComponents; /* definitions for all component members
|
||||
in this object. Look up component namePtr
|
||||
names and get back ItclComponent* ptrs */
|
||||
Tcl_HashTable objectMethodVariables;
|
||||
/* definitions for all methodvariable members
|
||||
in this object. Look up methodvariable
|
||||
namePtr names and get back
|
||||
ItclMethodVariable* ptrs */
|
||||
Tcl_HashTable objectDelegatedOptions;
|
||||
/* definitions for all delegated option
|
||||
members in this object. Look up option
|
||||
namePtr names and get back
|
||||
ItclOption* ptrs */
|
||||
Tcl_HashTable objectDelegatedFunctions;
|
||||
/* definitions for all delegated function
|
||||
members in this object. Look up function
|
||||
namePtr names and get back
|
||||
ItclMemberFunc * ptrs */
|
||||
Tcl_HashTable contextCache; /* cache for function contexts */
|
||||
Tcl_Obj *namePtr;
|
||||
Tcl_Obj *origNamePtr; /* the original name before any rename */
|
||||
Tcl_Obj *createNamePtr; /* the temp name before any rename
|
||||
* mostly used for widgetadaptor
|
||||
* because that hijackes the name
|
||||
* often when installing the hull */
|
||||
Tcl_Interp *interp;
|
||||
ItclObjectInfo *infoPtr;
|
||||
Tcl_Obj *varNsNamePtr;
|
||||
Tcl_Object oPtr; /* the TclOO object */
|
||||
Tcl_Resolve *resolvePtr;
|
||||
int flags;
|
||||
int callRefCount; /* prevent deleting of object if refcount > 1 */
|
||||
Tcl_Obj *hullWindowNamePtr; /* the window path name for the hull
|
||||
* (before renaming in installhull) */
|
||||
int destructorHasBeenCalled; /* is set when the destructor is called
|
||||
* to avoid callin destructor twice */
|
||||
int noComponentTrace; /* don't call component traces if
|
||||
* setting components in DelegationInstall */
|
||||
int hadConstructorError; /* needed for multiple calls of CallItclObjectCmd */
|
||||
} ItclObject;
|
||||
|
||||
#define ITCL_IGNORE_ERRS 0x002 /* useful for construction/destruction */
|
||||
|
||||
typedef struct ItclResolveInfo {
|
||||
int flags;
|
||||
ItclClass *iclsPtr;
|
||||
ItclObject *ioPtr;
|
||||
} ItclResolveInfo;
|
||||
|
||||
#define ITCL_RESOLVE_CLASS 0x01
|
||||
#define ITCL_RESOLVE_OBJECT 0x02
|
||||
|
||||
/*
|
||||
* Implementation for any code body in an [incr Tcl] class.
|
||||
*/
|
||||
typedef struct ItclMemberCode {
|
||||
int flags; /* flags describing implementation */
|
||||
int argcount; /* number of args in arglist */
|
||||
int maxargcount; /* max number of args in arglist */
|
||||
Tcl_Obj *usagePtr; /* usage string for error messages */
|
||||
Tcl_Obj *argumentPtr; /* the function arguments */
|
||||
Tcl_Obj *bodyPtr; /* the function body */
|
||||
ItclArgList *argListPtr; /* the parsed arguments */
|
||||
union {
|
||||
Tcl_CmdProc *argCmd; /* (argc,argv) C implementation */
|
||||
Tcl_ObjCmdProc *objCmd; /* (objc,objv) C implementation */
|
||||
} cfunc;
|
||||
ClientData clientData; /* client data for C implementations */
|
||||
} ItclMemberCode;
|
||||
|
||||
/*
|
||||
* Flag bits for ItclMemberCode:
|
||||
*/
|
||||
#define ITCL_IMPLEMENT_NONE 0x001 /* no implementation */
|
||||
#define ITCL_IMPLEMENT_TCL 0x002 /* Tcl implementation */
|
||||
#define ITCL_IMPLEMENT_ARGCMD 0x004 /* (argc,argv) C implementation */
|
||||
#define ITCL_IMPLEMENT_OBJCMD 0x008 /* (objc,objv) C implementation */
|
||||
#define ITCL_IMPLEMENT_C 0x00c /* either kind of C implementation */
|
||||
|
||||
#define Itcl_IsMemberCodeImplemented(mcode) \
|
||||
(((mcode)->flags & ITCL_IMPLEMENT_NONE) == 0)
|
||||
|
||||
/*
|
||||
* Flag bits for ItclMember: functions and variables
|
||||
*/
|
||||
#define ITCL_COMMON 0x010 /* non-zero => is a "proc" or common
|
||||
* variable */
|
||||
|
||||
/*
|
||||
* Flag bits for ItclMember: functions
|
||||
*/
|
||||
#define ITCL_CONSTRUCTOR 0x020 /* non-zero => is a constructor */
|
||||
#define ITCL_DESTRUCTOR 0x040 /* non-zero => is a destructor */
|
||||
#define ITCL_ARG_SPEC 0x080 /* non-zero => has an argument spec */
|
||||
#define ITCL_BODY_SPEC 0x100 /* non-zero => has an body spec */
|
||||
#define ITCL_BUILTIN 0x400 /* non-zero => built-in method */
|
||||
#define ITCL_COMPONENT 0x800 /* non-zero => component */
|
||||
#define ITCL_TYPE_METHOD 0x1000 /* non-zero => typemethod */
|
||||
#define ITCL_METHOD 0x2000 /* non-zero => method */
|
||||
|
||||
/*
|
||||
* Flag bits for ItclMember: variables
|
||||
*/
|
||||
#define ITCL_THIS_VAR 0x20 /* non-zero => built-in "this" variable */
|
||||
#define ITCL_OPTIONS_VAR 0x40 /* non-zero => built-in "itcl_options"
|
||||
* variable */
|
||||
#define ITCL_TYPE_VAR 0x80 /* non-zero => built-in "type" variable */
|
||||
/* no longer used ??? */
|
||||
#define ITCL_SELF_VAR 0x100 /* non-zero => built-in "self" variable */
|
||||
#define ITCL_SELFNS_VAR 0x200 /* non-zero => built-in "selfns"
|
||||
* variable */
|
||||
#define ITCL_WIN_VAR 0x400 /* non-zero => built-in "win" variable */
|
||||
#define ITCL_COMPONENT_VAR 0x800 /* non-zero => component variable */
|
||||
#define ITCL_HULL_VAR 0x1000 /* non-zero => built-in "itcl_hull"
|
||||
* variable */
|
||||
#define ITCL_OPTION_READONLY 0x2000 /* non-zero => readonly */
|
||||
#define ITCL_VARIABLE 0x4000 /* non-zero => normal variable */
|
||||
#define ITCL_TYPE_VARIABLE 0x8000 /* non-zero => typevariable */
|
||||
#define ITCL_OPTION_INITTED 0x10000 /* non-zero => option has been initialized */
|
||||
#define ITCL_OPTION_COMP_VAR 0x20000 /* variable to collect option components of extendedclass */
|
||||
|
||||
/*
|
||||
* Instance components.
|
||||
*/
|
||||
struct ItclVariable;
|
||||
typedef struct ItclComponent {
|
||||
Tcl_Obj *namePtr; /* member name */
|
||||
struct ItclVariable *ivPtr; /* variable for this component */
|
||||
int flags;
|
||||
int haveKeptOptions;
|
||||
Tcl_HashTable keptOptions; /* table of options to keep */
|
||||
} ItclComponent;
|
||||
|
||||
#define ITCL_COMPONENT_INHERIT 0x01
|
||||
#define ITCL_COMPONENT_PUBLIC 0x02
|
||||
|
||||
typedef struct ItclDelegatedFunction {
|
||||
Tcl_Obj *namePtr;
|
||||
ItclComponent *icPtr;
|
||||
Tcl_Obj *asPtr;
|
||||
Tcl_Obj *usingPtr;
|
||||
Tcl_HashTable exceptions;
|
||||
int flags;
|
||||
} ItclDelegatedFunction;
|
||||
|
||||
/*
|
||||
* Representation of member functions in an [incr Tcl] class.
|
||||
*/
|
||||
typedef struct ItclMemberFunc {
|
||||
Tcl_Obj* namePtr; /* member name */
|
||||
Tcl_Obj* fullNamePtr; /* member name with "class::" qualifier */
|
||||
ItclClass* iclsPtr; /* class containing this member */
|
||||
int protection; /* protection level */
|
||||
int flags; /* flags describing member (see above) */
|
||||
ItclObjectInfo *infoPtr;
|
||||
ItclMemberCode *codePtr; /* code associated with member */
|
||||
Tcl_Command accessCmd; /* Tcl command installed for this function */
|
||||
int argcount; /* number of args in arglist */
|
||||
int maxargcount; /* max number of args in arglist */
|
||||
Tcl_Obj *usagePtr; /* usage string for error messages */
|
||||
Tcl_Obj *argumentPtr; /* the function arguments */
|
||||
Tcl_Obj *builtinArgumentPtr; /* the function arguments for builtin functions */
|
||||
Tcl_Obj *origArgsPtr; /* the argument string of the original definition */
|
||||
Tcl_Obj *bodyPtr; /* the function body */
|
||||
ItclArgList *argListPtr; /* the parsed arguments */
|
||||
ItclClass *declaringClassPtr; /* the class which declared the method/proc */
|
||||
ClientData tmPtr; /* TclOO methodPtr */
|
||||
ItclDelegatedFunction *idmPtr;
|
||||
/* if the function is delegated != NULL */
|
||||
} ItclMemberFunc;
|
||||
|
||||
/*
|
||||
* Instance variables.
|
||||
*/
|
||||
typedef struct ItclVariable {
|
||||
Tcl_Obj *namePtr; /* member name */
|
||||
Tcl_Obj *fullNamePtr; /* member name with "class::" qualifier */
|
||||
ItclClass *iclsPtr; /* class containing this member */
|
||||
ItclObjectInfo *infoPtr;
|
||||
ItclMemberCode *codePtr; /* code associated with member */
|
||||
Tcl_Obj *init; /* initial value */
|
||||
Tcl_Obj *arrayInitPtr; /* initial value if variable should be array */
|
||||
int protection; /* protection level */
|
||||
int flags; /* flags describing member (see below) */
|
||||
int initted; /* is set when first time initted, to check
|
||||
* for example itcl_hull var, which can be only
|
||||
* initialized once */
|
||||
} ItclVariable;
|
||||
|
||||
|
||||
struct ItclOption;
|
||||
|
||||
typedef struct ItclDelegatedOption {
|
||||
Tcl_Obj *namePtr;
|
||||
Tcl_Obj *resourceNamePtr;
|
||||
Tcl_Obj *classNamePtr;
|
||||
struct ItclOption *ioptPtr; /* the option name or null for "*" */
|
||||
ItclComponent *icPtr; /* the component where the delegation goes
|
||||
* to */
|
||||
Tcl_Obj *asPtr;
|
||||
Tcl_HashTable exceptions; /* exceptions from delegation */
|
||||
} ItclDelegatedOption;
|
||||
|
||||
/*
|
||||
* Instance options.
|
||||
*/
|
||||
typedef struct ItclOption {
|
||||
/* within a class hierarchy there must be only
|
||||
* one option with the same name !! */
|
||||
Tcl_Obj *namePtr; /* member name */
|
||||
Tcl_Obj *fullNamePtr; /* member name with "class::" qualifier */
|
||||
Tcl_Obj *resourceNamePtr;
|
||||
Tcl_Obj *classNamePtr;
|
||||
ItclClass *iclsPtr; /* class containing this member */
|
||||
int protection; /* protection level */
|
||||
int flags; /* flags describing member (see below) */
|
||||
ItclMemberCode *codePtr; /* code associated with member */
|
||||
Tcl_Obj *defaultValuePtr; /* initial value */
|
||||
Tcl_Obj *cgetMethodPtr;
|
||||
Tcl_Obj *cgetMethodVarPtr;
|
||||
Tcl_Obj *configureMethodPtr;
|
||||
Tcl_Obj *configureMethodVarPtr;
|
||||
Tcl_Obj *validateMethodPtr;
|
||||
Tcl_Obj *validateMethodVarPtr;
|
||||
ItclDelegatedOption *idoPtr;
|
||||
/* if the option is delegated != NULL */
|
||||
} ItclOption;
|
||||
|
||||
/*
|
||||
* Instance methodvariables.
|
||||
*/
|
||||
typedef struct ItclMethodVariable {
|
||||
Tcl_Obj *namePtr; /* member name */
|
||||
Tcl_Obj *fullNamePtr; /* member name with "class::" qualifier */
|
||||
ItclClass *iclsPtr; /* class containing this member */
|
||||
int protection; /* protection level */
|
||||
int flags; /* flags describing member (see below) */
|
||||
Tcl_Obj *defaultValuePtr;
|
||||
Tcl_Obj *callbackPtr;
|
||||
} ItclMethodVariable;
|
||||
|
||||
#define VAR_TYPE_VARIABLE 1
|
||||
#define VAR_TYPE_COMMON 2
|
||||
|
||||
#define CMD_TYPE_METHOD 1
|
||||
#define CMD_TYPE_PROC 2
|
||||
|
||||
typedef struct ItclClassCmdInfo {
|
||||
int type;
|
||||
int protection;
|
||||
int cmdNum;
|
||||
Tcl_Namespace *nsPtr;
|
||||
Tcl_Namespace *declaringNsPtr;
|
||||
} ItclClassCmdInfo;
|
||||
|
||||
/*
|
||||
* Instance variable lookup entry.
|
||||
*/
|
||||
typedef struct ItclVarLookup {
|
||||
ItclVariable* ivPtr; /* variable definition */
|
||||
int usage; /* number of uses for this record */
|
||||
int accessible; /* non-zero => accessible from class with
|
||||
* this lookup record in its resolveVars */
|
||||
char *leastQualName; /* simplist name for this variable, with
|
||||
* the fewest qualifiers. This string is
|
||||
* taken from the resolveVars table, so
|
||||
* it shouldn't be freed. */
|
||||
int varNum;
|
||||
Tcl_Var varPtr;
|
||||
} ItclVarLookup;
|
||||
|
||||
/*
|
||||
* Instance command lookup entry.
|
||||
*/
|
||||
typedef struct ItclCmdLookup {
|
||||
ItclMemberFunc* imPtr; /* function definition */
|
||||
int cmdNum;
|
||||
ItclClassCmdInfo *classCmdInfoPtr;
|
||||
Tcl_Command cmdPtr;
|
||||
} ItclCmdLookup;
|
||||
|
||||
typedef struct ItclCallContext {
|
||||
int objectFlags;
|
||||
Tcl_Namespace *nsPtr;
|
||||
ItclObject *ioPtr;
|
||||
ItclMemberFunc *imPtr;
|
||||
int refCount;
|
||||
} ItclCallContext;
|
||||
|
||||
/*
|
||||
* The macro below is used to modify a "char" value (e.g. by casting
|
||||
* it to an unsigned character) so that it can be used safely with
|
||||
* macros such as isspace.
|
||||
*/
|
||||
|
||||
#define UCHAR(c) ((unsigned char) (c))
|
||||
/*
|
||||
* Macros used to cast between pointers and integers (e.g. when storing an int
|
||||
* in ClientData), on 64-bit architectures they avoid gcc warning about "cast
|
||||
* to/from pointer from/to integer of different size".
|
||||
*/
|
||||
|
||||
#if !defined(INT2PTR) && !defined(PTR2INT)
|
||||
# if defined(HAVE_INTPTR_T) || defined(intptr_t)
|
||||
# define INT2PTR(p) ((void*)(intptr_t)(p))
|
||||
# define PTR2INT(p) ((int)(intptr_t)(p))
|
||||
# else
|
||||
# define INT2PTR(p) ((void*)(p))
|
||||
# define PTR2INT(p) ((int)(p))
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef ITCL_DEBUG
|
||||
MODULE_SCOPE int _itcl_debug_level;
|
||||
MODULE_SCOPE void ItclShowArgs(int level, const char *str, int objc,
|
||||
Tcl_Obj * const* objv);
|
||||
#else
|
||||
#define ItclShowArgs(a,b,c,d) do {(void)(c);(void)(d);} while(0)
|
||||
#endif
|
||||
|
||||
MODULE_SCOPE Tcl_ObjCmdProc ItclCallCCommand;
|
||||
MODULE_SCOPE Tcl_ObjCmdProc ItclObjectUnknownCommand;
|
||||
MODULE_SCOPE int ItclCheckCallProc(ClientData clientData, Tcl_Interp *interp,
|
||||
Tcl_ObjectContext contextPtr, Tcl_CallFrame *framePtr, int *isFinished);
|
||||
|
||||
MODULE_SCOPE void ItclPreserveClass(ItclClass *iclsPtr);
|
||||
MODULE_SCOPE void ItclReleaseClass(ClientData iclsPtr);
|
||||
|
||||
MODULE_SCOPE ItclFoundation *ItclGetFoundation(Tcl_Interp *interp);
|
||||
MODULE_SCOPE Tcl_ObjCmdProc ItclClassCommandDispatcher;
|
||||
MODULE_SCOPE Tcl_Command Itcl_CmdAliasProc(Tcl_Interp *interp,
|
||||
Tcl_Namespace *nsPtr, const char *cmdName, ClientData clientData);
|
||||
MODULE_SCOPE Tcl_Var Itcl_VarAliasProc(Tcl_Interp *interp,
|
||||
Tcl_Namespace *nsPtr, const char *VarName, ClientData clientData);
|
||||
MODULE_SCOPE int ItclIsClass(Tcl_Interp *interp, Tcl_Command cmd);
|
||||
MODULE_SCOPE int ItclCheckCallMethod(ClientData clientData, Tcl_Interp *interp,
|
||||
Tcl_ObjectContext contextPtr, Tcl_CallFrame *framePtr, int *isFinished);
|
||||
MODULE_SCOPE int ItclAfterCallMethod(ClientData clientData, Tcl_Interp *interp,
|
||||
Tcl_ObjectContext contextPtr, Tcl_Namespace *nsPtr, int result);
|
||||
MODULE_SCOPE void ItclReportObjectUsage(Tcl_Interp *interp,
|
||||
ItclObject *contextIoPtr, Tcl_Namespace *callerNsPtr,
|
||||
Tcl_Namespace *contextNsPtr);
|
||||
MODULE_SCOPE int ItclMapMethodNameProc(Tcl_Interp *interp, Tcl_Object oPtr,
|
||||
Tcl_Class *startClsPtr, Tcl_Obj *methodObj);
|
||||
MODULE_SCOPE int ItclCreateArgList(Tcl_Interp *interp, const char *str,
|
||||
int *argcPtr, int *maxArgcPtr, Tcl_Obj **usagePtr,
|
||||
ItclArgList **arglistPtrPtr, ItclMemberFunc *imPtr,
|
||||
const char *commandName);
|
||||
MODULE_SCOPE int ItclObjectCmd(ClientData clientData, Tcl_Interp *interp,
|
||||
Tcl_Object oPtr, Tcl_Class clsPtr, int objc, Tcl_Obj *const *objv);
|
||||
MODULE_SCOPE int ItclCreateObject (Tcl_Interp *interp, const char* name,
|
||||
ItclClass *iclsPtr, int objc, Tcl_Obj *const objv[]);
|
||||
MODULE_SCOPE void ItclDeleteObjectVariablesNamespace(Tcl_Interp *interp,
|
||||
ItclObject *ioPtr);
|
||||
MODULE_SCOPE void ItclDeleteClassVariablesNamespace(Tcl_Interp *interp,
|
||||
ItclClass *iclsPtr);
|
||||
MODULE_SCOPE int ItclInfoInit(Tcl_Interp *interp, ItclObjectInfo *infoPtr);
|
||||
|
||||
MODULE_SCOPE Tcl_HashEntry *ItclResolveVarEntry(
|
||||
ItclClass* iclsPtr, const char *varName);
|
||||
|
||||
struct Tcl_ResolvedVarInfo;
|
||||
MODULE_SCOPE int Itcl_ClassCmdResolver(Tcl_Interp *interp, const char* name,
|
||||
Tcl_Namespace *nsPtr, int flags, Tcl_Command *rPtr);
|
||||
MODULE_SCOPE int Itcl_ClassVarResolver(Tcl_Interp *interp, const char* name,
|
||||
Tcl_Namespace *nsPtr, int flags, Tcl_Var *rPtr);
|
||||
MODULE_SCOPE int Itcl_ClassCompiledVarResolver(Tcl_Interp *interp,
|
||||
const char* name, int length, Tcl_Namespace *nsPtr,
|
||||
struct Tcl_ResolvedVarInfo **rPtr);
|
||||
MODULE_SCOPE int Itcl_ClassCmdResolver2(Tcl_Interp *interp, const char* name,
|
||||
Tcl_Namespace *nsPtr, int flags, Tcl_Command *rPtr);
|
||||
MODULE_SCOPE int Itcl_ClassVarResolver2(Tcl_Interp *interp, const char* name,
|
||||
Tcl_Namespace *nsPtr, int flags, Tcl_Var *rPtr);
|
||||
MODULE_SCOPE int Itcl_ClassCompiledVarResolver2(Tcl_Interp *interp,
|
||||
const char* name, int length, Tcl_Namespace *nsPtr,
|
||||
struct Tcl_ResolvedVarInfo **rPtr);
|
||||
MODULE_SCOPE int ItclSetParserResolver(Tcl_Namespace *nsPtr);
|
||||
MODULE_SCOPE void ItclProcErrorProc(Tcl_Interp *interp, Tcl_Obj *procNameObj);
|
||||
MODULE_SCOPE int Itcl_CreateOption (Tcl_Interp *interp, ItclClass *iclsPtr,
|
||||
ItclOption *ioptPtr);
|
||||
MODULE_SCOPE int ItclCreateMethodVariable(Tcl_Interp *interp,
|
||||
ItclVariable *ivPtr, Tcl_Obj* defaultPtr, Tcl_Obj* callbackPtr,
|
||||
ItclMethodVariable** imvPtrPtr);
|
||||
MODULE_SCOPE int DelegationInstall(Tcl_Interp *interp, ItclObject *ioPtr,
|
||||
ItclClass *iclsPtr);
|
||||
MODULE_SCOPE ItclClass *ItclNamespace2Class(Tcl_Namespace *nsPtr);
|
||||
MODULE_SCOPE const char* ItclGetCommonInstanceVar(Tcl_Interp *interp,
|
||||
const char *name, const char *name2, ItclObject *contextIoPtr,
|
||||
ItclClass *contextIclsPtr);
|
||||
MODULE_SCOPE int ItclCreateMethod(Tcl_Interp* interp, ItclClass *iclsPtr,
|
||||
Tcl_Obj *namePtr, const char* arglist, const char* body,
|
||||
ItclMemberFunc **imPtrPtr);
|
||||
MODULE_SCOPE int Itcl_WidgetParseInit(Tcl_Interp *interp,
|
||||
ItclObjectInfo *infoPtr);
|
||||
MODULE_SCOPE void ItclDeleteObjectMetadata(ClientData clientData);
|
||||
MODULE_SCOPE void ItclDeleteClassMetadata(ClientData clientData);
|
||||
MODULE_SCOPE void ItclDeleteArgList(ItclArgList *arglistPtr);
|
||||
MODULE_SCOPE int Itcl_ClassOptionCmd(ClientData clientData, Tcl_Interp *interp,
|
||||
int objc, Tcl_Obj *const objv[]);
|
||||
MODULE_SCOPE int DelegatedOptionsInstall(Tcl_Interp *interp,
|
||||
ItclClass *iclsPtr);
|
||||
MODULE_SCOPE int Itcl_HandleDelegateOptionCmd(Tcl_Interp *interp,
|
||||
ItclObject *ioPtr, ItclClass *iclsPtr, ItclDelegatedOption **idoPtrPtr,
|
||||
int objc, Tcl_Obj *const objv[]);
|
||||
MODULE_SCOPE int Itcl_HandleDelegateMethodCmd(Tcl_Interp *interp,
|
||||
ItclObject *ioPtr, ItclClass *iclsPtr,
|
||||
ItclDelegatedFunction **idmPtrPtr, int objc, Tcl_Obj *const objv[]);
|
||||
MODULE_SCOPE int DelegateFunction(Tcl_Interp *interp, ItclObject *ioPtr,
|
||||
ItclClass *iclsPtr, Tcl_Obj *componentNamePtr,
|
||||
ItclDelegatedFunction *idmPtr);
|
||||
MODULE_SCOPE int ItclInitObjectMethodVariables(Tcl_Interp *interp,
|
||||
ItclObject *ioPtr, ItclClass *iclsPtr, const char *name);
|
||||
MODULE_SCOPE int InitTclOOFunctionPointers(Tcl_Interp *interp);
|
||||
MODULE_SCOPE ItclOption* ItclNewOption(Tcl_Interp *interp, ItclObject *ioPtr,
|
||||
ItclClass *iclsPtr, Tcl_Obj *namePtr, const char *resourceName,
|
||||
const char *className, char *init, ItclMemberCode *mCodePtr);
|
||||
MODULE_SCOPE int ItclParseOption(ItclObjectInfo *infoPtr, Tcl_Interp *interp,
|
||||
int objc, Tcl_Obj *const objv[], ItclClass *iclsPtr,
|
||||
ItclObject *ioPtr, ItclOption **ioptPtrPtr);
|
||||
MODULE_SCOPE void ItclDestroyClassNamesp(ClientData cdata);
|
||||
MODULE_SCOPE int ExpandDelegateAs(Tcl_Interp *interp, ItclObject *ioPtr,
|
||||
ItclClass *iclsPtr, ItclDelegatedFunction *idmPtr,
|
||||
const char *funcName, Tcl_Obj *listPtr);
|
||||
MODULE_SCOPE int ItclCheckForInitializedComponents(Tcl_Interp *interp,
|
||||
ItclClass *iclsPtr, ItclObject *ioPtr);
|
||||
MODULE_SCOPE int ItclCreateDelegatedFunction(Tcl_Interp *interp,
|
||||
ItclClass *iclsPtr, Tcl_Obj *methodNamePtr, ItclComponent *icPtr,
|
||||
Tcl_Obj *targetPtr, Tcl_Obj *usingPtr, Tcl_Obj *exceptionsPtr,
|
||||
ItclDelegatedFunction **idmPtrPtr);
|
||||
MODULE_SCOPE void ItclDeleteDelegatedOption(char *cdata);
|
||||
MODULE_SCOPE void Itcl_FinishList();
|
||||
MODULE_SCOPE void ItclDeleteDelegatedFunction(ItclDelegatedFunction *idmPtr);
|
||||
MODULE_SCOPE void ItclFinishEnsemble(ItclObjectInfo *infoPtr);
|
||||
MODULE_SCOPE int Itcl_EnsembleDeleteCmd(ClientData clientData,
|
||||
Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]);
|
||||
MODULE_SCOPE int ItclAddClassesDictInfo(Tcl_Interp *interp, ItclClass *iclsPtr);
|
||||
MODULE_SCOPE int ItclDeleteClassesDictInfo(Tcl_Interp *interp,
|
||||
ItclClass *iclsPtr);
|
||||
MODULE_SCOPE int ItclAddObjectsDictInfo(Tcl_Interp *interp, ItclObject *ioPtr);
|
||||
MODULE_SCOPE int ItclDeleteObjectsDictInfo(Tcl_Interp *interp,
|
||||
ItclObject *ioPtr);
|
||||
MODULE_SCOPE int ItclAddOptionDictInfo(Tcl_Interp *interp, ItclClass *iclsPtr,
|
||||
ItclOption *ioptPtr);
|
||||
MODULE_SCOPE int ItclAddDelegatedOptionDictInfo(Tcl_Interp *interp,
|
||||
ItclClass *iclsPtr, ItclDelegatedOption *idoPtr);
|
||||
MODULE_SCOPE int ItclAddClassComponentDictInfo(Tcl_Interp *interp,
|
||||
ItclClass *iclsPtr, ItclComponent *icPtr);
|
||||
MODULE_SCOPE int ItclAddClassVariableDictInfo(Tcl_Interp *interp,
|
||||
ItclClass *iclsPtr, ItclVariable *ivPtr);
|
||||
MODULE_SCOPE int ItclAddClassFunctionDictInfo(Tcl_Interp *interp,
|
||||
ItclClass *iclsPtr, ItclMemberFunc *imPtr);
|
||||
MODULE_SCOPE int ItclAddClassDelegatedFunctionDictInfo(Tcl_Interp *interp,
|
||||
ItclClass *iclsPtr, ItclDelegatedFunction *idmPtr);
|
||||
MODULE_SCOPE int ItclClassCreateObject(ClientData clientData, Tcl_Interp *interp,
|
||||
int objc, Tcl_Obj *const objv[]);
|
||||
|
||||
MODULE_SCOPE void ItclRestoreInfoVars(ClientData clientData);
|
||||
|
||||
MODULE_SCOPE Tcl_ObjCmdProc Itcl_BiMyProcCmd;
|
||||
MODULE_SCOPE Tcl_ObjCmdProc Itcl_BiInstallComponentCmd;
|
||||
MODULE_SCOPE Tcl_ObjCmdProc Itcl_BiCallInstanceCmd;
|
||||
MODULE_SCOPE Tcl_ObjCmdProc Itcl_BiGetInstanceVarCmd;
|
||||
MODULE_SCOPE Tcl_ObjCmdProc Itcl_BiMyTypeMethodCmd;
|
||||
MODULE_SCOPE Tcl_ObjCmdProc Itcl_BiMyMethodCmd;
|
||||
MODULE_SCOPE Tcl_ObjCmdProc Itcl_BiMyTypeVarCmd;
|
||||
MODULE_SCOPE Tcl_ObjCmdProc Itcl_BiMyVarCmd;
|
||||
MODULE_SCOPE Tcl_ObjCmdProc Itcl_BiItclHullCmd;
|
||||
MODULE_SCOPE Tcl_ObjCmdProc Itcl_ThisCmd;
|
||||
MODULE_SCOPE Tcl_ObjCmdProc Itcl_ExtendedClassCmd;
|
||||
MODULE_SCOPE Tcl_ObjCmdProc Itcl_TypeClassCmd;
|
||||
MODULE_SCOPE Tcl_ObjCmdProc Itcl_AddObjectOptionCmd;
|
||||
MODULE_SCOPE Tcl_ObjCmdProc Itcl_AddDelegatedOptionCmd;
|
||||
MODULE_SCOPE Tcl_ObjCmdProc Itcl_AddDelegatedFunctionCmd;
|
||||
MODULE_SCOPE Tcl_ObjCmdProc Itcl_SetComponentCmd;
|
||||
MODULE_SCOPE Tcl_ObjCmdProc Itcl_ClassHullTypeCmd;
|
||||
MODULE_SCOPE Tcl_ObjCmdProc Itcl_ClassWidgetClassCmd;
|
||||
|
||||
typedef int (ItclRootMethodProc)(ItclObject *ioPtr, Tcl_Interp *interp,
|
||||
int objc, Tcl_Obj *const objv[]);
|
||||
|
||||
MODULE_SCOPE const Tcl_MethodType itclRootMethodType;
|
||||
MODULE_SCOPE ItclRootMethodProc ItclUnknownGuts;
|
||||
MODULE_SCOPE ItclRootMethodProc ItclConstructGuts;
|
||||
MODULE_SCOPE ItclRootMethodProc ItclInfoGuts;
|
||||
|
||||
#include "itcl2TclOO.h"
|
||||
|
||||
/*
|
||||
* Include all the private API, generated from itcl.decls.
|
||||
*/
|
||||
|
||||
#include "itclIntDecls.h"
|
||||
1046
.CondaPkg/env/include/itclIntDecls.h
vendored
Normal file
1046
.CondaPkg/env/include/itclIntDecls.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
83
.CondaPkg/env/include/itclMigrate2TclCore.h
vendored
Normal file
83
.CondaPkg/env/include/itclMigrate2TclCore.h
vendored
Normal file
@@ -0,0 +1,83 @@
|
||||
#ifndef ITCL_USE_MODIFIED_TCL_H
|
||||
/* this is just to provide the definition. This struct is only used if
|
||||
* infoPtr->useOldResolvers == 0 which is not the default
|
||||
*/
|
||||
#define FRAME_HAS_RESOLVER 0x100
|
||||
typedef Tcl_Command (Tcl_CmdAliasProc)(Tcl_Interp *interp,
|
||||
Tcl_Namespace *nsPtr, const char *cmdName,
|
||||
ClientData clientData);
|
||||
typedef Tcl_Var (Tcl_VarAliasProc)(Tcl_Interp *interp,
|
||||
Tcl_Namespace *nsPtr, const char *varName,
|
||||
ClientData clientData);
|
||||
|
||||
#ifndef _TCL_RESOLVE_DEFINED
|
||||
typedef struct Tcl_Resolve {
|
||||
Tcl_VarAliasProc *varProcPtr;
|
||||
Tcl_CmdAliasProc *cmdProcPtr;
|
||||
ClientData clientData;
|
||||
} Tcl_Resolve;
|
||||
#define _TCL_RESOLVE_DEFINED 1
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef _TCLINT
|
||||
struct Tcl_ResolvedVarInfo;
|
||||
|
||||
typedef Tcl_Var (Tcl_ResolveRuntimeVarProc)(Tcl_Interp *interp,
|
||||
struct Tcl_ResolvedVarInfo *vinfoPtr);
|
||||
|
||||
typedef void (Tcl_ResolveVarDeleteProc)(struct Tcl_ResolvedVarInfo *vinfoPtr);
|
||||
|
||||
/*
|
||||
* The following structure encapsulates the routines needed to resolve a
|
||||
* variable reference at runtime. Any variable specific state will typically
|
||||
* be appended to this structure.
|
||||
*/
|
||||
|
||||
typedef struct Tcl_ResolvedVarInfo {
|
||||
Tcl_ResolveRuntimeVarProc *fetchProc;
|
||||
Tcl_ResolveVarDeleteProc *deleteProc;
|
||||
} Tcl_ResolvedVarInfo;
|
||||
|
||||
typedef int (Tcl_ResolveCompiledVarProc) (Tcl_Interp *interp,
|
||||
const char *name, int length, Tcl_Namespace *context,
|
||||
Tcl_ResolvedVarInfo **rPtr);
|
||||
|
||||
typedef int (Tcl_ResolveVarProc) (Tcl_Interp *interp, const char *name,
|
||||
Tcl_Namespace *context, int flags, Tcl_Var *rPtr);
|
||||
|
||||
typedef int (Tcl_ResolveCmdProc) (Tcl_Interp *interp, const char *name,
|
||||
Tcl_Namespace *context, int flags, Tcl_Command *rPtr);
|
||||
|
||||
typedef struct Tcl_ResolverInfo {
|
||||
Tcl_ResolveCmdProc *cmdResProc;
|
||||
/* Procedure handling command name
|
||||
* resolution. */
|
||||
Tcl_ResolveVarProc *varResProc;
|
||||
/* Procedure handling variable name resolution
|
||||
* for variables that can only be handled at
|
||||
* runtime. */
|
||||
Tcl_ResolveCompiledVarProc *compiledVarResProc;
|
||||
/* Procedure handling variable name resolution
|
||||
* at compile time. */
|
||||
} Tcl_ResolverInfo;
|
||||
#endif
|
||||
|
||||
|
||||
/* here come the definitions for code which should be migrated to Tcl core */
|
||||
/* these functions DO NOT exist and are not published */
|
||||
#ifndef _TCL_PROC_DEFINED
|
||||
typedef struct Tcl_Proc_ *Tcl_Proc;
|
||||
#define _TCL_PROC_DEFINED 1
|
||||
#endif
|
||||
|
||||
MODULE_SCOPE Tcl_Var Tcl_NewNamespaceVar(Tcl_Interp *interp, Tcl_Namespace *nsPtr,
|
||||
const char *varName);
|
||||
MODULE_SCOPE void Itcl_PreserveVar(Tcl_Var var);
|
||||
MODULE_SCOPE void Itcl_ReleaseVar(Tcl_Var var);
|
||||
MODULE_SCOPE int Itcl_IsCallFrameArgument(Tcl_Interp *interp, const char *name);
|
||||
MODULE_SCOPE int Itcl_GetCallVarFrameObjc(Tcl_Interp *interp);
|
||||
MODULE_SCOPE Tcl_Obj * const * Itcl_GetCallVarFrameObjv(Tcl_Interp *interp);
|
||||
#define Tcl_SetNamespaceResolver _Tcl_SetNamespaceResolver
|
||||
MODULE_SCOPE int _Tcl_SetNamespaceResolver(Tcl_Namespace *nsPtr,
|
||||
struct Tcl_Resolve *resolvePtr);
|
||||
38
.CondaPkg/env/include/itclTclIntStubsFcn.h
vendored
Normal file
38
.CondaPkg/env/include/itclTclIntStubsFcn.h
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
/* these functions are Tcl internal stubs so make an Itcl_* wrapper */
|
||||
MODULE_SCOPE void Itcl_GetVariableFullName (Tcl_Interp * interp,
|
||||
Tcl_Var variable, Tcl_Obj * objPtr);
|
||||
MODULE_SCOPE Tcl_Var Itcl_FindNamespaceVar (Tcl_Interp * interp,
|
||||
const char * name, Tcl_Namespace * contextNsPtr, int flags);
|
||||
MODULE_SCOPE void Itcl_SetNamespaceResolvers (Tcl_Namespace * namespacePtr,
|
||||
Tcl_ResolveCmdProc * cmdProc, Tcl_ResolveVarProc * varProc,
|
||||
Tcl_ResolveCompiledVarProc * compiledVarProc);
|
||||
|
||||
#ifndef _TCL_PROC_DEFINED
|
||||
typedef struct Tcl_Proc_ *Tcl_Proc;
|
||||
#define _TCL_PROC_DEFINED 1
|
||||
#endif
|
||||
#ifndef _TCL_RESOLVE_DEFINED
|
||||
struct Tcl_Resolve;
|
||||
#endif
|
||||
|
||||
#define Tcl_GetOriginalCommand _Tcl_GetOriginalCommand
|
||||
#define Tcl_CreateProc _Tcl_CreateProc
|
||||
#define Tcl_ProcDeleteProc _Tcl_ProcDeleteProc
|
||||
#define Tcl_GetObjInterpProc _Tcl_GetObjInterpProc
|
||||
|
||||
MODULE_SCOPE Tcl_Command _Tcl_GetOriginalCommand(Tcl_Command command);
|
||||
MODULE_SCOPE int _Tcl_CreateProc(Tcl_Interp *interp, Tcl_Namespace *nsPtr,
|
||||
const char *procName, Tcl_Obj *argsPtr, Tcl_Obj *bodyPtr,
|
||||
Tcl_Proc *procPtrPtr);
|
||||
MODULE_SCOPE void _Tcl_ProcDeleteProc(ClientData clientData);
|
||||
MODULE_SCOPE Tcl_ObjCmdProc *_Tcl_GetObjInterpProc(void);
|
||||
MODULE_SCOPE int Tcl_RenameCommand(Tcl_Interp *interp, const char *oldName,
|
||||
const char *newName);
|
||||
MODULE_SCOPE Tcl_HashTable *Itcl_GetNamespaceChildTable(Tcl_Namespace *nsPtr);
|
||||
MODULE_SCOPE Tcl_HashTable *Itcl_GetNamespaceCommandTable(Tcl_Namespace *nsPtr);
|
||||
MODULE_SCOPE int Itcl_InitRewriteEnsemble(Tcl_Interp *interp, int numRemoved,
|
||||
int numInserted, int objc, Tcl_Obj *const *objv);
|
||||
MODULE_SCOPE void Itcl_ResetRewriteEnsemble(Tcl_Interp *interp,
|
||||
int isRootEnsemble);
|
||||
|
||||
|
||||
1204
.CondaPkg/env/include/ks_names.h
vendored
Normal file
1204
.CondaPkg/env/include/ks_names.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
327
.CondaPkg/env/include/lzma.h
vendored
Normal file
327
.CondaPkg/env/include/lzma.h
vendored
Normal file
@@ -0,0 +1,327 @@
|
||||
/**
|
||||
* \file api/lzma.h
|
||||
* \brief The public API of liblzma data compression library
|
||||
*
|
||||
* liblzma is a public domain general-purpose data compression library with
|
||||
* a zlib-like API. The native file format is .xz, but also the old .lzma
|
||||
* format and raw (no headers) streams are supported. Multiple compression
|
||||
* algorithms (filters) are supported. Currently LZMA2 is the primary filter.
|
||||
*
|
||||
* liblzma is part of XZ Utils <http://tukaani.org/xz/>. XZ Utils includes
|
||||
* a gzip-like command line tool named xz and some other tools. XZ Utils
|
||||
* is developed and maintained by Lasse Collin.
|
||||
*
|
||||
* Major parts of liblzma are based on Igor Pavlov's public domain LZMA SDK
|
||||
* <http://7-zip.org/sdk.html>.
|
||||
*
|
||||
* The SHA-256 implementation is based on the public domain code found from
|
||||
* 7-Zip <http://7-zip.org/>, which has a modified version of the public
|
||||
* domain SHA-256 code found from Crypto++ <http://www.cryptopp.com/>.
|
||||
* The SHA-256 code in Crypto++ was written by Kevin Springle and Wei Dai.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Author: Lasse Collin
|
||||
*
|
||||
* This file has been put into the public domain.
|
||||
* You can do whatever you want with this file.
|
||||
*/
|
||||
|
||||
#ifndef LZMA_H
|
||||
#define LZMA_H
|
||||
|
||||
/*****************************
|
||||
* Required standard headers *
|
||||
*****************************/
|
||||
|
||||
/*
|
||||
* liblzma API headers need some standard types and macros. To allow
|
||||
* including lzma.h without requiring the application to include other
|
||||
* headers first, lzma.h includes the required standard headers unless
|
||||
* they already seem to be included already or if LZMA_MANUAL_HEADERS
|
||||
* has been defined.
|
||||
*
|
||||
* Here's what types and macros are needed and from which headers:
|
||||
* - stddef.h: size_t, NULL
|
||||
* - stdint.h: uint8_t, uint32_t, uint64_t, UINT32_C(n), uint64_C(n),
|
||||
* UINT32_MAX, UINT64_MAX
|
||||
*
|
||||
* However, inttypes.h is a little more portable than stdint.h, although
|
||||
* inttypes.h declares some unneeded things compared to plain stdint.h.
|
||||
*
|
||||
* The hacks below aren't perfect, specifically they assume that inttypes.h
|
||||
* exists and that it typedefs at least uint8_t, uint32_t, and uint64_t,
|
||||
* and that, in case of incomplete inttypes.h, unsigned int is 32-bit.
|
||||
* If the application already takes care of setting up all the types and
|
||||
* macros properly (for example by using gnulib's stdint.h or inttypes.h),
|
||||
* we try to detect that the macros are already defined and don't include
|
||||
* inttypes.h here again. However, you may define LZMA_MANUAL_HEADERS to
|
||||
* force this file to never include any system headers.
|
||||
*
|
||||
* Some could argue that liblzma API should provide all the required types,
|
||||
* for example lzma_uint64, LZMA_UINT64_C(n), and LZMA_UINT64_MAX. This was
|
||||
* seen as an unnecessary mess, since most systems already provide all the
|
||||
* necessary types and macros in the standard headers.
|
||||
*
|
||||
* Note that liblzma API still has lzma_bool, because using stdbool.h would
|
||||
* break C89 and C++ programs on many systems. sizeof(bool) in C99 isn't
|
||||
* necessarily the same as sizeof(bool) in C++.
|
||||
*/
|
||||
|
||||
#ifndef LZMA_MANUAL_HEADERS
|
||||
/*
|
||||
* I suppose this works portably also in C++. Note that in C++,
|
||||
* we need to get size_t into the global namespace.
|
||||
*/
|
||||
# include <stddef.h>
|
||||
|
||||
/*
|
||||
* Skip inttypes.h if we already have all the required macros. If we
|
||||
* have the macros, we assume that we have the matching typedefs too.
|
||||
*/
|
||||
# if !defined(UINT32_C) || !defined(UINT64_C) \
|
||||
|| !defined(UINT32_MAX) || !defined(UINT64_MAX)
|
||||
/*
|
||||
* MSVC versions older than 2013 have no C99 support, and
|
||||
* thus they cannot be used to compile liblzma. Using an
|
||||
* existing liblzma.dll with old MSVC can work though(*),
|
||||
* but we need to define the required standard integer
|
||||
* types here in a MSVC-specific way.
|
||||
*
|
||||
* (*) If you do this, the existing liblzma.dll probably uses
|
||||
* a different runtime library than your MSVC-built
|
||||
* application. Mixing runtimes is generally bad, but
|
||||
* in this case it should work as long as you avoid
|
||||
* the few rarely-needed liblzma functions that allocate
|
||||
* memory and expect the caller to free it using free().
|
||||
*/
|
||||
# if defined(_WIN32) && defined(_MSC_VER) && _MSC_VER < 1800
|
||||
typedef unsigned __int8 uint8_t;
|
||||
typedef unsigned __int32 uint32_t;
|
||||
typedef unsigned __int64 uint64_t;
|
||||
# else
|
||||
/* Use the standard inttypes.h. */
|
||||
# ifdef __cplusplus
|
||||
/*
|
||||
* C99 sections 7.18.2 and 7.18.4 specify
|
||||
* that C++ implementations define the limit
|
||||
* and constant macros only if specifically
|
||||
* requested. Note that if you want the
|
||||
* format macros (PRIu64 etc.) too, you need
|
||||
* to define __STDC_FORMAT_MACROS before
|
||||
* including lzma.h, since re-including
|
||||
* inttypes.h with __STDC_FORMAT_MACROS
|
||||
* defined doesn't necessarily work.
|
||||
*/
|
||||
# ifndef __STDC_LIMIT_MACROS
|
||||
# define __STDC_LIMIT_MACROS 1
|
||||
# endif
|
||||
# ifndef __STDC_CONSTANT_MACROS
|
||||
# define __STDC_CONSTANT_MACROS 1
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# include <inttypes.h>
|
||||
# endif
|
||||
|
||||
/*
|
||||
* Some old systems have only the typedefs in inttypes.h, and
|
||||
* lack all the macros. For those systems, we need a few more
|
||||
* hacks. We assume that unsigned int is 32-bit and unsigned
|
||||
* long is either 32-bit or 64-bit. If these hacks aren't
|
||||
* enough, the application has to setup the types manually
|
||||
* before including lzma.h.
|
||||
*/
|
||||
# ifndef UINT32_C
|
||||
# if defined(_WIN32) && defined(_MSC_VER)
|
||||
# define UINT32_C(n) n ## UI32
|
||||
# else
|
||||
# define UINT32_C(n) n ## U
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# ifndef UINT64_C
|
||||
# if defined(_WIN32) && defined(_MSC_VER)
|
||||
# define UINT64_C(n) n ## UI64
|
||||
# else
|
||||
/* Get ULONG_MAX. */
|
||||
# include <limits.h>
|
||||
# if ULONG_MAX == 4294967295UL
|
||||
# define UINT64_C(n) n ## ULL
|
||||
# else
|
||||
# define UINT64_C(n) n ## UL
|
||||
# endif
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# ifndef UINT32_MAX
|
||||
# define UINT32_MAX (UINT32_C(4294967295))
|
||||
# endif
|
||||
|
||||
# ifndef UINT64_MAX
|
||||
# define UINT64_MAX (UINT64_C(18446744073709551615))
|
||||
# endif
|
||||
# endif
|
||||
#endif /* ifdef LZMA_MANUAL_HEADERS */
|
||||
|
||||
|
||||
/******************
|
||||
* LZMA_API macro *
|
||||
******************/
|
||||
|
||||
/*
|
||||
* Some systems require that the functions and function pointers are
|
||||
* declared specially in the headers. LZMA_API_IMPORT is for importing
|
||||
* symbols and LZMA_API_CALL is to specify the calling convention.
|
||||
*
|
||||
* By default it is assumed that the application will link dynamically
|
||||
* against liblzma. #define LZMA_API_STATIC in your application if you
|
||||
* want to link against static liblzma. If you don't care about portability
|
||||
* to operating systems like Windows, or at least don't care about linking
|
||||
* against static liblzma on them, don't worry about LZMA_API_STATIC. That
|
||||
* is, most developers will never need to use LZMA_API_STATIC.
|
||||
*
|
||||
* The GCC variants are a special case on Windows (Cygwin and MinGW).
|
||||
* We rely on GCC doing the right thing with its auto-import feature,
|
||||
* and thus don't use __declspec(dllimport). This way developers don't
|
||||
* need to worry about LZMA_API_STATIC. Also the calling convention is
|
||||
* omitted on Cygwin but not on MinGW.
|
||||
*/
|
||||
#ifndef LZMA_API_IMPORT
|
||||
# if !defined(LZMA_API_STATIC) && defined(_WIN32) && !defined(__GNUC__)
|
||||
# define LZMA_API_IMPORT __declspec(dllimport)
|
||||
# else
|
||||
# define LZMA_API_IMPORT
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef LZMA_API_CALL
|
||||
# if defined(_WIN32) && !defined(__CYGWIN__)
|
||||
# define LZMA_API_CALL __cdecl
|
||||
# else
|
||||
# define LZMA_API_CALL
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef LZMA_API
|
||||
# define LZMA_API(type) LZMA_API_IMPORT type LZMA_API_CALL
|
||||
#endif
|
||||
|
||||
|
||||
/***********
|
||||
* nothrow *
|
||||
***********/
|
||||
|
||||
/*
|
||||
* None of the functions in liblzma may throw an exception. Even
|
||||
* the functions that use callback functions won't throw exceptions,
|
||||
* because liblzma would break if a callback function threw an exception.
|
||||
*/
|
||||
#ifndef lzma_nothrow
|
||||
# if defined(__cplusplus)
|
||||
# if __cplusplus >= 201103L || (defined(_MSVC_LANG) \
|
||||
&& _MSVC_LANG >= 201103L)
|
||||
# define lzma_nothrow noexcept
|
||||
# else
|
||||
# define lzma_nothrow throw()
|
||||
# endif
|
||||
# elif defined(__GNUC__) && (__GNUC__ > 3 \
|
||||
|| (__GNUC__ == 3 && __GNUC_MINOR__ >= 3))
|
||||
# define lzma_nothrow __attribute__((__nothrow__))
|
||||
# else
|
||||
# define lzma_nothrow
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
/********************
|
||||
* GNU C extensions *
|
||||
********************/
|
||||
|
||||
/*
|
||||
* GNU C extensions are used conditionally in the public API. It doesn't
|
||||
* break anything if these are sometimes enabled and sometimes not, only
|
||||
* affects warnings and optimizations.
|
||||
*/
|
||||
#if defined(__GNUC__) && __GNUC__ >= 3
|
||||
# ifndef lzma_attribute
|
||||
# define lzma_attribute(attr) __attribute__(attr)
|
||||
# endif
|
||||
|
||||
/* warn_unused_result was added in GCC 3.4. */
|
||||
# ifndef lzma_attr_warn_unused_result
|
||||
# if __GNUC__ == 3 && __GNUC_MINOR__ < 4
|
||||
# define lzma_attr_warn_unused_result
|
||||
# endif
|
||||
# endif
|
||||
|
||||
#else
|
||||
# ifndef lzma_attribute
|
||||
# define lzma_attribute(attr)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef lzma_attr_pure
|
||||
# define lzma_attr_pure lzma_attribute((__pure__))
|
||||
#endif
|
||||
|
||||
#ifndef lzma_attr_const
|
||||
# define lzma_attr_const lzma_attribute((__const__))
|
||||
#endif
|
||||
|
||||
#ifndef lzma_attr_warn_unused_result
|
||||
# define lzma_attr_warn_unused_result \
|
||||
lzma_attribute((__warn_unused_result__))
|
||||
#endif
|
||||
|
||||
|
||||
/**************
|
||||
* Subheaders *
|
||||
**************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Subheaders check that this is defined. It is to prevent including
|
||||
* them directly from applications.
|
||||
*/
|
||||
#define LZMA_H_INTERNAL 1
|
||||
|
||||
/* Basic features */
|
||||
#include "lzma/version.h"
|
||||
#include "lzma/base.h"
|
||||
#include "lzma/vli.h"
|
||||
#include "lzma/check.h"
|
||||
|
||||
/* Filters */
|
||||
#include "lzma/filter.h"
|
||||
#include "lzma/bcj.h"
|
||||
#include "lzma/delta.h"
|
||||
#include "lzma/lzma12.h"
|
||||
|
||||
/* Container formats */
|
||||
#include "lzma/container.h"
|
||||
|
||||
/* Advanced features */
|
||||
#include "lzma/stream_flags.h"
|
||||
#include "lzma/block.h"
|
||||
#include "lzma/index.h"
|
||||
#include "lzma/index_hash.h"
|
||||
|
||||
/* Hardware information */
|
||||
#include "lzma/hardware.h"
|
||||
|
||||
/*
|
||||
* All subheaders included. Undefine LZMA_H_INTERNAL to prevent applications
|
||||
* re-including the subheaders.
|
||||
*/
|
||||
#undef LZMA_H_INTERNAL
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* ifndef LZMA_H */
|
||||
659
.CondaPkg/env/include/lzma/base.h
vendored
Normal file
659
.CondaPkg/env/include/lzma/base.h
vendored
Normal file
@@ -0,0 +1,659 @@
|
||||
/**
|
||||
* \file lzma/base.h
|
||||
* \brief Data types and functions used in many places in liblzma API
|
||||
*/
|
||||
|
||||
/*
|
||||
* Author: Lasse Collin
|
||||
*
|
||||
* This file has been put into the public domain.
|
||||
* You can do whatever you want with this file.
|
||||
*
|
||||
* See ../lzma.h for information about liblzma as a whole.
|
||||
*/
|
||||
|
||||
#ifndef LZMA_H_INTERNAL
|
||||
# error Never include this file directly. Use <lzma.h> instead.
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
* \brief Boolean
|
||||
*
|
||||
* This is here because C89 doesn't have stdbool.h. To set a value for
|
||||
* variables having type lzma_bool, you can use
|
||||
* - C99's `true' and `false' from stdbool.h;
|
||||
* - C++'s internal `true' and `false'; or
|
||||
* - integers one (true) and zero (false).
|
||||
*/
|
||||
typedef unsigned char lzma_bool;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Type of reserved enumeration variable in structures
|
||||
*
|
||||
* To avoid breaking library ABI when new features are added, several
|
||||
* structures contain extra variables that may be used in future. Since
|
||||
* sizeof(enum) can be different than sizeof(int), and sizeof(enum) may
|
||||
* even vary depending on the range of enumeration constants, we specify
|
||||
* a separate type to be used for reserved enumeration variables. All
|
||||
* enumeration constants in liblzma API will be non-negative and less
|
||||
* than 128, which should guarantee that the ABI won't break even when
|
||||
* new constants are added to existing enumerations.
|
||||
*/
|
||||
typedef enum {
|
||||
LZMA_RESERVED_ENUM = 0
|
||||
} lzma_reserved_enum;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Return values used by several functions in liblzma
|
||||
*
|
||||
* Check the descriptions of specific functions to find out which return
|
||||
* values they can return. With some functions the return values may have
|
||||
* more specific meanings than described here; those differences are
|
||||
* described per-function basis.
|
||||
*/
|
||||
typedef enum {
|
||||
LZMA_OK = 0,
|
||||
/**<
|
||||
* \brief Operation completed successfully
|
||||
*/
|
||||
|
||||
LZMA_STREAM_END = 1,
|
||||
/**<
|
||||
* \brief End of stream was reached
|
||||
*
|
||||
* In encoder, LZMA_SYNC_FLUSH, LZMA_FULL_FLUSH, or
|
||||
* LZMA_FINISH was finished. In decoder, this indicates
|
||||
* that all the data was successfully decoded.
|
||||
*
|
||||
* In all cases, when LZMA_STREAM_END is returned, the last
|
||||
* output bytes should be picked from strm->next_out.
|
||||
*/
|
||||
|
||||
LZMA_NO_CHECK = 2,
|
||||
/**<
|
||||
* \brief Input stream has no integrity check
|
||||
*
|
||||
* This return value can be returned only if the
|
||||
* LZMA_TELL_NO_CHECK flag was used when initializing
|
||||
* the decoder. LZMA_NO_CHECK is just a warning, and
|
||||
* the decoding can be continued normally.
|
||||
*
|
||||
* It is possible to call lzma_get_check() immediately after
|
||||
* lzma_code has returned LZMA_NO_CHECK. The result will
|
||||
* naturally be LZMA_CHECK_NONE, but the possibility to call
|
||||
* lzma_get_check() may be convenient in some applications.
|
||||
*/
|
||||
|
||||
LZMA_UNSUPPORTED_CHECK = 3,
|
||||
/**<
|
||||
* \brief Cannot calculate the integrity check
|
||||
*
|
||||
* The usage of this return value is different in encoders
|
||||
* and decoders.
|
||||
*
|
||||
* Encoders can return this value only from the initialization
|
||||
* function. If initialization fails with this value, the
|
||||
* encoding cannot be done, because there's no way to produce
|
||||
* output with the correct integrity check.
|
||||
*
|
||||
* Decoders can return this value only from lzma_code() and
|
||||
* only if the LZMA_TELL_UNSUPPORTED_CHECK flag was used when
|
||||
* initializing the decoder. The decoding can still be
|
||||
* continued normally even if the check type is unsupported,
|
||||
* but naturally the check will not be validated, and possible
|
||||
* errors may go undetected.
|
||||
*
|
||||
* With decoder, it is possible to call lzma_get_check()
|
||||
* immediately after lzma_code() has returned
|
||||
* LZMA_UNSUPPORTED_CHECK. This way it is possible to find
|
||||
* out what the unsupported Check ID was.
|
||||
*/
|
||||
|
||||
LZMA_GET_CHECK = 4,
|
||||
/**<
|
||||
* \brief Integrity check type is now available
|
||||
*
|
||||
* This value can be returned only by the lzma_code() function
|
||||
* and only if the decoder was initialized with the
|
||||
* LZMA_TELL_ANY_CHECK flag. LZMA_GET_CHECK tells the
|
||||
* application that it may now call lzma_get_check() to find
|
||||
* out the Check ID. This can be used, for example, to
|
||||
* implement a decoder that accepts only files that have
|
||||
* strong enough integrity check.
|
||||
*/
|
||||
|
||||
LZMA_MEM_ERROR = 5,
|
||||
/**<
|
||||
* \brief Cannot allocate memory
|
||||
*
|
||||
* Memory allocation failed, or the size of the allocation
|
||||
* would be greater than SIZE_MAX.
|
||||
*
|
||||
* Due to internal implementation reasons, the coding cannot
|
||||
* be continued even if more memory were made available after
|
||||
* LZMA_MEM_ERROR.
|
||||
*/
|
||||
|
||||
LZMA_MEMLIMIT_ERROR = 6,
|
||||
/**
|
||||
* \brief Memory usage limit was reached
|
||||
*
|
||||
* Decoder would need more memory than allowed by the
|
||||
* specified memory usage limit. To continue decoding,
|
||||
* the memory usage limit has to be increased with
|
||||
* lzma_memlimit_set().
|
||||
*/
|
||||
|
||||
LZMA_FORMAT_ERROR = 7,
|
||||
/**<
|
||||
* \brief File format not recognized
|
||||
*
|
||||
* The decoder did not recognize the input as supported file
|
||||
* format. This error can occur, for example, when trying to
|
||||
* decode .lzma format file with lzma_stream_decoder,
|
||||
* because lzma_stream_decoder accepts only the .xz format.
|
||||
*/
|
||||
|
||||
LZMA_OPTIONS_ERROR = 8,
|
||||
/**<
|
||||
* \brief Invalid or unsupported options
|
||||
*
|
||||
* Invalid or unsupported options, for example
|
||||
* - unsupported filter(s) or filter options; or
|
||||
* - reserved bits set in headers (decoder only).
|
||||
*
|
||||
* Rebuilding liblzma with more features enabled, or
|
||||
* upgrading to a newer version of liblzma may help.
|
||||
*/
|
||||
|
||||
LZMA_DATA_ERROR = 9,
|
||||
/**<
|
||||
* \brief Data is corrupt
|
||||
*
|
||||
* The usage of this return value is different in encoders
|
||||
* and decoders. In both encoder and decoder, the coding
|
||||
* cannot continue after this error.
|
||||
*
|
||||
* Encoders return this if size limits of the target file
|
||||
* format would be exceeded. These limits are huge, thus
|
||||
* getting this error from an encoder is mostly theoretical.
|
||||
* For example, the maximum compressed and uncompressed
|
||||
* size of a .xz Stream is roughly 8 EiB (2^63 bytes).
|
||||
*
|
||||
* Decoders return this error if the input data is corrupt.
|
||||
* This can mean, for example, invalid CRC32 in headers
|
||||
* or invalid check of uncompressed data.
|
||||
*/
|
||||
|
||||
LZMA_BUF_ERROR = 10,
|
||||
/**<
|
||||
* \brief No progress is possible
|
||||
*
|
||||
* This error code is returned when the coder cannot consume
|
||||
* any new input and produce any new output. The most common
|
||||
* reason for this error is that the input stream being
|
||||
* decoded is truncated or corrupt.
|
||||
*
|
||||
* This error is not fatal. Coding can be continued normally
|
||||
* by providing more input and/or more output space, if
|
||||
* possible.
|
||||
*
|
||||
* Typically the first call to lzma_code() that can do no
|
||||
* progress returns LZMA_OK instead of LZMA_BUF_ERROR. Only
|
||||
* the second consecutive call doing no progress will return
|
||||
* LZMA_BUF_ERROR. This is intentional.
|
||||
*
|
||||
* With zlib, Z_BUF_ERROR may be returned even if the
|
||||
* application is doing nothing wrong, so apps will need
|
||||
* to handle Z_BUF_ERROR specially. The above hack
|
||||
* guarantees that liblzma never returns LZMA_BUF_ERROR
|
||||
* to properly written applications unless the input file
|
||||
* is truncated or corrupt. This should simplify the
|
||||
* applications a little.
|
||||
*/
|
||||
|
||||
LZMA_PROG_ERROR = 11,
|
||||
/**<
|
||||
* \brief Programming error
|
||||
*
|
||||
* This indicates that the arguments given to the function are
|
||||
* invalid or the internal state of the decoder is corrupt.
|
||||
* - Function arguments are invalid or the structures
|
||||
* pointed by the argument pointers are invalid
|
||||
* e.g. if strm->next_out has been set to NULL and
|
||||
* strm->avail_out > 0 when calling lzma_code().
|
||||
* - lzma_* functions have been called in wrong order
|
||||
* e.g. lzma_code() was called right after lzma_end().
|
||||
* - If errors occur randomly, the reason might be flaky
|
||||
* hardware.
|
||||
*
|
||||
* If you think that your code is correct, this error code
|
||||
* can be a sign of a bug in liblzma. See the documentation
|
||||
* how to report bugs.
|
||||
*/
|
||||
} lzma_ret;
|
||||
|
||||
|
||||
/**
|
||||
* \brief The `action' argument for lzma_code()
|
||||
*
|
||||
* After the first use of LZMA_SYNC_FLUSH, LZMA_FULL_FLUSH, LZMA_FULL_BARRIER,
|
||||
* or LZMA_FINISH, the same `action' must is used until lzma_code() returns
|
||||
* LZMA_STREAM_END. Also, the amount of input (that is, strm->avail_in) must
|
||||
* not be modified by the application until lzma_code() returns
|
||||
* LZMA_STREAM_END. Changing the `action' or modifying the amount of input
|
||||
* will make lzma_code() return LZMA_PROG_ERROR.
|
||||
*/
|
||||
typedef enum {
|
||||
LZMA_RUN = 0,
|
||||
/**<
|
||||
* \brief Continue coding
|
||||
*
|
||||
* Encoder: Encode as much input as possible. Some internal
|
||||
* buffering will probably be done (depends on the filter
|
||||
* chain in use), which causes latency: the input used won't
|
||||
* usually be decodeable from the output of the same
|
||||
* lzma_code() call.
|
||||
*
|
||||
* Decoder: Decode as much input as possible and produce as
|
||||
* much output as possible.
|
||||
*/
|
||||
|
||||
LZMA_SYNC_FLUSH = 1,
|
||||
/**<
|
||||
* \brief Make all the input available at output
|
||||
*
|
||||
* Normally the encoder introduces some latency.
|
||||
* LZMA_SYNC_FLUSH forces all the buffered data to be
|
||||
* available at output without resetting the internal
|
||||
* state of the encoder. This way it is possible to use
|
||||
* compressed stream for example for communication over
|
||||
* network.
|
||||
*
|
||||
* Only some filters support LZMA_SYNC_FLUSH. Trying to use
|
||||
* LZMA_SYNC_FLUSH with filters that don't support it will
|
||||
* make lzma_code() return LZMA_OPTIONS_ERROR. For example,
|
||||
* LZMA1 doesn't support LZMA_SYNC_FLUSH but LZMA2 does.
|
||||
*
|
||||
* Using LZMA_SYNC_FLUSH very often can dramatically reduce
|
||||
* the compression ratio. With some filters (for example,
|
||||
* LZMA2), fine-tuning the compression options may help
|
||||
* mitigate this problem significantly (for example,
|
||||
* match finder with LZMA2).
|
||||
*
|
||||
* Decoders don't support LZMA_SYNC_FLUSH.
|
||||
*/
|
||||
|
||||
LZMA_FULL_FLUSH = 2,
|
||||
/**<
|
||||
* \brief Finish encoding of the current Block
|
||||
*
|
||||
* All the input data going to the current Block must have
|
||||
* been given to the encoder (the last bytes can still be
|
||||
* pending in *next_in). Call lzma_code() with LZMA_FULL_FLUSH
|
||||
* until it returns LZMA_STREAM_END. Then continue normally
|
||||
* with LZMA_RUN or finish the Stream with LZMA_FINISH.
|
||||
*
|
||||
* This action is currently supported only by Stream encoder
|
||||
* and easy encoder (which uses Stream encoder). If there is
|
||||
* no unfinished Block, no empty Block is created.
|
||||
*/
|
||||
|
||||
LZMA_FULL_BARRIER = 4,
|
||||
/**<
|
||||
* \brief Finish encoding of the current Block
|
||||
*
|
||||
* This is like LZMA_FULL_FLUSH except that this doesn't
|
||||
* necessarily wait until all the input has been made
|
||||
* available via the output buffer. That is, lzma_code()
|
||||
* might return LZMA_STREAM_END as soon as all the input
|
||||
* has been consumed (avail_in == 0).
|
||||
*
|
||||
* LZMA_FULL_BARRIER is useful with a threaded encoder if
|
||||
* one wants to split the .xz Stream into Blocks at specific
|
||||
* offsets but doesn't care if the output isn't flushed
|
||||
* immediately. Using LZMA_FULL_BARRIER allows keeping
|
||||
* the threads busy while LZMA_FULL_FLUSH would make
|
||||
* lzma_code() wait until all the threads have finished
|
||||
* until more data could be passed to the encoder.
|
||||
*
|
||||
* With a lzma_stream initialized with the single-threaded
|
||||
* lzma_stream_encoder() or lzma_easy_encoder(),
|
||||
* LZMA_FULL_BARRIER is an alias for LZMA_FULL_FLUSH.
|
||||
*/
|
||||
|
||||
LZMA_FINISH = 3
|
||||
/**<
|
||||
* \brief Finish the coding operation
|
||||
*
|
||||
* All the input data must have been given to the encoder
|
||||
* (the last bytes can still be pending in next_in).
|
||||
* Call lzma_code() with LZMA_FINISH until it returns
|
||||
* LZMA_STREAM_END. Once LZMA_FINISH has been used,
|
||||
* the amount of input must no longer be changed by
|
||||
* the application.
|
||||
*
|
||||
* When decoding, using LZMA_FINISH is optional unless the
|
||||
* LZMA_CONCATENATED flag was used when the decoder was
|
||||
* initialized. When LZMA_CONCATENATED was not used, the only
|
||||
* effect of LZMA_FINISH is that the amount of input must not
|
||||
* be changed just like in the encoder.
|
||||
*/
|
||||
} lzma_action;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Custom functions for memory handling
|
||||
*
|
||||
* A pointer to lzma_allocator may be passed via lzma_stream structure
|
||||
* to liblzma, and some advanced functions take a pointer to lzma_allocator
|
||||
* as a separate function argument. The library will use the functions
|
||||
* specified in lzma_allocator for memory handling instead of the default
|
||||
* malloc() and free(). C++ users should note that the custom memory
|
||||
* handling functions must not throw exceptions.
|
||||
*
|
||||
* Single-threaded mode only: liblzma doesn't make an internal copy of
|
||||
* lzma_allocator. Thus, it is OK to change these function pointers in
|
||||
* the middle of the coding process, but obviously it must be done
|
||||
* carefully to make sure that the replacement `free' can deallocate
|
||||
* memory allocated by the earlier `alloc' function(s).
|
||||
*
|
||||
* Multithreaded mode: liblzma might internally store pointers to the
|
||||
* lzma_allocator given via the lzma_stream structure. The application
|
||||
* must not change the allocator pointer in lzma_stream or the contents
|
||||
* of the pointed lzma_allocator structure until lzma_end() has been used
|
||||
* to free the memory associated with that lzma_stream. The allocation
|
||||
* functions might be called simultaneously from multiple threads, and
|
||||
* thus they must be thread safe.
|
||||
*/
|
||||
typedef struct {
|
||||
/**
|
||||
* \brief Pointer to a custom memory allocation function
|
||||
*
|
||||
* If you don't want a custom allocator, but still want
|
||||
* custom free(), set this to NULL and liblzma will use
|
||||
* the standard malloc().
|
||||
*
|
||||
* \param opaque lzma_allocator.opaque (see below)
|
||||
* \param nmemb Number of elements like in calloc(). liblzma
|
||||
* will always set nmemb to 1, so it is safe to
|
||||
* ignore nmemb in a custom allocator if you like.
|
||||
* The nmemb argument exists only for
|
||||
* compatibility with zlib and libbzip2.
|
||||
* \param size Size of an element in bytes.
|
||||
* liblzma never sets this to zero.
|
||||
*
|
||||
* \return Pointer to the beginning of a memory block of
|
||||
* `size' bytes, or NULL if allocation fails
|
||||
* for some reason. When allocation fails, functions
|
||||
* of liblzma return LZMA_MEM_ERROR.
|
||||
*
|
||||
* The allocator should not waste time zeroing the allocated buffers.
|
||||
* This is not only about speed, but also memory usage, since the
|
||||
* operating system kernel doesn't necessarily allocate the requested
|
||||
* memory in physical memory until it is actually used. With small
|
||||
* input files, liblzma may actually need only a fraction of the
|
||||
* memory that it requested for allocation.
|
||||
*
|
||||
* \note LZMA_MEM_ERROR is also used when the size of the
|
||||
* allocation would be greater than SIZE_MAX. Thus,
|
||||
* don't assume that the custom allocator must have
|
||||
* returned NULL if some function from liblzma
|
||||
* returns LZMA_MEM_ERROR.
|
||||
*/
|
||||
void *(LZMA_API_CALL *alloc)(void *opaque, size_t nmemb, size_t size);
|
||||
|
||||
/**
|
||||
* \brief Pointer to a custom memory freeing function
|
||||
*
|
||||
* If you don't want a custom freeing function, but still
|
||||
* want a custom allocator, set this to NULL and liblzma
|
||||
* will use the standard free().
|
||||
*
|
||||
* \param opaque lzma_allocator.opaque (see below)
|
||||
* \param ptr Pointer returned by lzma_allocator.alloc(),
|
||||
* or when it is set to NULL, a pointer returned
|
||||
* by the standard malloc().
|
||||
*/
|
||||
void (LZMA_API_CALL *free)(void *opaque, void *ptr);
|
||||
|
||||
/**
|
||||
* \brief Pointer passed to .alloc() and .free()
|
||||
*
|
||||
* opaque is passed as the first argument to lzma_allocator.alloc()
|
||||
* and lzma_allocator.free(). This intended to ease implementing
|
||||
* custom memory allocation functions for use with liblzma.
|
||||
*
|
||||
* If you don't need this, you should set this to NULL.
|
||||
*/
|
||||
void *opaque;
|
||||
|
||||
} lzma_allocator;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Internal data structure
|
||||
*
|
||||
* The contents of this structure is not visible outside the library.
|
||||
*/
|
||||
typedef struct lzma_internal_s lzma_internal;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Passing data to and from liblzma
|
||||
*
|
||||
* The lzma_stream structure is used for
|
||||
* - passing pointers to input and output buffers to liblzma;
|
||||
* - defining custom memory handler functions; and
|
||||
* - holding a pointer to coder-specific internal data structures.
|
||||
*
|
||||
* Typical usage:
|
||||
*
|
||||
* - After allocating lzma_stream (on stack or with malloc()), it must be
|
||||
* initialized to LZMA_STREAM_INIT (see LZMA_STREAM_INIT for details).
|
||||
*
|
||||
* - Initialize a coder to the lzma_stream, for example by using
|
||||
* lzma_easy_encoder() or lzma_auto_decoder(). Some notes:
|
||||
* - In contrast to zlib, strm->next_in and strm->next_out are
|
||||
* ignored by all initialization functions, thus it is safe
|
||||
* to not initialize them yet.
|
||||
* - The initialization functions always set strm->total_in and
|
||||
* strm->total_out to zero.
|
||||
* - If the initialization function fails, no memory is left allocated
|
||||
* that would require freeing with lzma_end() even if some memory was
|
||||
* associated with the lzma_stream structure when the initialization
|
||||
* function was called.
|
||||
*
|
||||
* - Use lzma_code() to do the actual work.
|
||||
*
|
||||
* - Once the coding has been finished, the existing lzma_stream can be
|
||||
* reused. It is OK to reuse lzma_stream with different initialization
|
||||
* function without calling lzma_end() first. Old allocations are
|
||||
* automatically freed.
|
||||
*
|
||||
* - Finally, use lzma_end() to free the allocated memory. lzma_end() never
|
||||
* frees the lzma_stream structure itself.
|
||||
*
|
||||
* Application may modify the values of total_in and total_out as it wants.
|
||||
* They are updated by liblzma to match the amount of data read and
|
||||
* written but aren't used for anything else except as a possible return
|
||||
* values from lzma_get_progress().
|
||||
*/
|
||||
typedef struct {
|
||||
const uint8_t *next_in; /**< Pointer to the next input byte. */
|
||||
size_t avail_in; /**< Number of available input bytes in next_in. */
|
||||
uint64_t total_in; /**< Total number of bytes read by liblzma. */
|
||||
|
||||
uint8_t *next_out; /**< Pointer to the next output position. */
|
||||
size_t avail_out; /**< Amount of free space in next_out. */
|
||||
uint64_t total_out; /**< Total number of bytes written by liblzma. */
|
||||
|
||||
/**
|
||||
* \brief Custom memory allocation functions
|
||||
*
|
||||
* In most cases this is NULL which makes liblzma use
|
||||
* the standard malloc() and free().
|
||||
*
|
||||
* \note In 5.0.x this is not a const pointer.
|
||||
*/
|
||||
const lzma_allocator *allocator;
|
||||
|
||||
/** Internal state is not visible to applications. */
|
||||
lzma_internal *internal;
|
||||
|
||||
/*
|
||||
* Reserved space to allow possible future extensions without
|
||||
* breaking the ABI. Excluding the initialization of this structure,
|
||||
* you should not touch these, because the names of these variables
|
||||
* may change.
|
||||
*/
|
||||
void *reserved_ptr1;
|
||||
void *reserved_ptr2;
|
||||
void *reserved_ptr3;
|
||||
void *reserved_ptr4;
|
||||
uint64_t reserved_int1;
|
||||
uint64_t reserved_int2;
|
||||
size_t reserved_int3;
|
||||
size_t reserved_int4;
|
||||
lzma_reserved_enum reserved_enum1;
|
||||
lzma_reserved_enum reserved_enum2;
|
||||
|
||||
} lzma_stream;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Initialization for lzma_stream
|
||||
*
|
||||
* When you declare an instance of lzma_stream, you can immediately
|
||||
* initialize it so that initialization functions know that no memory
|
||||
* has been allocated yet:
|
||||
*
|
||||
* lzma_stream strm = LZMA_STREAM_INIT;
|
||||
*
|
||||
* If you need to initialize a dynamically allocated lzma_stream, you can use
|
||||
* memset(strm_pointer, 0, sizeof(lzma_stream)). Strictly speaking, this
|
||||
* violates the C standard since NULL may have different internal
|
||||
* representation than zero, but it should be portable enough in practice.
|
||||
* Anyway, for maximum portability, you can use something like this:
|
||||
*
|
||||
* lzma_stream tmp = LZMA_STREAM_INIT;
|
||||
* *strm = tmp;
|
||||
*/
|
||||
#define LZMA_STREAM_INIT \
|
||||
{ NULL, 0, 0, NULL, 0, 0, NULL, NULL, \
|
||||
NULL, NULL, NULL, NULL, 0, 0, 0, 0, \
|
||||
LZMA_RESERVED_ENUM, LZMA_RESERVED_ENUM }
|
||||
|
||||
|
||||
/**
|
||||
* \brief Encode or decode data
|
||||
*
|
||||
* Once the lzma_stream has been successfully initialized (e.g. with
|
||||
* lzma_stream_encoder()), the actual encoding or decoding is done
|
||||
* using this function. The application has to update strm->next_in,
|
||||
* strm->avail_in, strm->next_out, and strm->avail_out to pass input
|
||||
* to and get output from liblzma.
|
||||
*
|
||||
* See the description of the coder-specific initialization function to find
|
||||
* out what `action' values are supported by the coder.
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_code(lzma_stream *strm, lzma_action action)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Free memory allocated for the coder data structures
|
||||
*
|
||||
* \param strm Pointer to lzma_stream that is at least initialized
|
||||
* with LZMA_STREAM_INIT.
|
||||
*
|
||||
* After lzma_end(strm), strm->internal is guaranteed to be NULL. No other
|
||||
* members of the lzma_stream structure are touched.
|
||||
*
|
||||
* \note zlib indicates an error if application end()s unfinished
|
||||
* stream structure. liblzma doesn't do this, and assumes that
|
||||
* application knows what it is doing.
|
||||
*/
|
||||
extern LZMA_API(void) lzma_end(lzma_stream *strm) lzma_nothrow;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Get progress information
|
||||
*
|
||||
* In single-threaded mode, applications can get progress information from
|
||||
* strm->total_in and strm->total_out. In multi-threaded mode this is less
|
||||
* useful because a significant amount of both input and output data gets
|
||||
* buffered internally by liblzma. This makes total_in and total_out give
|
||||
* misleading information and also makes the progress indicator updates
|
||||
* non-smooth.
|
||||
*
|
||||
* This function gives realistic progress information also in multi-threaded
|
||||
* mode by taking into account the progress made by each thread. In
|
||||
* single-threaded mode *progress_in and *progress_out are set to
|
||||
* strm->total_in and strm->total_out, respectively.
|
||||
*/
|
||||
extern LZMA_API(void) lzma_get_progress(lzma_stream *strm,
|
||||
uint64_t *progress_in, uint64_t *progress_out) lzma_nothrow;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Get the memory usage of decoder filter chain
|
||||
*
|
||||
* This function is currently supported only when *strm has been initialized
|
||||
* with a function that takes a memlimit argument. With other functions, you
|
||||
* should use e.g. lzma_raw_encoder_memusage() or lzma_raw_decoder_memusage()
|
||||
* to estimate the memory requirements.
|
||||
*
|
||||
* This function is useful e.g. after LZMA_MEMLIMIT_ERROR to find out how big
|
||||
* the memory usage limit should have been to decode the input. Note that
|
||||
* this may give misleading information if decoding .xz Streams that have
|
||||
* multiple Blocks, because each Block can have different memory requirements.
|
||||
*
|
||||
* \return How much memory is currently allocated for the filter
|
||||
* decoders. If no filter chain is currently allocated,
|
||||
* some non-zero value is still returned, which is less than
|
||||
* or equal to what any filter chain would indicate as its
|
||||
* memory requirement.
|
||||
*
|
||||
* If this function isn't supported by *strm or some other error
|
||||
* occurs, zero is returned.
|
||||
*/
|
||||
extern LZMA_API(uint64_t) lzma_memusage(const lzma_stream *strm)
|
||||
lzma_nothrow lzma_attr_pure;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Get the current memory usage limit
|
||||
*
|
||||
* This function is supported only when *strm has been initialized with
|
||||
* a function that takes a memlimit argument.
|
||||
*
|
||||
* \return On success, the current memory usage limit is returned
|
||||
* (always non-zero). On error, zero is returned.
|
||||
*/
|
||||
extern LZMA_API(uint64_t) lzma_memlimit_get(const lzma_stream *strm)
|
||||
lzma_nothrow lzma_attr_pure;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Set the memory usage limit
|
||||
*
|
||||
* This function is supported only when *strm has been initialized with
|
||||
* a function that takes a memlimit argument.
|
||||
*
|
||||
* liblzma 5.2.3 and earlier has a bug where memlimit value of 0 causes
|
||||
* this function to do nothing (leaving the limit unchanged) and still
|
||||
* return LZMA_OK. Later versions treat 0 as if 1 had been specified (so
|
||||
* lzma_memlimit_get() will return 1 even if you specify 0 here).
|
||||
*
|
||||
* \return - LZMA_OK: New memory usage limit successfully set.
|
||||
* - LZMA_MEMLIMIT_ERROR: The new limit is too small.
|
||||
* The limit was not changed.
|
||||
* - LZMA_PROG_ERROR: Invalid arguments, e.g. *strm doesn't
|
||||
* support memory usage limit.
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_memlimit_set(
|
||||
lzma_stream *strm, uint64_t memlimit) lzma_nothrow;
|
||||
90
.CondaPkg/env/include/lzma/bcj.h
vendored
Normal file
90
.CondaPkg/env/include/lzma/bcj.h
vendored
Normal file
@@ -0,0 +1,90 @@
|
||||
/**
|
||||
* \file lzma/bcj.h
|
||||
* \brief Branch/Call/Jump conversion filters
|
||||
*/
|
||||
|
||||
/*
|
||||
* Author: Lasse Collin
|
||||
*
|
||||
* This file has been put into the public domain.
|
||||
* You can do whatever you want with this file.
|
||||
*
|
||||
* See ../lzma.h for information about liblzma as a whole.
|
||||
*/
|
||||
|
||||
#ifndef LZMA_H_INTERNAL
|
||||
# error Never include this file directly. Use <lzma.h> instead.
|
||||
#endif
|
||||
|
||||
|
||||
/* Filter IDs for lzma_filter.id */
|
||||
|
||||
#define LZMA_FILTER_X86 LZMA_VLI_C(0x04)
|
||||
/**<
|
||||
* Filter for x86 binaries
|
||||
*/
|
||||
|
||||
#define LZMA_FILTER_POWERPC LZMA_VLI_C(0x05)
|
||||
/**<
|
||||
* Filter for Big endian PowerPC binaries
|
||||
*/
|
||||
|
||||
#define LZMA_FILTER_IA64 LZMA_VLI_C(0x06)
|
||||
/**<
|
||||
* Filter for IA-64 (Itanium) binaries.
|
||||
*/
|
||||
|
||||
#define LZMA_FILTER_ARM LZMA_VLI_C(0x07)
|
||||
/**<
|
||||
* Filter for ARM binaries.
|
||||
*/
|
||||
|
||||
#define LZMA_FILTER_ARMTHUMB LZMA_VLI_C(0x08)
|
||||
/**<
|
||||
* Filter for ARM-Thumb binaries.
|
||||
*/
|
||||
|
||||
#define LZMA_FILTER_SPARC LZMA_VLI_C(0x09)
|
||||
/**<
|
||||
* Filter for SPARC binaries.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* \brief Options for BCJ filters
|
||||
*
|
||||
* The BCJ filters never change the size of the data. Specifying options
|
||||
* for them is optional: if pointer to options is NULL, default value is
|
||||
* used. You probably never need to specify options to BCJ filters, so just
|
||||
* set the options pointer to NULL and be happy.
|
||||
*
|
||||
* If options with non-default values have been specified when encoding,
|
||||
* the same options must also be specified when decoding.
|
||||
*
|
||||
* \note At the moment, none of the BCJ filters support
|
||||
* LZMA_SYNC_FLUSH. If LZMA_SYNC_FLUSH is specified,
|
||||
* LZMA_OPTIONS_ERROR will be returned. If there is need,
|
||||
* partial support for LZMA_SYNC_FLUSH can be added in future.
|
||||
* Partial means that flushing would be possible only at
|
||||
* offsets that are multiple of 2, 4, or 16 depending on
|
||||
* the filter, except x86 which cannot be made to support
|
||||
* LZMA_SYNC_FLUSH predictably.
|
||||
*/
|
||||
typedef struct {
|
||||
/**
|
||||
* \brief Start offset for conversions
|
||||
*
|
||||
* This setting is useful only when the same filter is used
|
||||
* _separately_ for multiple sections of the same executable file,
|
||||
* and the sections contain cross-section branch/call/jump
|
||||
* instructions. In that case it is beneficial to set the start
|
||||
* offset of the non-first sections so that the relative addresses
|
||||
* of the cross-section branch/call/jump instructions will use the
|
||||
* same absolute addresses as in the first section.
|
||||
*
|
||||
* When the pointer to options is NULL, the default value (zero)
|
||||
* is used.
|
||||
*/
|
||||
uint32_t start_offset;
|
||||
|
||||
} lzma_options_bcj;
|
||||
578
.CondaPkg/env/include/lzma/block.h
vendored
Normal file
578
.CondaPkg/env/include/lzma/block.h
vendored
Normal file
@@ -0,0 +1,578 @@
|
||||
/**
|
||||
* \file lzma/block.h
|
||||
* \brief .xz Block handling
|
||||
*/
|
||||
|
||||
/*
|
||||
* Author: Lasse Collin
|
||||
*
|
||||
* This file has been put into the public domain.
|
||||
* You can do whatever you want with this file.
|
||||
*
|
||||
* See ../lzma.h for information about liblzma as a whole.
|
||||
*/
|
||||
|
||||
#ifndef LZMA_H_INTERNAL
|
||||
# error Never include this file directly. Use <lzma.h> instead.
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
* \brief Options for the Block and Block Header encoders and decoders
|
||||
*
|
||||
* Different Block handling functions use different parts of this structure.
|
||||
* Some read some members, other functions write, and some do both. Only the
|
||||
* members listed for reading need to be initialized when the specified
|
||||
* functions are called. The members marked for writing will be assigned
|
||||
* new values at some point either by calling the given function or by
|
||||
* later calls to lzma_code().
|
||||
*/
|
||||
typedef struct {
|
||||
/**
|
||||
* \brief Block format version
|
||||
*
|
||||
* To prevent API and ABI breakages when new features are needed,
|
||||
* a version number is used to indicate which fields in this
|
||||
* structure are in use:
|
||||
* - liblzma >= 5.0.0: version = 0 is supported.
|
||||
* - liblzma >= 5.1.4beta: Support for version = 1 was added,
|
||||
* which adds the ignore_check field.
|
||||
*
|
||||
* If version is greater than one, most Block related functions
|
||||
* will return LZMA_OPTIONS_ERROR (lzma_block_header_decode() works
|
||||
* with any version value).
|
||||
*
|
||||
* Read by:
|
||||
* - All functions that take pointer to lzma_block as argument,
|
||||
* including lzma_block_header_decode().
|
||||
*
|
||||
* Written by:
|
||||
* - lzma_block_header_decode()
|
||||
*/
|
||||
uint32_t version;
|
||||
|
||||
/**
|
||||
* \brief Size of the Block Header field
|
||||
*
|
||||
* This is always a multiple of four.
|
||||
*
|
||||
* Read by:
|
||||
* - lzma_block_header_encode()
|
||||
* - lzma_block_header_decode()
|
||||
* - lzma_block_compressed_size()
|
||||
* - lzma_block_unpadded_size()
|
||||
* - lzma_block_total_size()
|
||||
* - lzma_block_decoder()
|
||||
* - lzma_block_buffer_decode()
|
||||
*
|
||||
* Written by:
|
||||
* - lzma_block_header_size()
|
||||
* - lzma_block_buffer_encode()
|
||||
*/
|
||||
uint32_t header_size;
|
||||
# define LZMA_BLOCK_HEADER_SIZE_MIN 8
|
||||
# define LZMA_BLOCK_HEADER_SIZE_MAX 1024
|
||||
|
||||
/**
|
||||
* \brief Type of integrity Check
|
||||
*
|
||||
* The Check ID is not stored into the Block Header, thus its value
|
||||
* must be provided also when decoding.
|
||||
*
|
||||
* Read by:
|
||||
* - lzma_block_header_encode()
|
||||
* - lzma_block_header_decode()
|
||||
* - lzma_block_compressed_size()
|
||||
* - lzma_block_unpadded_size()
|
||||
* - lzma_block_total_size()
|
||||
* - lzma_block_encoder()
|
||||
* - lzma_block_decoder()
|
||||
* - lzma_block_buffer_encode()
|
||||
* - lzma_block_buffer_decode()
|
||||
*/
|
||||
lzma_check check;
|
||||
|
||||
/**
|
||||
* \brief Size of the Compressed Data in bytes
|
||||
*
|
||||
* Encoding: If this is not LZMA_VLI_UNKNOWN, Block Header encoder
|
||||
* will store this value to the Block Header. Block encoder doesn't
|
||||
* care about this value, but will set it once the encoding has been
|
||||
* finished.
|
||||
*
|
||||
* Decoding: If this is not LZMA_VLI_UNKNOWN, Block decoder will
|
||||
* verify that the size of the Compressed Data field matches
|
||||
* compressed_size.
|
||||
*
|
||||
* Usually you don't know this value when encoding in streamed mode,
|
||||
* and thus cannot write this field into the Block Header.
|
||||
*
|
||||
* In non-streamed mode you can reserve space for this field before
|
||||
* encoding the actual Block. After encoding the data, finish the
|
||||
* Block by encoding the Block Header. Steps in detail:
|
||||
*
|
||||
* - Set compressed_size to some big enough value. If you don't know
|
||||
* better, use LZMA_VLI_MAX, but remember that bigger values take
|
||||
* more space in Block Header.
|
||||
*
|
||||
* - Call lzma_block_header_size() to see how much space you need to
|
||||
* reserve for the Block Header.
|
||||
*
|
||||
* - Encode the Block using lzma_block_encoder() and lzma_code().
|
||||
* It sets compressed_size to the correct value.
|
||||
*
|
||||
* - Use lzma_block_header_encode() to encode the Block Header.
|
||||
* Because space was reserved in the first step, you don't need
|
||||
* to call lzma_block_header_size() anymore, because due to
|
||||
* reserving, header_size has to be big enough. If it is "too big",
|
||||
* lzma_block_header_encode() will add enough Header Padding to
|
||||
* make Block Header to match the size specified by header_size.
|
||||
*
|
||||
* Read by:
|
||||
* - lzma_block_header_size()
|
||||
* - lzma_block_header_encode()
|
||||
* - lzma_block_compressed_size()
|
||||
* - lzma_block_unpadded_size()
|
||||
* - lzma_block_total_size()
|
||||
* - lzma_block_decoder()
|
||||
* - lzma_block_buffer_decode()
|
||||
*
|
||||
* Written by:
|
||||
* - lzma_block_header_decode()
|
||||
* - lzma_block_compressed_size()
|
||||
* - lzma_block_encoder()
|
||||
* - lzma_block_decoder()
|
||||
* - lzma_block_buffer_encode()
|
||||
* - lzma_block_buffer_decode()
|
||||
*/
|
||||
lzma_vli compressed_size;
|
||||
|
||||
/**
|
||||
* \brief Uncompressed Size in bytes
|
||||
*
|
||||
* This is handled very similarly to compressed_size above.
|
||||
*
|
||||
* uncompressed_size is needed by fewer functions than
|
||||
* compressed_size. This is because uncompressed_size isn't
|
||||
* needed to validate that Block stays within proper limits.
|
||||
*
|
||||
* Read by:
|
||||
* - lzma_block_header_size()
|
||||
* - lzma_block_header_encode()
|
||||
* - lzma_block_decoder()
|
||||
* - lzma_block_buffer_decode()
|
||||
*
|
||||
* Written by:
|
||||
* - lzma_block_header_decode()
|
||||
* - lzma_block_encoder()
|
||||
* - lzma_block_decoder()
|
||||
* - lzma_block_buffer_encode()
|
||||
* - lzma_block_buffer_decode()
|
||||
*/
|
||||
lzma_vli uncompressed_size;
|
||||
|
||||
/**
|
||||
* \brief Array of filters
|
||||
*
|
||||
* There can be 1-4 filters. The end of the array is marked with
|
||||
* .id = LZMA_VLI_UNKNOWN.
|
||||
*
|
||||
* Read by:
|
||||
* - lzma_block_header_size()
|
||||
* - lzma_block_header_encode()
|
||||
* - lzma_block_encoder()
|
||||
* - lzma_block_decoder()
|
||||
* - lzma_block_buffer_encode()
|
||||
* - lzma_block_buffer_decode()
|
||||
*
|
||||
* Written by:
|
||||
* - lzma_block_header_decode(): Note that this does NOT free()
|
||||
* the old filter options structures. All unused filters[] will
|
||||
* have .id == LZMA_VLI_UNKNOWN and .options == NULL. If
|
||||
* decoding fails, all filters[] are guaranteed to be
|
||||
* LZMA_VLI_UNKNOWN and NULL.
|
||||
*
|
||||
* \note Because of the array is terminated with
|
||||
* .id = LZMA_VLI_UNKNOWN, the actual array must
|
||||
* have LZMA_FILTERS_MAX + 1 members or the Block
|
||||
* Header decoder will overflow the buffer.
|
||||
*/
|
||||
lzma_filter *filters;
|
||||
|
||||
/**
|
||||
* \brief Raw value stored in the Check field
|
||||
*
|
||||
* After successful coding, the first lzma_check_size(check) bytes
|
||||
* of this array contain the raw value stored in the Check field.
|
||||
*
|
||||
* Note that CRC32 and CRC64 are stored in little endian byte order.
|
||||
* Take it into account if you display the Check values to the user.
|
||||
*
|
||||
* Written by:
|
||||
* - lzma_block_encoder()
|
||||
* - lzma_block_decoder()
|
||||
* - lzma_block_buffer_encode()
|
||||
* - lzma_block_buffer_decode()
|
||||
*/
|
||||
uint8_t raw_check[LZMA_CHECK_SIZE_MAX];
|
||||
|
||||
/*
|
||||
* Reserved space to allow possible future extensions without
|
||||
* breaking the ABI. You should not touch these, because the names
|
||||
* of these variables may change. These are and will never be used
|
||||
* with the currently supported options, so it is safe to leave these
|
||||
* uninitialized.
|
||||
*/
|
||||
void *reserved_ptr1;
|
||||
void *reserved_ptr2;
|
||||
void *reserved_ptr3;
|
||||
uint32_t reserved_int1;
|
||||
uint32_t reserved_int2;
|
||||
lzma_vli reserved_int3;
|
||||
lzma_vli reserved_int4;
|
||||
lzma_vli reserved_int5;
|
||||
lzma_vli reserved_int6;
|
||||
lzma_vli reserved_int7;
|
||||
lzma_vli reserved_int8;
|
||||
lzma_reserved_enum reserved_enum1;
|
||||
lzma_reserved_enum reserved_enum2;
|
||||
lzma_reserved_enum reserved_enum3;
|
||||
lzma_reserved_enum reserved_enum4;
|
||||
|
||||
/**
|
||||
* \brief A flag to Block decoder to not verify the Check field
|
||||
*
|
||||
* This field is supported by liblzma >= 5.1.4beta if .version >= 1.
|
||||
*
|
||||
* If this is set to true, the integrity check won't be calculated
|
||||
* and verified. Unless you know what you are doing, you should
|
||||
* leave this to false. (A reason to set this to true is when the
|
||||
* file integrity is verified externally anyway and you want to
|
||||
* speed up the decompression, which matters mostly when using
|
||||
* SHA-256 as the integrity check.)
|
||||
*
|
||||
* If .version >= 1, read by:
|
||||
* - lzma_block_decoder()
|
||||
* - lzma_block_buffer_decode()
|
||||
*
|
||||
* Written by (.version is ignored):
|
||||
* - lzma_block_header_decode() always sets this to false
|
||||
*/
|
||||
lzma_bool ignore_check;
|
||||
|
||||
lzma_bool reserved_bool2;
|
||||
lzma_bool reserved_bool3;
|
||||
lzma_bool reserved_bool4;
|
||||
lzma_bool reserved_bool5;
|
||||
lzma_bool reserved_bool6;
|
||||
lzma_bool reserved_bool7;
|
||||
lzma_bool reserved_bool8;
|
||||
|
||||
} lzma_block;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Decode the Block Header Size field
|
||||
*
|
||||
* To decode Block Header using lzma_block_header_decode(), the size of the
|
||||
* Block Header has to be known and stored into lzma_block.header_size.
|
||||
* The size can be calculated from the first byte of a Block using this macro.
|
||||
* Note that if the first byte is 0x00, it indicates beginning of Index; use
|
||||
* this macro only when the byte is not 0x00.
|
||||
*
|
||||
* There is no encoding macro, because Block Header encoder is enough for that.
|
||||
*/
|
||||
#define lzma_block_header_size_decode(b) (((uint32_t)(b) + 1) * 4)
|
||||
|
||||
|
||||
/**
|
||||
* \brief Calculate Block Header Size
|
||||
*
|
||||
* Calculate the minimum size needed for the Block Header field using the
|
||||
* settings specified in the lzma_block structure. Note that it is OK to
|
||||
* increase the calculated header_size value as long as it is a multiple of
|
||||
* four and doesn't exceed LZMA_BLOCK_HEADER_SIZE_MAX. Increasing header_size
|
||||
* just means that lzma_block_header_encode() will add Header Padding.
|
||||
*
|
||||
* \return - LZMA_OK: Size calculated successfully and stored to
|
||||
* block->header_size.
|
||||
* - LZMA_OPTIONS_ERROR: Unsupported version, filters or
|
||||
* filter options.
|
||||
* - LZMA_PROG_ERROR: Invalid values like compressed_size == 0.
|
||||
*
|
||||
* \note This doesn't check that all the options are valid i.e. this
|
||||
* may return LZMA_OK even if lzma_block_header_encode() or
|
||||
* lzma_block_encoder() would fail. If you want to validate the
|
||||
* filter chain, consider using lzma_memlimit_encoder() which as
|
||||
* a side-effect validates the filter chain.
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_block_header_size(lzma_block *block)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Encode Block Header
|
||||
*
|
||||
* The caller must have calculated the size of the Block Header already with
|
||||
* lzma_block_header_size(). If a value larger than the one calculated by
|
||||
* lzma_block_header_size() is used, the Block Header will be padded to the
|
||||
* specified size.
|
||||
*
|
||||
* \param out Beginning of the output buffer. This must be
|
||||
* at least block->header_size bytes.
|
||||
* \param block Block options to be encoded.
|
||||
*
|
||||
* \return - LZMA_OK: Encoding was successful. block->header_size
|
||||
* bytes were written to output buffer.
|
||||
* - LZMA_OPTIONS_ERROR: Invalid or unsupported options.
|
||||
* - LZMA_PROG_ERROR: Invalid arguments, for example
|
||||
* block->header_size is invalid or block->filters is NULL.
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_block_header_encode(
|
||||
const lzma_block *block, uint8_t *out)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Decode Block Header
|
||||
*
|
||||
* block->version should (usually) be set to the highest value supported
|
||||
* by the application. If the application sets block->version to a value
|
||||
* higher than supported by the current liblzma version, this function will
|
||||
* downgrade block->version to the highest value supported by it. Thus one
|
||||
* should check the value of block->version after calling this function if
|
||||
* block->version was set to a non-zero value and the application doesn't
|
||||
* otherwise know that the liblzma version being used is new enough to
|
||||
* support the specified block->version.
|
||||
*
|
||||
* The size of the Block Header must have already been decoded with
|
||||
* lzma_block_header_size_decode() macro and stored to block->header_size.
|
||||
*
|
||||
* The integrity check type from Stream Header must have been stored
|
||||
* to block->check.
|
||||
*
|
||||
* block->filters must have been allocated, but they don't need to be
|
||||
* initialized (possible existing filter options are not freed).
|
||||
*
|
||||
* \param block Destination for Block options.
|
||||
* \param allocator lzma_allocator for custom allocator functions.
|
||||
* Set to NULL to use malloc() (and also free()
|
||||
* if an error occurs).
|
||||
* \param in Beginning of the input buffer. This must be
|
||||
* at least block->header_size bytes.
|
||||
*
|
||||
* \return - LZMA_OK: Decoding was successful. block->header_size
|
||||
* bytes were read from the input buffer.
|
||||
* - LZMA_OPTIONS_ERROR: The Block Header specifies some
|
||||
* unsupported options such as unsupported filters. This can
|
||||
* happen also if block->version was set to a too low value
|
||||
* compared to what would be required to properly represent
|
||||
* the information stored in the Block Header.
|
||||
* - LZMA_DATA_ERROR: Block Header is corrupt, for example,
|
||||
* the CRC32 doesn't match.
|
||||
* - LZMA_PROG_ERROR: Invalid arguments, for example
|
||||
* block->header_size is invalid or block->filters is NULL.
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_block_header_decode(lzma_block *block,
|
||||
const lzma_allocator *allocator, const uint8_t *in)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Validate and set Compressed Size according to Unpadded Size
|
||||
*
|
||||
* Block Header stores Compressed Size, but Index has Unpadded Size. If the
|
||||
* application has already parsed the Index and is now decoding Blocks,
|
||||
* it can calculate Compressed Size from Unpadded Size. This function does
|
||||
* exactly that with error checking:
|
||||
*
|
||||
* - Compressed Size calculated from Unpadded Size must be positive integer,
|
||||
* that is, Unpadded Size must be big enough that after Block Header and
|
||||
* Check fields there's still at least one byte for Compressed Size.
|
||||
*
|
||||
* - If Compressed Size was present in Block Header, the new value
|
||||
* calculated from Unpadded Size is compared against the value
|
||||
* from Block Header.
|
||||
*
|
||||
* \note This function must be called _after_ decoding the Block Header
|
||||
* field so that it can properly validate Compressed Size if it
|
||||
* was present in Block Header.
|
||||
*
|
||||
* \return - LZMA_OK: block->compressed_size was set successfully.
|
||||
* - LZMA_DATA_ERROR: unpadded_size is too small compared to
|
||||
* block->header_size and lzma_check_size(block->check).
|
||||
* - LZMA_PROG_ERROR: Some values are invalid. For example,
|
||||
* block->header_size must be a multiple of four and
|
||||
* between 8 and 1024 inclusive.
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_block_compressed_size(
|
||||
lzma_block *block, lzma_vli unpadded_size)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Calculate Unpadded Size
|
||||
*
|
||||
* The Index field stores Unpadded Size and Uncompressed Size. The latter
|
||||
* can be taken directly from the lzma_block structure after coding a Block,
|
||||
* but Unpadded Size needs to be calculated from Block Header Size,
|
||||
* Compressed Size, and size of the Check field. This is where this function
|
||||
* is needed.
|
||||
*
|
||||
* \return Unpadded Size on success, or zero on error.
|
||||
*/
|
||||
extern LZMA_API(lzma_vli) lzma_block_unpadded_size(const lzma_block *block)
|
||||
lzma_nothrow lzma_attr_pure;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Calculate the total encoded size of a Block
|
||||
*
|
||||
* This is equivalent to lzma_block_unpadded_size() except that the returned
|
||||
* value includes the size of the Block Padding field.
|
||||
*
|
||||
* \return On success, total encoded size of the Block. On error,
|
||||
* zero is returned.
|
||||
*/
|
||||
extern LZMA_API(lzma_vli) lzma_block_total_size(const lzma_block *block)
|
||||
lzma_nothrow lzma_attr_pure;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Initialize .xz Block encoder
|
||||
*
|
||||
* Valid actions for lzma_code() are LZMA_RUN, LZMA_SYNC_FLUSH (only if the
|
||||
* filter chain supports it), and LZMA_FINISH.
|
||||
*
|
||||
* \return - LZMA_OK: All good, continue with lzma_code().
|
||||
* - LZMA_MEM_ERROR
|
||||
* - LZMA_OPTIONS_ERROR
|
||||
* - LZMA_UNSUPPORTED_CHECK: block->check specifies a Check ID
|
||||
* that is not supported by this build of liblzma. Initializing
|
||||
* the encoder failed.
|
||||
* - LZMA_PROG_ERROR
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_block_encoder(
|
||||
lzma_stream *strm, lzma_block *block)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Initialize .xz Block decoder
|
||||
*
|
||||
* Valid actions for lzma_code() are LZMA_RUN and LZMA_FINISH. Using
|
||||
* LZMA_FINISH is not required. It is supported only for convenience.
|
||||
*
|
||||
* \return - LZMA_OK: All good, continue with lzma_code().
|
||||
* - LZMA_PROG_ERROR
|
||||
* - LZMA_MEM_ERROR
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_block_decoder(
|
||||
lzma_stream *strm, lzma_block *block)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Calculate maximum output size for single-call Block encoding
|
||||
*
|
||||
* This is equivalent to lzma_stream_buffer_bound() but for .xz Blocks.
|
||||
* See the documentation of lzma_stream_buffer_bound().
|
||||
*/
|
||||
extern LZMA_API(size_t) lzma_block_buffer_bound(size_t uncompressed_size)
|
||||
lzma_nothrow;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Single-call .xz Block encoder
|
||||
*
|
||||
* In contrast to the multi-call encoder initialized with
|
||||
* lzma_block_encoder(), this function encodes also the Block Header. This
|
||||
* is required to make it possible to write appropriate Block Header also
|
||||
* in case the data isn't compressible, and different filter chain has to be
|
||||
* used to encode the data in uncompressed form using uncompressed chunks
|
||||
* of the LZMA2 filter.
|
||||
*
|
||||
* When the data isn't compressible, header_size, compressed_size, and
|
||||
* uncompressed_size are set just like when the data was compressible, but
|
||||
* it is possible that header_size is too small to hold the filter chain
|
||||
* specified in block->filters, because that isn't necessarily the filter
|
||||
* chain that was actually used to encode the data. lzma_block_unpadded_size()
|
||||
* still works normally, because it doesn't read the filters array.
|
||||
*
|
||||
* \param block Block options: block->version, block->check,
|
||||
* and block->filters must have been initialized.
|
||||
* \param allocator lzma_allocator for custom allocator functions.
|
||||
* Set to NULL to use malloc() and free().
|
||||
* \param in Beginning of the input buffer
|
||||
* \param in_size Size of the input buffer
|
||||
* \param out Beginning of the output buffer
|
||||
* \param out_pos The next byte will be written to out[*out_pos].
|
||||
* *out_pos is updated only if encoding succeeds.
|
||||
* \param out_size Size of the out buffer; the first byte into
|
||||
* which no data is written to is out[out_size].
|
||||
*
|
||||
* \return - LZMA_OK: Encoding was successful.
|
||||
* - LZMA_BUF_ERROR: Not enough output buffer space.
|
||||
* - LZMA_UNSUPPORTED_CHECK
|
||||
* - LZMA_OPTIONS_ERROR
|
||||
* - LZMA_MEM_ERROR
|
||||
* - LZMA_DATA_ERROR
|
||||
* - LZMA_PROG_ERROR
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_block_buffer_encode(
|
||||
lzma_block *block, const lzma_allocator *allocator,
|
||||
const uint8_t *in, size_t in_size,
|
||||
uint8_t *out, size_t *out_pos, size_t out_size)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Single-call uncompressed .xz Block encoder
|
||||
*
|
||||
* This is like lzma_block_buffer_encode() except this doesn't try to
|
||||
* compress the data and instead encodes the data using LZMA2 uncompressed
|
||||
* chunks. The required output buffer size can be determined with
|
||||
* lzma_block_buffer_bound().
|
||||
*
|
||||
* Since the data won't be compressed, this function ignores block->filters.
|
||||
* This function doesn't take lzma_allocator because this function doesn't
|
||||
* allocate any memory from the heap.
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_block_uncomp_encode(lzma_block *block,
|
||||
const uint8_t *in, size_t in_size,
|
||||
uint8_t *out, size_t *out_pos, size_t out_size)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Single-call .xz Block decoder
|
||||
*
|
||||
* This is single-call equivalent of lzma_block_decoder(), and requires that
|
||||
* the caller has already decoded Block Header and checked its memory usage.
|
||||
*
|
||||
* \param block Block options just like with lzma_block_decoder().
|
||||
* \param allocator lzma_allocator for custom allocator functions.
|
||||
* Set to NULL to use malloc() and free().
|
||||
* \param in Beginning of the input buffer
|
||||
* \param in_pos The next byte will be read from in[*in_pos].
|
||||
* *in_pos is updated only if decoding succeeds.
|
||||
* \param in_size Size of the input buffer; the first byte that
|
||||
* won't be read is in[in_size].
|
||||
* \param out Beginning of the output buffer
|
||||
* \param out_pos The next byte will be written to out[*out_pos].
|
||||
* *out_pos is updated only if encoding succeeds.
|
||||
* \param out_size Size of the out buffer; the first byte into
|
||||
* which no data is written to is out[out_size].
|
||||
*
|
||||
* \return - LZMA_OK: Decoding was successful.
|
||||
* - LZMA_OPTIONS_ERROR
|
||||
* - LZMA_DATA_ERROR
|
||||
* - LZMA_MEM_ERROR
|
||||
* - LZMA_BUF_ERROR: Output buffer was too small.
|
||||
* - LZMA_PROG_ERROR
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_block_buffer_decode(
|
||||
lzma_block *block, const lzma_allocator *allocator,
|
||||
const uint8_t *in, size_t *in_pos, size_t in_size,
|
||||
uint8_t *out, size_t *out_pos, size_t out_size)
|
||||
lzma_nothrow;
|
||||
150
.CondaPkg/env/include/lzma/check.h
vendored
Normal file
150
.CondaPkg/env/include/lzma/check.h
vendored
Normal file
@@ -0,0 +1,150 @@
|
||||
/**
|
||||
* \file lzma/check.h
|
||||
* \brief Integrity checks
|
||||
*/
|
||||
|
||||
/*
|
||||
* Author: Lasse Collin
|
||||
*
|
||||
* This file has been put into the public domain.
|
||||
* You can do whatever you want with this file.
|
||||
*
|
||||
* See ../lzma.h for information about liblzma as a whole.
|
||||
*/
|
||||
|
||||
#ifndef LZMA_H_INTERNAL
|
||||
# error Never include this file directly. Use <lzma.h> instead.
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
* \brief Type of the integrity check (Check ID)
|
||||
*
|
||||
* The .xz format supports multiple types of checks that are calculated
|
||||
* from the uncompressed data. They vary in both speed and ability to
|
||||
* detect errors.
|
||||
*/
|
||||
typedef enum {
|
||||
LZMA_CHECK_NONE = 0,
|
||||
/**<
|
||||
* No Check is calculated.
|
||||
*
|
||||
* Size of the Check field: 0 bytes
|
||||
*/
|
||||
|
||||
LZMA_CHECK_CRC32 = 1,
|
||||
/**<
|
||||
* CRC32 using the polynomial from the IEEE 802.3 standard
|
||||
*
|
||||
* Size of the Check field: 4 bytes
|
||||
*/
|
||||
|
||||
LZMA_CHECK_CRC64 = 4,
|
||||
/**<
|
||||
* CRC64 using the polynomial from the ECMA-182 standard
|
||||
*
|
||||
* Size of the Check field: 8 bytes
|
||||
*/
|
||||
|
||||
LZMA_CHECK_SHA256 = 10
|
||||
/**<
|
||||
* SHA-256
|
||||
*
|
||||
* Size of the Check field: 32 bytes
|
||||
*/
|
||||
} lzma_check;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Maximum valid Check ID
|
||||
*
|
||||
* The .xz file format specification specifies 16 Check IDs (0-15). Some
|
||||
* of them are only reserved, that is, no actual Check algorithm has been
|
||||
* assigned. When decoding, liblzma still accepts unknown Check IDs for
|
||||
* future compatibility. If a valid but unsupported Check ID is detected,
|
||||
* liblzma can indicate a warning; see the flags LZMA_TELL_NO_CHECK,
|
||||
* LZMA_TELL_UNSUPPORTED_CHECK, and LZMA_TELL_ANY_CHECK in container.h.
|
||||
*/
|
||||
#define LZMA_CHECK_ID_MAX 15
|
||||
|
||||
|
||||
/**
|
||||
* \brief Test if the given Check ID is supported
|
||||
*
|
||||
* Return true if the given Check ID is supported by this liblzma build.
|
||||
* Otherwise false is returned. It is safe to call this with a value that
|
||||
* is not in the range [0, 15]; in that case the return value is always false.
|
||||
*
|
||||
* You can assume that LZMA_CHECK_NONE and LZMA_CHECK_CRC32 are always
|
||||
* supported (even if liblzma is built with limited features).
|
||||
*/
|
||||
extern LZMA_API(lzma_bool) lzma_check_is_supported(lzma_check check)
|
||||
lzma_nothrow lzma_attr_const;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Get the size of the Check field with the given Check ID
|
||||
*
|
||||
* Although not all Check IDs have a check algorithm associated, the size of
|
||||
* every Check is already frozen. This function returns the size (in bytes) of
|
||||
* the Check field with the specified Check ID. The values are:
|
||||
* { 0, 4, 4, 4, 8, 8, 8, 16, 16, 16, 32, 32, 32, 64, 64, 64 }
|
||||
*
|
||||
* If the argument is not in the range [0, 15], UINT32_MAX is returned.
|
||||
*/
|
||||
extern LZMA_API(uint32_t) lzma_check_size(lzma_check check)
|
||||
lzma_nothrow lzma_attr_const;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Maximum size of a Check field
|
||||
*/
|
||||
#define LZMA_CHECK_SIZE_MAX 64
|
||||
|
||||
|
||||
/**
|
||||
* \brief Calculate CRC32
|
||||
*
|
||||
* Calculate CRC32 using the polynomial from the IEEE 802.3 standard.
|
||||
*
|
||||
* \param buf Pointer to the input buffer
|
||||
* \param size Size of the input buffer
|
||||
* \param crc Previously returned CRC value. This is used to
|
||||
* calculate the CRC of a big buffer in smaller chunks.
|
||||
* Set to zero when starting a new calculation.
|
||||
*
|
||||
* \return Updated CRC value, which can be passed to this function
|
||||
* again to continue CRC calculation.
|
||||
*/
|
||||
extern LZMA_API(uint32_t) lzma_crc32(
|
||||
const uint8_t *buf, size_t size, uint32_t crc)
|
||||
lzma_nothrow lzma_attr_pure;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Calculate CRC64
|
||||
*
|
||||
* Calculate CRC64 using the polynomial from the ECMA-182 standard.
|
||||
*
|
||||
* This function is used similarly to lzma_crc32(). See its documentation.
|
||||
*/
|
||||
extern LZMA_API(uint64_t) lzma_crc64(
|
||||
const uint8_t *buf, size_t size, uint64_t crc)
|
||||
lzma_nothrow lzma_attr_pure;
|
||||
|
||||
|
||||
/*
|
||||
* SHA-256 functions are currently not exported to public API.
|
||||
* Contact Lasse Collin if you think it should be.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* \brief Get the type of the integrity check
|
||||
*
|
||||
* This function can be called only immediately after lzma_code() has
|
||||
* returned LZMA_NO_CHECK, LZMA_UNSUPPORTED_CHECK, or LZMA_GET_CHECK.
|
||||
* Calling this function in any other situation has undefined behavior.
|
||||
*/
|
||||
extern LZMA_API(lzma_check) lzma_get_check(const lzma_stream *strm)
|
||||
lzma_nothrow;
|
||||
632
.CondaPkg/env/include/lzma/container.h
vendored
Normal file
632
.CondaPkg/env/include/lzma/container.h
vendored
Normal file
@@ -0,0 +1,632 @@
|
||||
/**
|
||||
* \file lzma/container.h
|
||||
* \brief File formats
|
||||
*/
|
||||
|
||||
/*
|
||||
* Author: Lasse Collin
|
||||
*
|
||||
* This file has been put into the public domain.
|
||||
* You can do whatever you want with this file.
|
||||
*
|
||||
* See ../lzma.h for information about liblzma as a whole.
|
||||
*/
|
||||
|
||||
#ifndef LZMA_H_INTERNAL
|
||||
# error Never include this file directly. Use <lzma.h> instead.
|
||||
#endif
|
||||
|
||||
|
||||
/************
|
||||
* Encoding *
|
||||
************/
|
||||
|
||||
/**
|
||||
* \brief Default compression preset
|
||||
*
|
||||
* It's not straightforward to recommend a default preset, because in some
|
||||
* cases keeping the resource usage relatively low is more important that
|
||||
* getting the maximum compression ratio.
|
||||
*/
|
||||
#define LZMA_PRESET_DEFAULT UINT32_C(6)
|
||||
|
||||
|
||||
/**
|
||||
* \brief Mask for preset level
|
||||
*
|
||||
* This is useful only if you need to extract the level from the preset
|
||||
* variable. That should be rare.
|
||||
*/
|
||||
#define LZMA_PRESET_LEVEL_MASK UINT32_C(0x1F)
|
||||
|
||||
|
||||
/*
|
||||
* Preset flags
|
||||
*
|
||||
* Currently only one flag is defined.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief Extreme compression preset
|
||||
*
|
||||
* This flag modifies the preset to make the encoding significantly slower
|
||||
* while improving the compression ratio only marginally. This is useful
|
||||
* when you don't mind wasting time to get as small result as possible.
|
||||
*
|
||||
* This flag doesn't affect the memory usage requirements of the decoder (at
|
||||
* least not significantly). The memory usage of the encoder may be increased
|
||||
* a little but only at the lowest preset levels (0-3).
|
||||
*/
|
||||
#define LZMA_PRESET_EXTREME (UINT32_C(1) << 31)
|
||||
|
||||
|
||||
/**
|
||||
* \brief Multithreading options
|
||||
*/
|
||||
typedef struct {
|
||||
/**
|
||||
* \brief Flags
|
||||
*
|
||||
* Set this to zero if no flags are wanted.
|
||||
*
|
||||
* No flags are currently supported.
|
||||
*/
|
||||
uint32_t flags;
|
||||
|
||||
/**
|
||||
* \brief Number of worker threads to use
|
||||
*/
|
||||
uint32_t threads;
|
||||
|
||||
/**
|
||||
* \brief Maximum uncompressed size of a Block
|
||||
*
|
||||
* The encoder will start a new .xz Block every block_size bytes.
|
||||
* Using LZMA_FULL_FLUSH or LZMA_FULL_BARRIER with lzma_code()
|
||||
* the caller may tell liblzma to start a new Block earlier.
|
||||
*
|
||||
* With LZMA2, a recommended block size is 2-4 times the LZMA2
|
||||
* dictionary size. With very small dictionaries, it is recommended
|
||||
* to use at least 1 MiB block size for good compression ratio, even
|
||||
* if this is more than four times the dictionary size. Note that
|
||||
* these are only recommendations for typical use cases; feel free
|
||||
* to use other values. Just keep in mind that using a block size
|
||||
* less than the LZMA2 dictionary size is waste of RAM.
|
||||
*
|
||||
* Set this to 0 to let liblzma choose the block size depending
|
||||
* on the compression options. For LZMA2 it will be 3*dict_size
|
||||
* or 1 MiB, whichever is more.
|
||||
*
|
||||
* For each thread, about 3 * block_size bytes of memory will be
|
||||
* allocated. This may change in later liblzma versions. If so,
|
||||
* the memory usage will probably be reduced, not increased.
|
||||
*/
|
||||
uint64_t block_size;
|
||||
|
||||
/**
|
||||
* \brief Timeout to allow lzma_code() to return early
|
||||
*
|
||||
* Multithreading can make liblzma to consume input and produce
|
||||
* output in a very bursty way: it may first read a lot of input
|
||||
* to fill internal buffers, then no input or output occurs for
|
||||
* a while.
|
||||
*
|
||||
* In single-threaded mode, lzma_code() won't return until it has
|
||||
* either consumed all the input or filled the output buffer. If
|
||||
* this is done in multithreaded mode, it may cause a call
|
||||
* lzma_code() to take even tens of seconds, which isn't acceptable
|
||||
* in all applications.
|
||||
*
|
||||
* To avoid very long blocking times in lzma_code(), a timeout
|
||||
* (in milliseconds) may be set here. If lzma_code() would block
|
||||
* longer than this number of milliseconds, it will return with
|
||||
* LZMA_OK. Reasonable values are 100 ms or more. The xz command
|
||||
* line tool uses 300 ms.
|
||||
*
|
||||
* If long blocking times are fine for you, set timeout to a special
|
||||
* value of 0, which will disable the timeout mechanism and will make
|
||||
* lzma_code() block until all the input is consumed or the output
|
||||
* buffer has been filled.
|
||||
*
|
||||
* \note Even with a timeout, lzma_code() might sometimes take
|
||||
* somewhat long time to return. No timing guarantees
|
||||
* are made.
|
||||
*/
|
||||
uint32_t timeout;
|
||||
|
||||
/**
|
||||
* \brief Compression preset (level and possible flags)
|
||||
*
|
||||
* The preset is set just like with lzma_easy_encoder().
|
||||
* The preset is ignored if filters below is non-NULL.
|
||||
*/
|
||||
uint32_t preset;
|
||||
|
||||
/**
|
||||
* \brief Filter chain (alternative to a preset)
|
||||
*
|
||||
* If this is NULL, the preset above is used. Otherwise the preset
|
||||
* is ignored and the filter chain specified here is used.
|
||||
*/
|
||||
const lzma_filter *filters;
|
||||
|
||||
/**
|
||||
* \brief Integrity check type
|
||||
*
|
||||
* See check.h for available checks. The xz command line tool
|
||||
* defaults to LZMA_CHECK_CRC64, which is a good choice if you
|
||||
* are unsure.
|
||||
*/
|
||||
lzma_check check;
|
||||
|
||||
/*
|
||||
* Reserved space to allow possible future extensions without
|
||||
* breaking the ABI. You should not touch these, because the names
|
||||
* of these variables may change. These are and will never be used
|
||||
* with the currently supported options, so it is safe to leave these
|
||||
* uninitialized.
|
||||
*/
|
||||
lzma_reserved_enum reserved_enum1;
|
||||
lzma_reserved_enum reserved_enum2;
|
||||
lzma_reserved_enum reserved_enum3;
|
||||
uint32_t reserved_int1;
|
||||
uint32_t reserved_int2;
|
||||
uint32_t reserved_int3;
|
||||
uint32_t reserved_int4;
|
||||
uint64_t reserved_int5;
|
||||
uint64_t reserved_int6;
|
||||
uint64_t reserved_int7;
|
||||
uint64_t reserved_int8;
|
||||
void *reserved_ptr1;
|
||||
void *reserved_ptr2;
|
||||
void *reserved_ptr3;
|
||||
void *reserved_ptr4;
|
||||
|
||||
} lzma_mt;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Calculate approximate memory usage of easy encoder
|
||||
*
|
||||
* This function is a wrapper for lzma_raw_encoder_memusage().
|
||||
*
|
||||
* \param preset Compression preset (level and possible flags)
|
||||
*
|
||||
* \return Number of bytes of memory required for the given
|
||||
* preset when encoding. If an error occurs, for example
|
||||
* due to unsupported preset, UINT64_MAX is returned.
|
||||
*/
|
||||
extern LZMA_API(uint64_t) lzma_easy_encoder_memusage(uint32_t preset)
|
||||
lzma_nothrow lzma_attr_pure;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Calculate approximate decoder memory usage of a preset
|
||||
*
|
||||
* This function is a wrapper for lzma_raw_decoder_memusage().
|
||||
*
|
||||
* \param preset Compression preset (level and possible flags)
|
||||
*
|
||||
* \return Number of bytes of memory required to decompress a file
|
||||
* that was compressed using the given preset. If an error
|
||||
* occurs, for example due to unsupported preset, UINT64_MAX
|
||||
* is returned.
|
||||
*/
|
||||
extern LZMA_API(uint64_t) lzma_easy_decoder_memusage(uint32_t preset)
|
||||
lzma_nothrow lzma_attr_pure;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Initialize .xz Stream encoder using a preset number
|
||||
*
|
||||
* This function is intended for those who just want to use the basic features
|
||||
* if liblzma (that is, most developers out there).
|
||||
*
|
||||
* \param strm Pointer to lzma_stream that is at least initialized
|
||||
* with LZMA_STREAM_INIT.
|
||||
* \param preset Compression preset to use. A preset consist of level
|
||||
* number and zero or more flags. Usually flags aren't
|
||||
* used, so preset is simply a number [0, 9] which match
|
||||
* the options -0 ... -9 of the xz command line tool.
|
||||
* Additional flags can be be set using bitwise-or with
|
||||
* the preset level number, e.g. 6 | LZMA_PRESET_EXTREME.
|
||||
* \param check Integrity check type to use. See check.h for available
|
||||
* checks. The xz command line tool defaults to
|
||||
* LZMA_CHECK_CRC64, which is a good choice if you are
|
||||
* unsure. LZMA_CHECK_CRC32 is good too as long as the
|
||||
* uncompressed file is not many gigabytes.
|
||||
*
|
||||
* \return - LZMA_OK: Initialization succeeded. Use lzma_code() to
|
||||
* encode your data.
|
||||
* - LZMA_MEM_ERROR: Memory allocation failed.
|
||||
* - LZMA_OPTIONS_ERROR: The given compression preset is not
|
||||
* supported by this build of liblzma.
|
||||
* - LZMA_UNSUPPORTED_CHECK: The given check type is not
|
||||
* supported by this liblzma build.
|
||||
* - LZMA_PROG_ERROR: One or more of the parameters have values
|
||||
* that will never be valid. For example, strm == NULL.
|
||||
*
|
||||
* If initialization fails (return value is not LZMA_OK), all the memory
|
||||
* allocated for *strm by liblzma is always freed. Thus, there is no need
|
||||
* to call lzma_end() after failed initialization.
|
||||
*
|
||||
* If initialization succeeds, use lzma_code() to do the actual encoding.
|
||||
* Valid values for `action' (the second argument of lzma_code()) are
|
||||
* LZMA_RUN, LZMA_SYNC_FLUSH, LZMA_FULL_FLUSH, and LZMA_FINISH. In future,
|
||||
* there may be compression levels or flags that don't support LZMA_SYNC_FLUSH.
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_easy_encoder(
|
||||
lzma_stream *strm, uint32_t preset, lzma_check check)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Single-call .xz Stream encoding using a preset number
|
||||
*
|
||||
* The maximum required output buffer size can be calculated with
|
||||
* lzma_stream_buffer_bound().
|
||||
*
|
||||
* \param preset Compression preset to use. See the description
|
||||
* in lzma_easy_encoder().
|
||||
* \param check Type of the integrity check to calculate from
|
||||
* uncompressed data.
|
||||
* \param allocator lzma_allocator for custom allocator functions.
|
||||
* Set to NULL to use malloc() and free().
|
||||
* \param in Beginning of the input buffer
|
||||
* \param in_size Size of the input buffer
|
||||
* \param out Beginning of the output buffer
|
||||
* \param out_pos The next byte will be written to out[*out_pos].
|
||||
* *out_pos is updated only if encoding succeeds.
|
||||
* \param out_size Size of the out buffer; the first byte into
|
||||
* which no data is written to is out[out_size].
|
||||
*
|
||||
* \return - LZMA_OK: Encoding was successful.
|
||||
* - LZMA_BUF_ERROR: Not enough output buffer space.
|
||||
* - LZMA_UNSUPPORTED_CHECK
|
||||
* - LZMA_OPTIONS_ERROR
|
||||
* - LZMA_MEM_ERROR
|
||||
* - LZMA_DATA_ERROR
|
||||
* - LZMA_PROG_ERROR
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_easy_buffer_encode(
|
||||
uint32_t preset, lzma_check check,
|
||||
const lzma_allocator *allocator,
|
||||
const uint8_t *in, size_t in_size,
|
||||
uint8_t *out, size_t *out_pos, size_t out_size) lzma_nothrow;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Initialize .xz Stream encoder using a custom filter chain
|
||||
*
|
||||
* \param strm Pointer to properly prepared lzma_stream
|
||||
* \param filters Array of filters. This must be terminated with
|
||||
* filters[n].id = LZMA_VLI_UNKNOWN. See filter.h for
|
||||
* more information.
|
||||
* \param check Type of the integrity check to calculate from
|
||||
* uncompressed data.
|
||||
*
|
||||
* \return - LZMA_OK: Initialization was successful.
|
||||
* - LZMA_MEM_ERROR
|
||||
* - LZMA_UNSUPPORTED_CHECK
|
||||
* - LZMA_OPTIONS_ERROR
|
||||
* - LZMA_PROG_ERROR
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_stream_encoder(lzma_stream *strm,
|
||||
const lzma_filter *filters, lzma_check check)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Calculate approximate memory usage of multithreaded .xz encoder
|
||||
*
|
||||
* Since doing the encoding in threaded mode doesn't affect the memory
|
||||
* requirements of single-threaded decompressor, you can use
|
||||
* lzma_easy_decoder_memusage(options->preset) or
|
||||
* lzma_raw_decoder_memusage(options->filters) to calculate
|
||||
* the decompressor memory requirements.
|
||||
*
|
||||
* \param options Compression options
|
||||
*
|
||||
* \return Number of bytes of memory required for encoding with the
|
||||
* given options. If an error occurs, for example due to
|
||||
* unsupported preset or filter chain, UINT64_MAX is returned.
|
||||
*/
|
||||
extern LZMA_API(uint64_t) lzma_stream_encoder_mt_memusage(
|
||||
const lzma_mt *options) lzma_nothrow lzma_attr_pure;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Initialize multithreaded .xz Stream encoder
|
||||
*
|
||||
* This provides the functionality of lzma_easy_encoder() and
|
||||
* lzma_stream_encoder() as a single function for multithreaded use.
|
||||
*
|
||||
* The supported actions for lzma_code() are LZMA_RUN, LZMA_FULL_FLUSH,
|
||||
* LZMA_FULL_BARRIER, and LZMA_FINISH. Support for LZMA_SYNC_FLUSH might be
|
||||
* added in the future.
|
||||
*
|
||||
* \param strm Pointer to properly prepared lzma_stream
|
||||
* \param options Pointer to multithreaded compression options
|
||||
*
|
||||
* \return - LZMA_OK
|
||||
* - LZMA_MEM_ERROR
|
||||
* - LZMA_UNSUPPORTED_CHECK
|
||||
* - LZMA_OPTIONS_ERROR
|
||||
* - LZMA_PROG_ERROR
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_stream_encoder_mt(
|
||||
lzma_stream *strm, const lzma_mt *options)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Initialize .lzma encoder (legacy file format)
|
||||
*
|
||||
* The .lzma format is sometimes called the LZMA_Alone format, which is the
|
||||
* reason for the name of this function. The .lzma format supports only the
|
||||
* LZMA1 filter. There is no support for integrity checks like CRC32.
|
||||
*
|
||||
* Use this function if and only if you need to create files readable by
|
||||
* legacy LZMA tools such as LZMA Utils 4.32.x. Moving to the .xz format
|
||||
* is strongly recommended.
|
||||
*
|
||||
* The valid action values for lzma_code() are LZMA_RUN and LZMA_FINISH.
|
||||
* No kind of flushing is supported, because the file format doesn't make
|
||||
* it possible.
|
||||
*
|
||||
* \return - LZMA_OK
|
||||
* - LZMA_MEM_ERROR
|
||||
* - LZMA_OPTIONS_ERROR
|
||||
* - LZMA_PROG_ERROR
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_alone_encoder(
|
||||
lzma_stream *strm, const lzma_options_lzma *options)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Calculate output buffer size for single-call Stream encoder
|
||||
*
|
||||
* When trying to compress uncompressible data, the encoded size will be
|
||||
* slightly bigger than the input data. This function calculates how much
|
||||
* output buffer space is required to be sure that lzma_stream_buffer_encode()
|
||||
* doesn't return LZMA_BUF_ERROR.
|
||||
*
|
||||
* The calculated value is not exact, but it is guaranteed to be big enough.
|
||||
* The actual maximum output space required may be slightly smaller (up to
|
||||
* about 100 bytes). This should not be a problem in practice.
|
||||
*
|
||||
* If the calculated maximum size doesn't fit into size_t or would make the
|
||||
* Stream grow past LZMA_VLI_MAX (which should never happen in practice),
|
||||
* zero is returned to indicate the error.
|
||||
*
|
||||
* \note The limit calculated by this function applies only to
|
||||
* single-call encoding. Multi-call encoding may (and probably
|
||||
* will) have larger maximum expansion when encoding
|
||||
* uncompressible data. Currently there is no function to
|
||||
* calculate the maximum expansion of multi-call encoding.
|
||||
*/
|
||||
extern LZMA_API(size_t) lzma_stream_buffer_bound(size_t uncompressed_size)
|
||||
lzma_nothrow;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Single-call .xz Stream encoder
|
||||
*
|
||||
* \param filters Array of filters. This must be terminated with
|
||||
* filters[n].id = LZMA_VLI_UNKNOWN. See filter.h
|
||||
* for more information.
|
||||
* \param check Type of the integrity check to calculate from
|
||||
* uncompressed data.
|
||||
* \param allocator lzma_allocator for custom allocator functions.
|
||||
* Set to NULL to use malloc() and free().
|
||||
* \param in Beginning of the input buffer
|
||||
* \param in_size Size of the input buffer
|
||||
* \param out Beginning of the output buffer
|
||||
* \param out_pos The next byte will be written to out[*out_pos].
|
||||
* *out_pos is updated only if encoding succeeds.
|
||||
* \param out_size Size of the out buffer; the first byte into
|
||||
* which no data is written to is out[out_size].
|
||||
*
|
||||
* \return - LZMA_OK: Encoding was successful.
|
||||
* - LZMA_BUF_ERROR: Not enough output buffer space.
|
||||
* - LZMA_UNSUPPORTED_CHECK
|
||||
* - LZMA_OPTIONS_ERROR
|
||||
* - LZMA_MEM_ERROR
|
||||
* - LZMA_DATA_ERROR
|
||||
* - LZMA_PROG_ERROR
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_stream_buffer_encode(
|
||||
lzma_filter *filters, lzma_check check,
|
||||
const lzma_allocator *allocator,
|
||||
const uint8_t *in, size_t in_size,
|
||||
uint8_t *out, size_t *out_pos, size_t out_size)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/************
|
||||
* Decoding *
|
||||
************/
|
||||
|
||||
/**
|
||||
* This flag makes lzma_code() return LZMA_NO_CHECK if the input stream
|
||||
* being decoded has no integrity check. Note that when used with
|
||||
* lzma_auto_decoder(), all .lzma files will trigger LZMA_NO_CHECK
|
||||
* if LZMA_TELL_NO_CHECK is used.
|
||||
*/
|
||||
#define LZMA_TELL_NO_CHECK UINT32_C(0x01)
|
||||
|
||||
|
||||
/**
|
||||
* This flag makes lzma_code() return LZMA_UNSUPPORTED_CHECK if the input
|
||||
* stream has an integrity check, but the type of the integrity check is not
|
||||
* supported by this liblzma version or build. Such files can still be
|
||||
* decoded, but the integrity check cannot be verified.
|
||||
*/
|
||||
#define LZMA_TELL_UNSUPPORTED_CHECK UINT32_C(0x02)
|
||||
|
||||
|
||||
/**
|
||||
* This flag makes lzma_code() return LZMA_GET_CHECK as soon as the type
|
||||
* of the integrity check is known. The type can then be got with
|
||||
* lzma_get_check().
|
||||
*/
|
||||
#define LZMA_TELL_ANY_CHECK UINT32_C(0x04)
|
||||
|
||||
|
||||
/**
|
||||
* This flag makes lzma_code() not calculate and verify the integrity check
|
||||
* of the compressed data in .xz files. This means that invalid integrity
|
||||
* check values won't be detected and LZMA_DATA_ERROR won't be returned in
|
||||
* such cases.
|
||||
*
|
||||
* This flag only affects the checks of the compressed data itself; the CRC32
|
||||
* values in the .xz headers will still be verified normally.
|
||||
*
|
||||
* Don't use this flag unless you know what you are doing. Possible reasons
|
||||
* to use this flag:
|
||||
*
|
||||
* - Trying to recover data from a corrupt .xz file.
|
||||
*
|
||||
* - Speeding up decompression, which matters mostly with SHA-256
|
||||
* or with files that have compressed extremely well. It's recommended
|
||||
* to not use this flag for this purpose unless the file integrity is
|
||||
* verified externally in some other way.
|
||||
*
|
||||
* Support for this flag was added in liblzma 5.1.4beta.
|
||||
*/
|
||||
#define LZMA_IGNORE_CHECK UINT32_C(0x10)
|
||||
|
||||
|
||||
/**
|
||||
* This flag enables decoding of concatenated files with file formats that
|
||||
* allow concatenating compressed files as is. From the formats currently
|
||||
* supported by liblzma, only the .xz format allows concatenated files.
|
||||
* Concatenated files are not allowed with the legacy .lzma format.
|
||||
*
|
||||
* This flag also affects the usage of the `action' argument for lzma_code().
|
||||
* When LZMA_CONCATENATED is used, lzma_code() won't return LZMA_STREAM_END
|
||||
* unless LZMA_FINISH is used as `action'. Thus, the application has to set
|
||||
* LZMA_FINISH in the same way as it does when encoding.
|
||||
*
|
||||
* If LZMA_CONCATENATED is not used, the decoders still accept LZMA_FINISH
|
||||
* as `action' for lzma_code(), but the usage of LZMA_FINISH isn't required.
|
||||
*/
|
||||
#define LZMA_CONCATENATED UINT32_C(0x08)
|
||||
|
||||
|
||||
/**
|
||||
* \brief Initialize .xz Stream decoder
|
||||
*
|
||||
* \param strm Pointer to properly prepared lzma_stream
|
||||
* \param memlimit Memory usage limit as bytes. Use UINT64_MAX
|
||||
* to effectively disable the limiter. liblzma
|
||||
* 5.2.3 and earlier don't allow 0 here and return
|
||||
* LZMA_PROG_ERROR; later versions treat 0 as if 1
|
||||
* had been specified.
|
||||
* \param flags Bitwise-or of zero or more of the decoder flags:
|
||||
* LZMA_TELL_NO_CHECK, LZMA_TELL_UNSUPPORTED_CHECK,
|
||||
* LZMA_TELL_ANY_CHECK, LZMA_CONCATENATED
|
||||
*
|
||||
* \return - LZMA_OK: Initialization was successful.
|
||||
* - LZMA_MEM_ERROR: Cannot allocate memory.
|
||||
* - LZMA_OPTIONS_ERROR: Unsupported flags
|
||||
* - LZMA_PROG_ERROR
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_stream_decoder(
|
||||
lzma_stream *strm, uint64_t memlimit, uint32_t flags)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Decode .xz Streams and .lzma files with autodetection
|
||||
*
|
||||
* This decoder autodetects between the .xz and .lzma file formats, and
|
||||
* calls lzma_stream_decoder() or lzma_alone_decoder() once the type
|
||||
* of the input file has been detected.
|
||||
*
|
||||
* \param strm Pointer to properly prepared lzma_stream
|
||||
* \param memlimit Memory usage limit as bytes. Use UINT64_MAX
|
||||
* to effectively disable the limiter. liblzma
|
||||
* 5.2.3 and earlier don't allow 0 here and return
|
||||
* LZMA_PROG_ERROR; later versions treat 0 as if 1
|
||||
* had been specified.
|
||||
* \param flags Bitwise-or of flags, or zero for no flags.
|
||||
*
|
||||
* \return - LZMA_OK: Initialization was successful.
|
||||
* - LZMA_MEM_ERROR: Cannot allocate memory.
|
||||
* - LZMA_OPTIONS_ERROR: Unsupported flags
|
||||
* - LZMA_PROG_ERROR
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_auto_decoder(
|
||||
lzma_stream *strm, uint64_t memlimit, uint32_t flags)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Initialize .lzma decoder (legacy file format)
|
||||
*
|
||||
* \param strm Pointer to properly prepared lzma_stream
|
||||
* \param memlimit Memory usage limit as bytes. Use UINT64_MAX
|
||||
* to effectively disable the limiter. liblzma
|
||||
* 5.2.3 and earlier don't allow 0 here and return
|
||||
* LZMA_PROG_ERROR; later versions treat 0 as if 1
|
||||
* had been specified.
|
||||
*
|
||||
* Valid `action' arguments to lzma_code() are LZMA_RUN and LZMA_FINISH.
|
||||
* There is no need to use LZMA_FINISH, but it's allowed because it may
|
||||
* simplify certain types of applications.
|
||||
*
|
||||
* \return - LZMA_OK
|
||||
* - LZMA_MEM_ERROR
|
||||
* - LZMA_PROG_ERROR
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_alone_decoder(
|
||||
lzma_stream *strm, uint64_t memlimit)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Single-call .xz Stream decoder
|
||||
*
|
||||
* \param memlimit Pointer to how much memory the decoder is allowed
|
||||
* to allocate. The value pointed by this pointer is
|
||||
* modified if and only if LZMA_MEMLIMIT_ERROR is
|
||||
* returned.
|
||||
* \param flags Bitwise-or of zero or more of the decoder flags:
|
||||
* LZMA_TELL_NO_CHECK, LZMA_TELL_UNSUPPORTED_CHECK,
|
||||
* LZMA_CONCATENATED. Note that LZMA_TELL_ANY_CHECK
|
||||
* is not allowed and will return LZMA_PROG_ERROR.
|
||||
* \param allocator lzma_allocator for custom allocator functions.
|
||||
* Set to NULL to use malloc() and free().
|
||||
* \param in Beginning of the input buffer
|
||||
* \param in_pos The next byte will be read from in[*in_pos].
|
||||
* *in_pos is updated only if decoding succeeds.
|
||||
* \param in_size Size of the input buffer; the first byte that
|
||||
* won't be read is in[in_size].
|
||||
* \param out Beginning of the output buffer
|
||||
* \param out_pos The next byte will be written to out[*out_pos].
|
||||
* *out_pos is updated only if decoding succeeds.
|
||||
* \param out_size Size of the out buffer; the first byte into
|
||||
* which no data is written to is out[out_size].
|
||||
*
|
||||
* \return - LZMA_OK: Decoding was successful.
|
||||
* - LZMA_FORMAT_ERROR
|
||||
* - LZMA_OPTIONS_ERROR
|
||||
* - LZMA_DATA_ERROR
|
||||
* - LZMA_NO_CHECK: This can be returned only if using
|
||||
* the LZMA_TELL_NO_CHECK flag.
|
||||
* - LZMA_UNSUPPORTED_CHECK: This can be returned only if using
|
||||
* the LZMA_TELL_UNSUPPORTED_CHECK flag.
|
||||
* - LZMA_MEM_ERROR
|
||||
* - LZMA_MEMLIMIT_ERROR: Memory usage limit was reached.
|
||||
* The minimum required memlimit value was stored to *memlimit.
|
||||
* - LZMA_BUF_ERROR: Output buffer was too small.
|
||||
* - LZMA_PROG_ERROR
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_stream_buffer_decode(
|
||||
uint64_t *memlimit, uint32_t flags,
|
||||
const lzma_allocator *allocator,
|
||||
const uint8_t *in, size_t *in_pos, size_t in_size,
|
||||
uint8_t *out, size_t *out_pos, size_t out_size)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
77
.CondaPkg/env/include/lzma/delta.h
vendored
Normal file
77
.CondaPkg/env/include/lzma/delta.h
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
/**
|
||||
* \file lzma/delta.h
|
||||
* \brief Delta filter
|
||||
*/
|
||||
|
||||
/*
|
||||
* Author: Lasse Collin
|
||||
*
|
||||
* This file has been put into the public domain.
|
||||
* You can do whatever you want with this file.
|
||||
*
|
||||
* See ../lzma.h for information about liblzma as a whole.
|
||||
*/
|
||||
|
||||
#ifndef LZMA_H_INTERNAL
|
||||
# error Never include this file directly. Use <lzma.h> instead.
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
* \brief Filter ID
|
||||
*
|
||||
* Filter ID of the Delta filter. This is used as lzma_filter.id.
|
||||
*/
|
||||
#define LZMA_FILTER_DELTA LZMA_VLI_C(0x03)
|
||||
|
||||
|
||||
/**
|
||||
* \brief Type of the delta calculation
|
||||
*
|
||||
* Currently only byte-wise delta is supported. Other possible types could
|
||||
* be, for example, delta of 16/32/64-bit little/big endian integers, but
|
||||
* these are not currently planned since byte-wise delta is almost as good.
|
||||
*/
|
||||
typedef enum {
|
||||
LZMA_DELTA_TYPE_BYTE
|
||||
} lzma_delta_type;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Options for the Delta filter
|
||||
*
|
||||
* These options are needed by both encoder and decoder.
|
||||
*/
|
||||
typedef struct {
|
||||
/** For now, this must always be LZMA_DELTA_TYPE_BYTE. */
|
||||
lzma_delta_type type;
|
||||
|
||||
/**
|
||||
* \brief Delta distance
|
||||
*
|
||||
* With the only currently supported type, LZMA_DELTA_TYPE_BYTE,
|
||||
* the distance is as bytes.
|
||||
*
|
||||
* Examples:
|
||||
* - 16-bit stereo audio: distance = 4 bytes
|
||||
* - 24-bit RGB image data: distance = 3 bytes
|
||||
*/
|
||||
uint32_t dist;
|
||||
# define LZMA_DELTA_DIST_MIN 1
|
||||
# define LZMA_DELTA_DIST_MAX 256
|
||||
|
||||
/*
|
||||
* Reserved space to allow possible future extensions without
|
||||
* breaking the ABI. You should not touch these, because the names
|
||||
* of these variables may change. These are and will never be used
|
||||
* when type is LZMA_DELTA_TYPE_BYTE, so it is safe to leave these
|
||||
* uninitialized.
|
||||
*/
|
||||
uint32_t reserved_int1;
|
||||
uint32_t reserved_int2;
|
||||
uint32_t reserved_int3;
|
||||
uint32_t reserved_int4;
|
||||
void *reserved_ptr1;
|
||||
void *reserved_ptr2;
|
||||
|
||||
} lzma_options_delta;
|
||||
426
.CondaPkg/env/include/lzma/filter.h
vendored
Normal file
426
.CondaPkg/env/include/lzma/filter.h
vendored
Normal file
@@ -0,0 +1,426 @@
|
||||
/**
|
||||
* \file lzma/filter.h
|
||||
* \brief Common filter related types and functions
|
||||
*/
|
||||
|
||||
/*
|
||||
* Author: Lasse Collin
|
||||
*
|
||||
* This file has been put into the public domain.
|
||||
* You can do whatever you want with this file.
|
||||
*
|
||||
* See ../lzma.h for information about liblzma as a whole.
|
||||
*/
|
||||
|
||||
#ifndef LZMA_H_INTERNAL
|
||||
# error Never include this file directly. Use <lzma.h> instead.
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
* \brief Maximum number of filters in a chain
|
||||
*
|
||||
* A filter chain can have 1-4 filters, of which three are allowed to change
|
||||
* the size of the data. Usually only one or two filters are needed.
|
||||
*/
|
||||
#define LZMA_FILTERS_MAX 4
|
||||
|
||||
|
||||
/**
|
||||
* \brief Filter options
|
||||
*
|
||||
* This structure is used to pass Filter ID and a pointer filter's
|
||||
* options to liblzma. A few functions work with a single lzma_filter
|
||||
* structure, while most functions expect a filter chain.
|
||||
*
|
||||
* A filter chain is indicated with an array of lzma_filter structures.
|
||||
* The array is terminated with .id = LZMA_VLI_UNKNOWN. Thus, the filter
|
||||
* array must have LZMA_FILTERS_MAX + 1 elements (that is, five) to
|
||||
* be able to hold any arbitrary filter chain. This is important when
|
||||
* using lzma_block_header_decode() from block.h, because too small
|
||||
* array would make liblzma write past the end of the filters array.
|
||||
*/
|
||||
typedef struct {
|
||||
/**
|
||||
* \brief Filter ID
|
||||
*
|
||||
* Use constants whose name begin with `LZMA_FILTER_' to specify
|
||||
* different filters. In an array of lzma_filter structures, use
|
||||
* LZMA_VLI_UNKNOWN to indicate end of filters.
|
||||
*
|
||||
* \note This is not an enum, because on some systems enums
|
||||
* cannot be 64-bit.
|
||||
*/
|
||||
lzma_vli id;
|
||||
|
||||
/**
|
||||
* \brief Pointer to filter-specific options structure
|
||||
*
|
||||
* If the filter doesn't need options, set this to NULL. If id is
|
||||
* set to LZMA_VLI_UNKNOWN, options is ignored, and thus
|
||||
* doesn't need be initialized.
|
||||
*/
|
||||
void *options;
|
||||
|
||||
} lzma_filter;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Test if the given Filter ID is supported for encoding
|
||||
*
|
||||
* Return true if the give Filter ID is supported for encoding by this
|
||||
* liblzma build. Otherwise false is returned.
|
||||
*
|
||||
* There is no way to list which filters are available in this particular
|
||||
* liblzma version and build. It would be useless, because the application
|
||||
* couldn't know what kind of options the filter would need.
|
||||
*/
|
||||
extern LZMA_API(lzma_bool) lzma_filter_encoder_is_supported(lzma_vli id)
|
||||
lzma_nothrow lzma_attr_const;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Test if the given Filter ID is supported for decoding
|
||||
*
|
||||
* Return true if the give Filter ID is supported for decoding by this
|
||||
* liblzma build. Otherwise false is returned.
|
||||
*/
|
||||
extern LZMA_API(lzma_bool) lzma_filter_decoder_is_supported(lzma_vli id)
|
||||
lzma_nothrow lzma_attr_const;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Copy the filters array
|
||||
*
|
||||
* Copy the Filter IDs and filter-specific options from src to dest.
|
||||
* Up to LZMA_FILTERS_MAX filters are copied, plus the terminating
|
||||
* .id == LZMA_VLI_UNKNOWN. Thus, dest should have at least
|
||||
* LZMA_FILTERS_MAX + 1 elements space unless the caller knows that
|
||||
* src is smaller than that.
|
||||
*
|
||||
* Unless the filter-specific options is NULL, the Filter ID has to be
|
||||
* supported by liblzma, because liblzma needs to know the size of every
|
||||
* filter-specific options structure. The filter-specific options are not
|
||||
* validated. If options is NULL, any unsupported Filter IDs are copied
|
||||
* without returning an error.
|
||||
*
|
||||
* Old filter-specific options in dest are not freed, so dest doesn't
|
||||
* need to be initialized by the caller in any way.
|
||||
*
|
||||
* If an error occurs, memory possibly already allocated by this function
|
||||
* is always freed.
|
||||
*
|
||||
* \return - LZMA_OK
|
||||
* - LZMA_MEM_ERROR
|
||||
* - LZMA_OPTIONS_ERROR: Unsupported Filter ID and its options
|
||||
* is not NULL.
|
||||
* - LZMA_PROG_ERROR: src or dest is NULL.
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_filters_copy(
|
||||
const lzma_filter *src, lzma_filter *dest,
|
||||
const lzma_allocator *allocator) lzma_nothrow;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Calculate approximate memory requirements for raw encoder
|
||||
*
|
||||
* This function can be used to calculate the memory requirements for
|
||||
* Block and Stream encoders too because Block and Stream encoders don't
|
||||
* need significantly more memory than raw encoder.
|
||||
*
|
||||
* \param filters Array of filters terminated with
|
||||
* .id == LZMA_VLI_UNKNOWN.
|
||||
*
|
||||
* \return Number of bytes of memory required for the given
|
||||
* filter chain when encoding. If an error occurs,
|
||||
* for example due to unsupported filter chain,
|
||||
* UINT64_MAX is returned.
|
||||
*/
|
||||
extern LZMA_API(uint64_t) lzma_raw_encoder_memusage(const lzma_filter *filters)
|
||||
lzma_nothrow lzma_attr_pure;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Calculate approximate memory requirements for raw decoder
|
||||
*
|
||||
* This function can be used to calculate the memory requirements for
|
||||
* Block and Stream decoders too because Block and Stream decoders don't
|
||||
* need significantly more memory than raw decoder.
|
||||
*
|
||||
* \param filters Array of filters terminated with
|
||||
* .id == LZMA_VLI_UNKNOWN.
|
||||
*
|
||||
* \return Number of bytes of memory required for the given
|
||||
* filter chain when decoding. If an error occurs,
|
||||
* for example due to unsupported filter chain,
|
||||
* UINT64_MAX is returned.
|
||||
*/
|
||||
extern LZMA_API(uint64_t) lzma_raw_decoder_memusage(const lzma_filter *filters)
|
||||
lzma_nothrow lzma_attr_pure;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Initialize raw encoder
|
||||
*
|
||||
* This function may be useful when implementing custom file formats.
|
||||
*
|
||||
* \param strm Pointer to properly prepared lzma_stream
|
||||
* \param filters Array of lzma_filter structures. The end of the
|
||||
* array must be marked with .id = LZMA_VLI_UNKNOWN.
|
||||
*
|
||||
* The `action' with lzma_code() can be LZMA_RUN, LZMA_SYNC_FLUSH (if the
|
||||
* filter chain supports it), or LZMA_FINISH.
|
||||
*
|
||||
* \return - LZMA_OK
|
||||
* - LZMA_MEM_ERROR
|
||||
* - LZMA_OPTIONS_ERROR
|
||||
* - LZMA_PROG_ERROR
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_raw_encoder(
|
||||
lzma_stream *strm, const lzma_filter *filters)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Initialize raw decoder
|
||||
*
|
||||
* The initialization of raw decoder goes similarly to raw encoder.
|
||||
*
|
||||
* The `action' with lzma_code() can be LZMA_RUN or LZMA_FINISH. Using
|
||||
* LZMA_FINISH is not required, it is supported just for convenience.
|
||||
*
|
||||
* \return - LZMA_OK
|
||||
* - LZMA_MEM_ERROR
|
||||
* - LZMA_OPTIONS_ERROR
|
||||
* - LZMA_PROG_ERROR
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_raw_decoder(
|
||||
lzma_stream *strm, const lzma_filter *filters)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Update the filter chain in the encoder
|
||||
*
|
||||
* This function is for advanced users only. This function has two slightly
|
||||
* different purposes:
|
||||
*
|
||||
* - After LZMA_FULL_FLUSH when using Stream encoder: Set a new filter
|
||||
* chain, which will be used starting from the next Block.
|
||||
*
|
||||
* - After LZMA_SYNC_FLUSH using Raw, Block, or Stream encoder: Change
|
||||
* the filter-specific options in the middle of encoding. The actual
|
||||
* filters in the chain (Filter IDs) cannot be changed. In the future,
|
||||
* it might become possible to change the filter options without
|
||||
* using LZMA_SYNC_FLUSH.
|
||||
*
|
||||
* While rarely useful, this function may be called also when no data has
|
||||
* been compressed yet. In that case, this function will behave as if
|
||||
* LZMA_FULL_FLUSH (Stream encoder) or LZMA_SYNC_FLUSH (Raw or Block
|
||||
* encoder) had been used right before calling this function.
|
||||
*
|
||||
* \return - LZMA_OK
|
||||
* - LZMA_MEM_ERROR
|
||||
* - LZMA_MEMLIMIT_ERROR
|
||||
* - LZMA_OPTIONS_ERROR
|
||||
* - LZMA_PROG_ERROR
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_filters_update(
|
||||
lzma_stream *strm, const lzma_filter *filters) lzma_nothrow;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Single-call raw encoder
|
||||
*
|
||||
* \param filters Array of lzma_filter structures. The end of the
|
||||
* array must be marked with .id = LZMA_VLI_UNKNOWN.
|
||||
* \param allocator lzma_allocator for custom allocator functions.
|
||||
* Set to NULL to use malloc() and free().
|
||||
* \param in Beginning of the input buffer
|
||||
* \param in_size Size of the input buffer
|
||||
* \param out Beginning of the output buffer
|
||||
* \param out_pos The next byte will be written to out[*out_pos].
|
||||
* *out_pos is updated only if encoding succeeds.
|
||||
* \param out_size Size of the out buffer; the first byte into
|
||||
* which no data is written to is out[out_size].
|
||||
*
|
||||
* \return - LZMA_OK: Encoding was successful.
|
||||
* - LZMA_BUF_ERROR: Not enough output buffer space.
|
||||
* - LZMA_OPTIONS_ERROR
|
||||
* - LZMA_MEM_ERROR
|
||||
* - LZMA_DATA_ERROR
|
||||
* - LZMA_PROG_ERROR
|
||||
*
|
||||
* \note There is no function to calculate how big output buffer
|
||||
* would surely be big enough. (lzma_stream_buffer_bound()
|
||||
* works only for lzma_stream_buffer_encode(); raw encoder
|
||||
* won't necessarily meet that bound.)
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_raw_buffer_encode(
|
||||
const lzma_filter *filters, const lzma_allocator *allocator,
|
||||
const uint8_t *in, size_t in_size, uint8_t *out,
|
||||
size_t *out_pos, size_t out_size) lzma_nothrow;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Single-call raw decoder
|
||||
*
|
||||
* \param filters Array of lzma_filter structures. The end of the
|
||||
* array must be marked with .id = LZMA_VLI_UNKNOWN.
|
||||
* \param allocator lzma_allocator for custom allocator functions.
|
||||
* Set to NULL to use malloc() and free().
|
||||
* \param in Beginning of the input buffer
|
||||
* \param in_pos The next byte will be read from in[*in_pos].
|
||||
* *in_pos is updated only if decoding succeeds.
|
||||
* \param in_size Size of the input buffer; the first byte that
|
||||
* won't be read is in[in_size].
|
||||
* \param out Beginning of the output buffer
|
||||
* \param out_pos The next byte will be written to out[*out_pos].
|
||||
* *out_pos is updated only if encoding succeeds.
|
||||
* \param out_size Size of the out buffer; the first byte into
|
||||
* which no data is written to is out[out_size].
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_raw_buffer_decode(
|
||||
const lzma_filter *filters, const lzma_allocator *allocator,
|
||||
const uint8_t *in, size_t *in_pos, size_t in_size,
|
||||
uint8_t *out, size_t *out_pos, size_t out_size) lzma_nothrow;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Get the size of the Filter Properties field
|
||||
*
|
||||
* This function may be useful when implementing custom file formats
|
||||
* using the raw encoder and decoder.
|
||||
*
|
||||
* \param size Pointer to uint32_t to hold the size of the properties
|
||||
* \param filter Filter ID and options (the size of the properties may
|
||||
* vary depending on the options)
|
||||
*
|
||||
* \return - LZMA_OK
|
||||
* - LZMA_OPTIONS_ERROR
|
||||
* - LZMA_PROG_ERROR
|
||||
*
|
||||
* \note This function validates the Filter ID, but does not
|
||||
* necessarily validate the options. Thus, it is possible
|
||||
* that this returns LZMA_OK while the following call to
|
||||
* lzma_properties_encode() returns LZMA_OPTIONS_ERROR.
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_properties_size(
|
||||
uint32_t *size, const lzma_filter *filter) lzma_nothrow;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Encode the Filter Properties field
|
||||
*
|
||||
* \param filter Filter ID and options
|
||||
* \param props Buffer to hold the encoded options. The size of
|
||||
* buffer must have been already determined with
|
||||
* lzma_properties_size().
|
||||
*
|
||||
* \return - LZMA_OK
|
||||
* - LZMA_OPTIONS_ERROR
|
||||
* - LZMA_PROG_ERROR
|
||||
*
|
||||
* \note Even this function won't validate more options than actually
|
||||
* necessary. Thus, it is possible that encoding the properties
|
||||
* succeeds but using the same options to initialize the encoder
|
||||
* will fail.
|
||||
*
|
||||
* \note If lzma_properties_size() indicated that the size
|
||||
* of the Filter Properties field is zero, calling
|
||||
* lzma_properties_encode() is not required, but it
|
||||
* won't do any harm either.
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_properties_encode(
|
||||
const lzma_filter *filter, uint8_t *props) lzma_nothrow;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Decode the Filter Properties field
|
||||
*
|
||||
* \param filter filter->id must have been set to the correct
|
||||
* Filter ID. filter->options doesn't need to be
|
||||
* initialized (it's not freed by this function). The
|
||||
* decoded options will be stored in filter->options;
|
||||
* it's application's responsibility to free it when
|
||||
* appropriate. filter->options is set to NULL if
|
||||
* there are no properties or if an error occurs.
|
||||
* \param allocator Custom memory allocator used to allocate the
|
||||
* options. Set to NULL to use the default malloc(),
|
||||
* and in case of an error, also free().
|
||||
* \param props Input buffer containing the properties.
|
||||
* \param props_size Size of the properties. This must be the exact
|
||||
* size; giving too much or too little input will
|
||||
* return LZMA_OPTIONS_ERROR.
|
||||
*
|
||||
* \return - LZMA_OK
|
||||
* - LZMA_OPTIONS_ERROR
|
||||
* - LZMA_MEM_ERROR
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_properties_decode(
|
||||
lzma_filter *filter, const lzma_allocator *allocator,
|
||||
const uint8_t *props, size_t props_size) lzma_nothrow;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Calculate encoded size of a Filter Flags field
|
||||
*
|
||||
* Knowing the size of Filter Flags is useful to know when allocating
|
||||
* memory to hold the encoded Filter Flags.
|
||||
*
|
||||
* \param size Pointer to integer to hold the calculated size
|
||||
* \param filter Filter ID and associated options whose encoded
|
||||
* size is to be calculated
|
||||
*
|
||||
* \return - LZMA_OK: *size set successfully. Note that this doesn't
|
||||
* guarantee that filter->options is valid, thus
|
||||
* lzma_filter_flags_encode() may still fail.
|
||||
* - LZMA_OPTIONS_ERROR: Unknown Filter ID or unsupported options.
|
||||
* - LZMA_PROG_ERROR: Invalid options
|
||||
*
|
||||
* \note If you need to calculate size of List of Filter Flags,
|
||||
* you need to loop over every lzma_filter entry.
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_filter_flags_size(
|
||||
uint32_t *size, const lzma_filter *filter)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Encode Filter Flags into given buffer
|
||||
*
|
||||
* In contrast to some functions, this doesn't allocate the needed buffer.
|
||||
* This is due to how this function is used internally by liblzma.
|
||||
*
|
||||
* \param filter Filter ID and options to be encoded
|
||||
* \param out Beginning of the output buffer
|
||||
* \param out_pos out[*out_pos] is the next write position. This
|
||||
* is updated by the encoder.
|
||||
* \param out_size out[out_size] is the first byte to not write.
|
||||
*
|
||||
* \return - LZMA_OK: Encoding was successful.
|
||||
* - LZMA_OPTIONS_ERROR: Invalid or unsupported options.
|
||||
* - LZMA_PROG_ERROR: Invalid options or not enough output
|
||||
* buffer space (you should have checked it with
|
||||
* lzma_filter_flags_size()).
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_filter_flags_encode(const lzma_filter *filter,
|
||||
uint8_t *out, size_t *out_pos, size_t out_size)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Decode Filter Flags from given buffer
|
||||
*
|
||||
* The decoded result is stored into *filter. The old value of
|
||||
* filter->options is not free()d.
|
||||
*
|
||||
* \return - LZMA_OK
|
||||
* - LZMA_OPTIONS_ERROR
|
||||
* - LZMA_MEM_ERROR
|
||||
* - LZMA_PROG_ERROR
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_filter_flags_decode(
|
||||
lzma_filter *filter, const lzma_allocator *allocator,
|
||||
const uint8_t *in, size_t *in_pos, size_t in_size)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
64
.CondaPkg/env/include/lzma/hardware.h
vendored
Normal file
64
.CondaPkg/env/include/lzma/hardware.h
vendored
Normal file
@@ -0,0 +1,64 @@
|
||||
/**
|
||||
* \file lzma/hardware.h
|
||||
* \brief Hardware information
|
||||
*
|
||||
* Since liblzma can consume a lot of system resources, it also provides
|
||||
* ways to limit the resource usage. Applications linking against liblzma
|
||||
* need to do the actual decisions how much resources to let liblzma to use.
|
||||
* To ease making these decisions, liblzma provides functions to find out
|
||||
* the relevant capabilities of the underlying hardware. Currently there
|
||||
* is only a function to find out the amount of RAM, but in the future there
|
||||
* will be also a function to detect how many concurrent threads the system
|
||||
* can run.
|
||||
*
|
||||
* \note On some operating systems, these function may temporarily
|
||||
* load a shared library or open file descriptor(s) to find out
|
||||
* the requested hardware information. Unless the application
|
||||
* assumes that specific file descriptors are not touched by
|
||||
* other threads, this should have no effect on thread safety.
|
||||
* Possible operations involving file descriptors will restart
|
||||
* the syscalls if they return EINTR.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Author: Lasse Collin
|
||||
*
|
||||
* This file has been put into the public domain.
|
||||
* You can do whatever you want with this file.
|
||||
*
|
||||
* See ../lzma.h for information about liblzma as a whole.
|
||||
*/
|
||||
|
||||
#ifndef LZMA_H_INTERNAL
|
||||
# error Never include this file directly. Use <lzma.h> instead.
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
* \brief Get the total amount of physical memory (RAM) in bytes
|
||||
*
|
||||
* This function may be useful when determining a reasonable memory
|
||||
* usage limit for decompressing or how much memory it is OK to use
|
||||
* for compressing.
|
||||
*
|
||||
* \return On success, the total amount of physical memory in bytes
|
||||
* is returned. If the amount of RAM cannot be determined,
|
||||
* zero is returned. This can happen if an error occurs
|
||||
* or if there is no code in liblzma to detect the amount
|
||||
* of RAM on the specific operating system.
|
||||
*/
|
||||
extern LZMA_API(uint64_t) lzma_physmem(void) lzma_nothrow;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Get the number of processor cores or threads
|
||||
*
|
||||
* This function may be useful when determining how many threads to use.
|
||||
* If the hardware supports more than one thread per CPU core, the number
|
||||
* of hardware threads is returned if that information is available.
|
||||
*
|
||||
* \brief On success, the number of available CPU threads or cores is
|
||||
* returned. If this information isn't available or an error
|
||||
* occurs, zero is returned.
|
||||
*/
|
||||
extern LZMA_API(uint32_t) lzma_cputhreads(void) lzma_nothrow;
|
||||
686
.CondaPkg/env/include/lzma/index.h
vendored
Normal file
686
.CondaPkg/env/include/lzma/index.h
vendored
Normal file
@@ -0,0 +1,686 @@
|
||||
/**
|
||||
* \file lzma/index.h
|
||||
* \brief Handling of .xz Index and related information
|
||||
*/
|
||||
|
||||
/*
|
||||
* Author: Lasse Collin
|
||||
*
|
||||
* This file has been put into the public domain.
|
||||
* You can do whatever you want with this file.
|
||||
*
|
||||
* See ../lzma.h for information about liblzma as a whole.
|
||||
*/
|
||||
|
||||
#ifndef LZMA_H_INTERNAL
|
||||
# error Never include this file directly. Use <lzma.h> instead.
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
* \brief Opaque data type to hold the Index(es) and other information
|
||||
*
|
||||
* lzma_index often holds just one .xz Index and possibly the Stream Flags
|
||||
* of the same Stream and size of the Stream Padding field. However,
|
||||
* multiple lzma_indexes can be concatenated with lzma_index_cat() and then
|
||||
* there may be information about multiple Streams in the same lzma_index.
|
||||
*
|
||||
* Notes about thread safety: Only one thread may modify lzma_index at
|
||||
* a time. All functions that take non-const pointer to lzma_index
|
||||
* modify it. As long as no thread is modifying the lzma_index, getting
|
||||
* information from the same lzma_index can be done from multiple threads
|
||||
* at the same time with functions that take a const pointer to
|
||||
* lzma_index or use lzma_index_iter. The same iterator must be used
|
||||
* only by one thread at a time, of course, but there can be as many
|
||||
* iterators for the same lzma_index as needed.
|
||||
*/
|
||||
typedef struct lzma_index_s lzma_index;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Iterator to get information about Blocks and Streams
|
||||
*/
|
||||
typedef struct {
|
||||
struct {
|
||||
/**
|
||||
* \brief Pointer to Stream Flags
|
||||
*
|
||||
* This is NULL if Stream Flags have not been set for
|
||||
* this Stream with lzma_index_stream_flags().
|
||||
*/
|
||||
const lzma_stream_flags *flags;
|
||||
|
||||
const void *reserved_ptr1;
|
||||
const void *reserved_ptr2;
|
||||
const void *reserved_ptr3;
|
||||
|
||||
/**
|
||||
* \brief Stream number in the lzma_index
|
||||
*
|
||||
* The first Stream is 1.
|
||||
*/
|
||||
lzma_vli number;
|
||||
|
||||
/**
|
||||
* \brief Number of Blocks in the Stream
|
||||
*
|
||||
* If this is zero, the block structure below has
|
||||
* undefined values.
|
||||
*/
|
||||
lzma_vli block_count;
|
||||
|
||||
/**
|
||||
* \brief Compressed start offset of this Stream
|
||||
*
|
||||
* The offset is relative to the beginning of the lzma_index
|
||||
* (i.e. usually the beginning of the .xz file).
|
||||
*/
|
||||
lzma_vli compressed_offset;
|
||||
|
||||
/**
|
||||
* \brief Uncompressed start offset of this Stream
|
||||
*
|
||||
* The offset is relative to the beginning of the lzma_index
|
||||
* (i.e. usually the beginning of the .xz file).
|
||||
*/
|
||||
lzma_vli uncompressed_offset;
|
||||
|
||||
/**
|
||||
* \brief Compressed size of this Stream
|
||||
*
|
||||
* This includes all headers except the possible
|
||||
* Stream Padding after this Stream.
|
||||
*/
|
||||
lzma_vli compressed_size;
|
||||
|
||||
/**
|
||||
* \brief Uncompressed size of this Stream
|
||||
*/
|
||||
lzma_vli uncompressed_size;
|
||||
|
||||
/**
|
||||
* \brief Size of Stream Padding after this Stream
|
||||
*
|
||||
* If it hasn't been set with lzma_index_stream_padding(),
|
||||
* this defaults to zero. Stream Padding is always
|
||||
* a multiple of four bytes.
|
||||
*/
|
||||
lzma_vli padding;
|
||||
|
||||
lzma_vli reserved_vli1;
|
||||
lzma_vli reserved_vli2;
|
||||
lzma_vli reserved_vli3;
|
||||
lzma_vli reserved_vli4;
|
||||
} stream;
|
||||
|
||||
struct {
|
||||
/**
|
||||
* \brief Block number in the file
|
||||
*
|
||||
* The first Block is 1.
|
||||
*/
|
||||
lzma_vli number_in_file;
|
||||
|
||||
/**
|
||||
* \brief Compressed start offset of this Block
|
||||
*
|
||||
* This offset is relative to the beginning of the
|
||||
* lzma_index (i.e. usually the beginning of the .xz file).
|
||||
* Normally this is where you should seek in the .xz file
|
||||
* to start decompressing this Block.
|
||||
*/
|
||||
lzma_vli compressed_file_offset;
|
||||
|
||||
/**
|
||||
* \brief Uncompressed start offset of this Block
|
||||
*
|
||||
* This offset is relative to the beginning of the lzma_index
|
||||
* (i.e. usually the beginning of the .xz file).
|
||||
*
|
||||
* When doing random-access reading, it is possible that
|
||||
* the target offset is not exactly at Block boundary. One
|
||||
* will need to compare the target offset against
|
||||
* uncompressed_file_offset or uncompressed_stream_offset,
|
||||
* and possibly decode and throw away some amount of data
|
||||
* before reaching the target offset.
|
||||
*/
|
||||
lzma_vli uncompressed_file_offset;
|
||||
|
||||
/**
|
||||
* \brief Block number in this Stream
|
||||
*
|
||||
* The first Block is 1.
|
||||
*/
|
||||
lzma_vli number_in_stream;
|
||||
|
||||
/**
|
||||
* \brief Compressed start offset of this Block
|
||||
*
|
||||
* This offset is relative to the beginning of the Stream
|
||||
* containing this Block.
|
||||
*/
|
||||
lzma_vli compressed_stream_offset;
|
||||
|
||||
/**
|
||||
* \brief Uncompressed start offset of this Block
|
||||
*
|
||||
* This offset is relative to the beginning of the Stream
|
||||
* containing this Block.
|
||||
*/
|
||||
lzma_vli uncompressed_stream_offset;
|
||||
|
||||
/**
|
||||
* \brief Uncompressed size of this Block
|
||||
*
|
||||
* You should pass this to the Block decoder if you will
|
||||
* decode this Block. It will allow the Block decoder to
|
||||
* validate the uncompressed size.
|
||||
*/
|
||||
lzma_vli uncompressed_size;
|
||||
|
||||
/**
|
||||
* \brief Unpadded size of this Block
|
||||
*
|
||||
* You should pass this to the Block decoder if you will
|
||||
* decode this Block. It will allow the Block decoder to
|
||||
* validate the unpadded size.
|
||||
*/
|
||||
lzma_vli unpadded_size;
|
||||
|
||||
/**
|
||||
* \brief Total compressed size
|
||||
*
|
||||
* This includes all headers and padding in this Block.
|
||||
* This is useful if you need to know how many bytes
|
||||
* the Block decoder will actually read.
|
||||
*/
|
||||
lzma_vli total_size;
|
||||
|
||||
lzma_vli reserved_vli1;
|
||||
lzma_vli reserved_vli2;
|
||||
lzma_vli reserved_vli3;
|
||||
lzma_vli reserved_vli4;
|
||||
|
||||
const void *reserved_ptr1;
|
||||
const void *reserved_ptr2;
|
||||
const void *reserved_ptr3;
|
||||
const void *reserved_ptr4;
|
||||
} block;
|
||||
|
||||
/*
|
||||
* Internal data which is used to store the state of the iterator.
|
||||
* The exact format may vary between liblzma versions, so don't
|
||||
* touch these in any way.
|
||||
*/
|
||||
union {
|
||||
const void *p;
|
||||
size_t s;
|
||||
lzma_vli v;
|
||||
} internal[6];
|
||||
} lzma_index_iter;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Operation mode for lzma_index_iter_next()
|
||||
*/
|
||||
typedef enum {
|
||||
LZMA_INDEX_ITER_ANY = 0,
|
||||
/**<
|
||||
* \brief Get the next Block or Stream
|
||||
*
|
||||
* Go to the next Block if the current Stream has at least
|
||||
* one Block left. Otherwise go to the next Stream even if
|
||||
* it has no Blocks. If the Stream has no Blocks
|
||||
* (lzma_index_iter.stream.block_count == 0),
|
||||
* lzma_index_iter.block will have undefined values.
|
||||
*/
|
||||
|
||||
LZMA_INDEX_ITER_STREAM = 1,
|
||||
/**<
|
||||
* \brief Get the next Stream
|
||||
*
|
||||
* Go to the next Stream even if the current Stream has
|
||||
* unread Blocks left. If the next Stream has at least one
|
||||
* Block, the iterator will point to the first Block.
|
||||
* If there are no Blocks, lzma_index_iter.block will have
|
||||
* undefined values.
|
||||
*/
|
||||
|
||||
LZMA_INDEX_ITER_BLOCK = 2,
|
||||
/**<
|
||||
* \brief Get the next Block
|
||||
*
|
||||
* Go to the next Block if the current Stream has at least
|
||||
* one Block left. If the current Stream has no Blocks left,
|
||||
* the next Stream with at least one Block is located and
|
||||
* the iterator will be made to point to the first Block of
|
||||
* that Stream.
|
||||
*/
|
||||
|
||||
LZMA_INDEX_ITER_NONEMPTY_BLOCK = 3
|
||||
/**<
|
||||
* \brief Get the next non-empty Block
|
||||
*
|
||||
* This is like LZMA_INDEX_ITER_BLOCK except that it will
|
||||
* skip Blocks whose Uncompressed Size is zero.
|
||||
*/
|
||||
|
||||
} lzma_index_iter_mode;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Calculate memory usage of lzma_index
|
||||
*
|
||||
* On disk, the size of the Index field depends on both the number of Records
|
||||
* stored and how big values the Records store (due to variable-length integer
|
||||
* encoding). When the Index is kept in lzma_index structure, the memory usage
|
||||
* depends only on the number of Records/Blocks stored in the Index(es), and
|
||||
* in case of concatenated lzma_indexes, the number of Streams. The size in
|
||||
* RAM is almost always significantly bigger than in the encoded form on disk.
|
||||
*
|
||||
* This function calculates an approximate amount of memory needed hold
|
||||
* the given number of Streams and Blocks in lzma_index structure. This
|
||||
* value may vary between CPU architectures and also between liblzma versions
|
||||
* if the internal implementation is modified.
|
||||
*/
|
||||
extern LZMA_API(uint64_t) lzma_index_memusage(
|
||||
lzma_vli streams, lzma_vli blocks) lzma_nothrow;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Calculate the memory usage of an existing lzma_index
|
||||
*
|
||||
* This is a shorthand for lzma_index_memusage(lzma_index_stream_count(i),
|
||||
* lzma_index_block_count(i)).
|
||||
*/
|
||||
extern LZMA_API(uint64_t) lzma_index_memused(const lzma_index *i)
|
||||
lzma_nothrow;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Allocate and initialize a new lzma_index structure
|
||||
*
|
||||
* \return On success, a pointer to an empty initialized lzma_index is
|
||||
* returned. If allocation fails, NULL is returned.
|
||||
*/
|
||||
extern LZMA_API(lzma_index *) lzma_index_init(const lzma_allocator *allocator)
|
||||
lzma_nothrow;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Deallocate lzma_index
|
||||
*
|
||||
* If i is NULL, this does nothing.
|
||||
*/
|
||||
extern LZMA_API(void) lzma_index_end(
|
||||
lzma_index *i, const lzma_allocator *allocator) lzma_nothrow;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Add a new Block to lzma_index
|
||||
*
|
||||
* \param i Pointer to a lzma_index structure
|
||||
* \param allocator Pointer to lzma_allocator, or NULL to
|
||||
* use malloc()
|
||||
* \param unpadded_size Unpadded Size of a Block. This can be
|
||||
* calculated with lzma_block_unpadded_size()
|
||||
* after encoding or decoding the Block.
|
||||
* \param uncompressed_size Uncompressed Size of a Block. This can be
|
||||
* taken directly from lzma_block structure
|
||||
* after encoding or decoding the Block.
|
||||
*
|
||||
* Appending a new Block does not invalidate iterators. For example,
|
||||
* if an iterator was pointing to the end of the lzma_index, after
|
||||
* lzma_index_append() it is possible to read the next Block with
|
||||
* an existing iterator.
|
||||
*
|
||||
* \return - LZMA_OK
|
||||
* - LZMA_MEM_ERROR
|
||||
* - LZMA_DATA_ERROR: Compressed or uncompressed size of the
|
||||
* Stream or size of the Index field would grow too big.
|
||||
* - LZMA_PROG_ERROR
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_index_append(
|
||||
lzma_index *i, const lzma_allocator *allocator,
|
||||
lzma_vli unpadded_size, lzma_vli uncompressed_size)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Set the Stream Flags
|
||||
*
|
||||
* Set the Stream Flags of the last (and typically the only) Stream
|
||||
* in lzma_index. This can be useful when reading information from the
|
||||
* lzma_index, because to decode Blocks, knowing the integrity check type
|
||||
* is needed.
|
||||
*
|
||||
* The given Stream Flags are copied into internal preallocated structure
|
||||
* in the lzma_index, thus the caller doesn't need to keep the *stream_flags
|
||||
* available after calling this function.
|
||||
*
|
||||
* \return - LZMA_OK
|
||||
* - LZMA_OPTIONS_ERROR: Unsupported stream_flags->version.
|
||||
* - LZMA_PROG_ERROR
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_index_stream_flags(
|
||||
lzma_index *i, const lzma_stream_flags *stream_flags)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Get the types of integrity Checks
|
||||
*
|
||||
* If lzma_index_stream_flags() is used to set the Stream Flags for
|
||||
* every Stream, lzma_index_checks() can be used to get a bitmask to
|
||||
* indicate which Check types have been used. It can be useful e.g. if
|
||||
* showing the Check types to the user.
|
||||
*
|
||||
* The bitmask is 1 << check_id, e.g. CRC32 is 1 << 1 and SHA-256 is 1 << 10.
|
||||
*/
|
||||
extern LZMA_API(uint32_t) lzma_index_checks(const lzma_index *i)
|
||||
lzma_nothrow lzma_attr_pure;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Set the amount of Stream Padding
|
||||
*
|
||||
* Set the amount of Stream Padding of the last (and typically the only)
|
||||
* Stream in the lzma_index. This is needed when planning to do random-access
|
||||
* reading within multiple concatenated Streams.
|
||||
*
|
||||
* By default, the amount of Stream Padding is assumed to be zero bytes.
|
||||
*
|
||||
* \return - LZMA_OK
|
||||
* - LZMA_DATA_ERROR: The file size would grow too big.
|
||||
* - LZMA_PROG_ERROR
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_index_stream_padding(
|
||||
lzma_index *i, lzma_vli stream_padding)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Get the number of Streams
|
||||
*/
|
||||
extern LZMA_API(lzma_vli) lzma_index_stream_count(const lzma_index *i)
|
||||
lzma_nothrow lzma_attr_pure;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Get the number of Blocks
|
||||
*
|
||||
* This returns the total number of Blocks in lzma_index. To get number
|
||||
* of Blocks in individual Streams, use lzma_index_iter.
|
||||
*/
|
||||
extern LZMA_API(lzma_vli) lzma_index_block_count(const lzma_index *i)
|
||||
lzma_nothrow lzma_attr_pure;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Get the size of the Index field as bytes
|
||||
*
|
||||
* This is needed to verify the Backward Size field in the Stream Footer.
|
||||
*/
|
||||
extern LZMA_API(lzma_vli) lzma_index_size(const lzma_index *i)
|
||||
lzma_nothrow lzma_attr_pure;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Get the total size of the Stream
|
||||
*
|
||||
* If multiple lzma_indexes have been combined, this works as if the Blocks
|
||||
* were in a single Stream. This is useful if you are going to combine
|
||||
* Blocks from multiple Streams into a single new Stream.
|
||||
*/
|
||||
extern LZMA_API(lzma_vli) lzma_index_stream_size(const lzma_index *i)
|
||||
lzma_nothrow lzma_attr_pure;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Get the total size of the Blocks
|
||||
*
|
||||
* This doesn't include the Stream Header, Stream Footer, Stream Padding,
|
||||
* or Index fields.
|
||||
*/
|
||||
extern LZMA_API(lzma_vli) lzma_index_total_size(const lzma_index *i)
|
||||
lzma_nothrow lzma_attr_pure;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Get the total size of the file
|
||||
*
|
||||
* When no lzma_indexes have been combined with lzma_index_cat() and there is
|
||||
* no Stream Padding, this function is identical to lzma_index_stream_size().
|
||||
* If multiple lzma_indexes have been combined, this includes also the headers
|
||||
* of each separate Stream and the possible Stream Padding fields.
|
||||
*/
|
||||
extern LZMA_API(lzma_vli) lzma_index_file_size(const lzma_index *i)
|
||||
lzma_nothrow lzma_attr_pure;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Get the uncompressed size of the file
|
||||
*/
|
||||
extern LZMA_API(lzma_vli) lzma_index_uncompressed_size(const lzma_index *i)
|
||||
lzma_nothrow lzma_attr_pure;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Initialize an iterator
|
||||
*
|
||||
* \param iter Pointer to a lzma_index_iter structure
|
||||
* \param i lzma_index to which the iterator will be associated
|
||||
*
|
||||
* This function associates the iterator with the given lzma_index, and calls
|
||||
* lzma_index_iter_rewind() on the iterator.
|
||||
*
|
||||
* This function doesn't allocate any memory, thus there is no
|
||||
* lzma_index_iter_end(). The iterator is valid as long as the
|
||||
* associated lzma_index is valid, that is, until lzma_index_end() or
|
||||
* using it as source in lzma_index_cat(). Specifically, lzma_index doesn't
|
||||
* become invalid if new Blocks are added to it with lzma_index_append() or
|
||||
* if it is used as the destination in lzma_index_cat().
|
||||
*
|
||||
* It is safe to make copies of an initialized lzma_index_iter, for example,
|
||||
* to easily restart reading at some particular position.
|
||||
*/
|
||||
extern LZMA_API(void) lzma_index_iter_init(
|
||||
lzma_index_iter *iter, const lzma_index *i) lzma_nothrow;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Rewind the iterator
|
||||
*
|
||||
* Rewind the iterator so that next call to lzma_index_iter_next() will
|
||||
* return the first Block or Stream.
|
||||
*/
|
||||
extern LZMA_API(void) lzma_index_iter_rewind(lzma_index_iter *iter)
|
||||
lzma_nothrow;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Get the next Block or Stream
|
||||
*
|
||||
* \param iter Iterator initialized with lzma_index_iter_init()
|
||||
* \param mode Specify what kind of information the caller wants
|
||||
* to get. See lzma_index_iter_mode for details.
|
||||
*
|
||||
* \return If next Block or Stream matching the mode was found, *iter
|
||||
* is updated and this function returns false. If no Block or
|
||||
* Stream matching the mode is found, *iter is not modified
|
||||
* and this function returns true. If mode is set to an unknown
|
||||
* value, *iter is not modified and this function returns true.
|
||||
*/
|
||||
extern LZMA_API(lzma_bool) lzma_index_iter_next(
|
||||
lzma_index_iter *iter, lzma_index_iter_mode mode)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Locate a Block
|
||||
*
|
||||
* If it is possible to seek in the .xz file, it is possible to parse
|
||||
* the Index field(s) and use lzma_index_iter_locate() to do random-access
|
||||
* reading with granularity of Block size.
|
||||
*
|
||||
* \param iter Iterator that was earlier initialized with
|
||||
* lzma_index_iter_init().
|
||||
* \param target Uncompressed target offset which the caller would
|
||||
* like to locate from the Stream
|
||||
*
|
||||
* If the target is smaller than the uncompressed size of the Stream (can be
|
||||
* checked with lzma_index_uncompressed_size()):
|
||||
* - Information about the Stream and Block containing the requested
|
||||
* uncompressed offset is stored into *iter.
|
||||
* - Internal state of the iterator is adjusted so that
|
||||
* lzma_index_iter_next() can be used to read subsequent Blocks or Streams.
|
||||
* - This function returns false.
|
||||
*
|
||||
* If target is greater than the uncompressed size of the Stream, *iter
|
||||
* is not modified, and this function returns true.
|
||||
*/
|
||||
extern LZMA_API(lzma_bool) lzma_index_iter_locate(
|
||||
lzma_index_iter *iter, lzma_vli target) lzma_nothrow;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Concatenate lzma_indexes
|
||||
*
|
||||
* Concatenating lzma_indexes is useful when doing random-access reading in
|
||||
* multi-Stream .xz file, or when combining multiple Streams into single
|
||||
* Stream.
|
||||
*
|
||||
* \param dest lzma_index after which src is appended
|
||||
* \param src lzma_index to be appended after dest. If this
|
||||
* function succeeds, the memory allocated for src
|
||||
* is freed or moved to be part of dest, and all
|
||||
* iterators pointing to src will become invalid.
|
||||
* \param allocator Custom memory allocator; can be NULL to use
|
||||
* malloc() and free().
|
||||
*
|
||||
* \return - LZMA_OK: lzma_indexes were concatenated successfully.
|
||||
* src is now a dangling pointer.
|
||||
* - LZMA_DATA_ERROR: *dest would grow too big.
|
||||
* - LZMA_MEM_ERROR
|
||||
* - LZMA_PROG_ERROR
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_index_cat(lzma_index *dest, lzma_index *src,
|
||||
const lzma_allocator *allocator)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Duplicate lzma_index
|
||||
*
|
||||
* \return A copy of the lzma_index, or NULL if memory allocation failed.
|
||||
*/
|
||||
extern LZMA_API(lzma_index *) lzma_index_dup(
|
||||
const lzma_index *i, const lzma_allocator *allocator)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Initialize .xz Index encoder
|
||||
*
|
||||
* \param strm Pointer to properly prepared lzma_stream
|
||||
* \param i Pointer to lzma_index which should be encoded.
|
||||
*
|
||||
* The valid `action' values for lzma_code() are LZMA_RUN and LZMA_FINISH.
|
||||
* It is enough to use only one of them (you can choose freely).
|
||||
*
|
||||
* \return - LZMA_OK: Initialization succeeded, continue with lzma_code().
|
||||
* - LZMA_MEM_ERROR
|
||||
* - LZMA_PROG_ERROR
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_index_encoder(
|
||||
lzma_stream *strm, const lzma_index *i)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Initialize .xz Index decoder
|
||||
*
|
||||
* \param strm Pointer to properly prepared lzma_stream
|
||||
* \param i The decoded Index will be made available via
|
||||
* this pointer. Initially this function will
|
||||
* set *i to NULL (the old value is ignored). If
|
||||
* decoding succeeds (lzma_code() returns
|
||||
* LZMA_STREAM_END), *i will be set to point
|
||||
* to a new lzma_index, which the application
|
||||
* has to later free with lzma_index_end().
|
||||
* \param memlimit How much memory the resulting lzma_index is
|
||||
* allowed to require. liblzma 5.2.3 and earlier
|
||||
* don't allow 0 here and return LZMA_PROG_ERROR;
|
||||
* later versions treat 0 as if 1 had been specified.
|
||||
*
|
||||
* Valid `action' arguments to lzma_code() are LZMA_RUN and LZMA_FINISH.
|
||||
* There is no need to use LZMA_FINISH, but it's allowed because it may
|
||||
* simplify certain types of applications.
|
||||
*
|
||||
* \return - LZMA_OK: Initialization succeeded, continue with lzma_code().
|
||||
* - LZMA_MEM_ERROR
|
||||
* - LZMA_PROG_ERROR
|
||||
*
|
||||
* liblzma 5.2.3 and older list also LZMA_MEMLIMIT_ERROR here
|
||||
* but that error code has never been possible from this
|
||||
* initialization function.
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_index_decoder(
|
||||
lzma_stream *strm, lzma_index **i, uint64_t memlimit)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Single-call .xz Index encoder
|
||||
*
|
||||
* \param i lzma_index to be encoded
|
||||
* \param out Beginning of the output buffer
|
||||
* \param out_pos The next byte will be written to out[*out_pos].
|
||||
* *out_pos is updated only if encoding succeeds.
|
||||
* \param out_size Size of the out buffer; the first byte into
|
||||
* which no data is written to is out[out_size].
|
||||
*
|
||||
* \return - LZMA_OK: Encoding was successful.
|
||||
* - LZMA_BUF_ERROR: Output buffer is too small. Use
|
||||
* lzma_index_size() to find out how much output
|
||||
* space is needed.
|
||||
* - LZMA_PROG_ERROR
|
||||
*
|
||||
* \note This function doesn't take allocator argument since all
|
||||
* the internal data is allocated on stack.
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_index_buffer_encode(const lzma_index *i,
|
||||
uint8_t *out, size_t *out_pos, size_t out_size) lzma_nothrow;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Single-call .xz Index decoder
|
||||
*
|
||||
* \param i If decoding succeeds, *i will point to a new
|
||||
* lzma_index, which the application has to
|
||||
* later free with lzma_index_end(). If an error
|
||||
* occurs, *i will be NULL. The old value of *i
|
||||
* is always ignored and thus doesn't need to be
|
||||
* initialized by the caller.
|
||||
* \param memlimit Pointer to how much memory the resulting
|
||||
* lzma_index is allowed to require. The value
|
||||
* pointed by this pointer is modified if and only
|
||||
* if LZMA_MEMLIMIT_ERROR is returned.
|
||||
* \param allocator Pointer to lzma_allocator, or NULL to use malloc()
|
||||
* \param in Beginning of the input buffer
|
||||
* \param in_pos The next byte will be read from in[*in_pos].
|
||||
* *in_pos is updated only if decoding succeeds.
|
||||
* \param in_size Size of the input buffer; the first byte that
|
||||
* won't be read is in[in_size].
|
||||
*
|
||||
* \return - LZMA_OK: Decoding was successful.
|
||||
* - LZMA_MEM_ERROR
|
||||
* - LZMA_MEMLIMIT_ERROR: Memory usage limit was reached.
|
||||
* The minimum required memlimit value was stored to *memlimit.
|
||||
* - LZMA_DATA_ERROR
|
||||
* - LZMA_PROG_ERROR
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_index_buffer_decode(lzma_index **i,
|
||||
uint64_t *memlimit, const lzma_allocator *allocator,
|
||||
const uint8_t *in, size_t *in_pos, size_t in_size)
|
||||
lzma_nothrow;
|
||||
107
.CondaPkg/env/include/lzma/index_hash.h
vendored
Normal file
107
.CondaPkg/env/include/lzma/index_hash.h
vendored
Normal file
@@ -0,0 +1,107 @@
|
||||
/**
|
||||
* \file lzma/index_hash.h
|
||||
* \brief Validate Index by using a hash function
|
||||
*
|
||||
* Hashing makes it possible to use constant amount of memory to validate
|
||||
* Index of arbitrary size.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Author: Lasse Collin
|
||||
*
|
||||
* This file has been put into the public domain.
|
||||
* You can do whatever you want with this file.
|
||||
*
|
||||
* See ../lzma.h for information about liblzma as a whole.
|
||||
*/
|
||||
|
||||
#ifndef LZMA_H_INTERNAL
|
||||
# error Never include this file directly. Use <lzma.h> instead.
|
||||
#endif
|
||||
|
||||
/**
|
||||
* \brief Opaque data type to hold the Index hash
|
||||
*/
|
||||
typedef struct lzma_index_hash_s lzma_index_hash;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Allocate and initialize a new lzma_index_hash structure
|
||||
*
|
||||
* If index_hash is NULL, a new lzma_index_hash structure is allocated,
|
||||
* initialized, and a pointer to it returned. If allocation fails, NULL
|
||||
* is returned.
|
||||
*
|
||||
* If index_hash is non-NULL, it is reinitialized and the same pointer
|
||||
* returned. In this case, return value cannot be NULL or a different
|
||||
* pointer than the index_hash that was given as an argument.
|
||||
*/
|
||||
extern LZMA_API(lzma_index_hash *) lzma_index_hash_init(
|
||||
lzma_index_hash *index_hash, const lzma_allocator *allocator)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Deallocate lzma_index_hash structure
|
||||
*/
|
||||
extern LZMA_API(void) lzma_index_hash_end(
|
||||
lzma_index_hash *index_hash, const lzma_allocator *allocator)
|
||||
lzma_nothrow;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Add a new Record to an Index hash
|
||||
*
|
||||
* \param index Pointer to a lzma_index_hash structure
|
||||
* \param unpadded_size Unpadded Size of a Block
|
||||
* \param uncompressed_size Uncompressed Size of a Block
|
||||
*
|
||||
* \return - LZMA_OK
|
||||
* - LZMA_DATA_ERROR: Compressed or uncompressed size of the
|
||||
* Stream or size of the Index field would grow too big.
|
||||
* - LZMA_PROG_ERROR: Invalid arguments or this function is being
|
||||
* used when lzma_index_hash_decode() has already been used.
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_index_hash_append(lzma_index_hash *index_hash,
|
||||
lzma_vli unpadded_size, lzma_vli uncompressed_size)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Decode and validate the Index field
|
||||
*
|
||||
* After telling the sizes of all Blocks with lzma_index_hash_append(),
|
||||
* the actual Index field is decoded with this function. Specifically,
|
||||
* once decoding of the Index field has been started, no more Records
|
||||
* can be added using lzma_index_hash_append().
|
||||
*
|
||||
* This function doesn't use lzma_stream structure to pass the input data.
|
||||
* Instead, the input buffer is specified using three arguments. This is
|
||||
* because it matches better the internal APIs of liblzma.
|
||||
*
|
||||
* \param index_hash Pointer to a lzma_index_hash structure
|
||||
* \param in Pointer to the beginning of the input buffer
|
||||
* \param in_pos in[*in_pos] is the next byte to process
|
||||
* \param in_size in[in_size] is the first byte not to process
|
||||
*
|
||||
* \return - LZMA_OK: So far good, but more input is needed.
|
||||
* - LZMA_STREAM_END: Index decoded successfully and it matches
|
||||
* the Records given with lzma_index_hash_append().
|
||||
* - LZMA_DATA_ERROR: Index is corrupt or doesn't match the
|
||||
* information given with lzma_index_hash_append().
|
||||
* - LZMA_BUF_ERROR: Cannot progress because *in_pos >= in_size.
|
||||
* - LZMA_PROG_ERROR
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_index_hash_decode(lzma_index_hash *index_hash,
|
||||
const uint8_t *in, size_t *in_pos, size_t in_size)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Get the size of the Index field as bytes
|
||||
*
|
||||
* This is needed to verify the Backward Size field in the Stream Footer.
|
||||
*/
|
||||
extern LZMA_API(lzma_vli) lzma_index_hash_size(
|
||||
const lzma_index_hash *index_hash)
|
||||
lzma_nothrow lzma_attr_pure;
|
||||
420
.CondaPkg/env/include/lzma/lzma12.h
vendored
Normal file
420
.CondaPkg/env/include/lzma/lzma12.h
vendored
Normal file
@@ -0,0 +1,420 @@
|
||||
/**
|
||||
* \file lzma/lzma12.h
|
||||
* \brief LZMA1 and LZMA2 filters
|
||||
*/
|
||||
|
||||
/*
|
||||
* Author: Lasse Collin
|
||||
*
|
||||
* This file has been put into the public domain.
|
||||
* You can do whatever you want with this file.
|
||||
*
|
||||
* See ../lzma.h for information about liblzma as a whole.
|
||||
*/
|
||||
|
||||
#ifndef LZMA_H_INTERNAL
|
||||
# error Never include this file directly. Use <lzma.h> instead.
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
* \brief LZMA1 Filter ID
|
||||
*
|
||||
* LZMA1 is the very same thing as what was called just LZMA in LZMA Utils,
|
||||
* 7-Zip, and LZMA SDK. It's called LZMA1 here to prevent developers from
|
||||
* accidentally using LZMA when they actually want LZMA2.
|
||||
*
|
||||
* LZMA1 shouldn't be used for new applications unless you _really_ know
|
||||
* what you are doing. LZMA2 is almost always a better choice.
|
||||
*/
|
||||
#define LZMA_FILTER_LZMA1 LZMA_VLI_C(0x4000000000000001)
|
||||
|
||||
/**
|
||||
* \brief LZMA2 Filter ID
|
||||
*
|
||||
* Usually you want this instead of LZMA1. Compared to LZMA1, LZMA2 adds
|
||||
* support for LZMA_SYNC_FLUSH, uncompressed chunks (smaller expansion
|
||||
* when trying to compress uncompressible data), possibility to change
|
||||
* lc/lp/pb in the middle of encoding, and some other internal improvements.
|
||||
*/
|
||||
#define LZMA_FILTER_LZMA2 LZMA_VLI_C(0x21)
|
||||
|
||||
|
||||
/**
|
||||
* \brief Match finders
|
||||
*
|
||||
* Match finder has major effect on both speed and compression ratio.
|
||||
* Usually hash chains are faster than binary trees.
|
||||
*
|
||||
* If you will use LZMA_SYNC_FLUSH often, the hash chains may be a better
|
||||
* choice, because binary trees get much higher compression ratio penalty
|
||||
* with LZMA_SYNC_FLUSH.
|
||||
*
|
||||
* The memory usage formulas are only rough estimates, which are closest to
|
||||
* reality when dict_size is a power of two. The formulas are more complex
|
||||
* in reality, and can also change a little between liblzma versions. Use
|
||||
* lzma_raw_encoder_memusage() to get more accurate estimate of memory usage.
|
||||
*/
|
||||
typedef enum {
|
||||
LZMA_MF_HC3 = 0x03,
|
||||
/**<
|
||||
* \brief Hash Chain with 2- and 3-byte hashing
|
||||
*
|
||||
* Minimum nice_len: 3
|
||||
*
|
||||
* Memory usage:
|
||||
* - dict_size <= 16 MiB: dict_size * 7.5
|
||||
* - dict_size > 16 MiB: dict_size * 5.5 + 64 MiB
|
||||
*/
|
||||
|
||||
LZMA_MF_HC4 = 0x04,
|
||||
/**<
|
||||
* \brief Hash Chain with 2-, 3-, and 4-byte hashing
|
||||
*
|
||||
* Minimum nice_len: 4
|
||||
*
|
||||
* Memory usage:
|
||||
* - dict_size <= 32 MiB: dict_size * 7.5
|
||||
* - dict_size > 32 MiB: dict_size * 6.5
|
||||
*/
|
||||
|
||||
LZMA_MF_BT2 = 0x12,
|
||||
/**<
|
||||
* \brief Binary Tree with 2-byte hashing
|
||||
*
|
||||
* Minimum nice_len: 2
|
||||
*
|
||||
* Memory usage: dict_size * 9.5
|
||||
*/
|
||||
|
||||
LZMA_MF_BT3 = 0x13,
|
||||
/**<
|
||||
* \brief Binary Tree with 2- and 3-byte hashing
|
||||
*
|
||||
* Minimum nice_len: 3
|
||||
*
|
||||
* Memory usage:
|
||||
* - dict_size <= 16 MiB: dict_size * 11.5
|
||||
* - dict_size > 16 MiB: dict_size * 9.5 + 64 MiB
|
||||
*/
|
||||
|
||||
LZMA_MF_BT4 = 0x14
|
||||
/**<
|
||||
* \brief Binary Tree with 2-, 3-, and 4-byte hashing
|
||||
*
|
||||
* Minimum nice_len: 4
|
||||
*
|
||||
* Memory usage:
|
||||
* - dict_size <= 32 MiB: dict_size * 11.5
|
||||
* - dict_size > 32 MiB: dict_size * 10.5
|
||||
*/
|
||||
} lzma_match_finder;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Test if given match finder is supported
|
||||
*
|
||||
* Return true if the given match finder is supported by this liblzma build.
|
||||
* Otherwise false is returned. It is safe to call this with a value that
|
||||
* isn't listed in lzma_match_finder enumeration; the return value will be
|
||||
* false.
|
||||
*
|
||||
* There is no way to list which match finders are available in this
|
||||
* particular liblzma version and build. It would be useless, because
|
||||
* a new match finder, which the application developer wasn't aware,
|
||||
* could require giving additional options to the encoder that the older
|
||||
* match finders don't need.
|
||||
*/
|
||||
extern LZMA_API(lzma_bool) lzma_mf_is_supported(lzma_match_finder match_finder)
|
||||
lzma_nothrow lzma_attr_const;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Compression modes
|
||||
*
|
||||
* This selects the function used to analyze the data produced by the match
|
||||
* finder.
|
||||
*/
|
||||
typedef enum {
|
||||
LZMA_MODE_FAST = 1,
|
||||
/**<
|
||||
* \brief Fast compression
|
||||
*
|
||||
* Fast mode is usually at its best when combined with
|
||||
* a hash chain match finder.
|
||||
*/
|
||||
|
||||
LZMA_MODE_NORMAL = 2
|
||||
/**<
|
||||
* \brief Normal compression
|
||||
*
|
||||
* This is usually notably slower than fast mode. Use this
|
||||
* together with binary tree match finders to expose the
|
||||
* full potential of the LZMA1 or LZMA2 encoder.
|
||||
*/
|
||||
} lzma_mode;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Test if given compression mode is supported
|
||||
*
|
||||
* Return true if the given compression mode is supported by this liblzma
|
||||
* build. Otherwise false is returned. It is safe to call this with a value
|
||||
* that isn't listed in lzma_mode enumeration; the return value will be false.
|
||||
*
|
||||
* There is no way to list which modes are available in this particular
|
||||
* liblzma version and build. It would be useless, because a new compression
|
||||
* mode, which the application developer wasn't aware, could require giving
|
||||
* additional options to the encoder that the older modes don't need.
|
||||
*/
|
||||
extern LZMA_API(lzma_bool) lzma_mode_is_supported(lzma_mode mode)
|
||||
lzma_nothrow lzma_attr_const;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Options specific to the LZMA1 and LZMA2 filters
|
||||
*
|
||||
* Since LZMA1 and LZMA2 share most of the code, it's simplest to share
|
||||
* the options structure too. For encoding, all but the reserved variables
|
||||
* need to be initialized unless specifically mentioned otherwise.
|
||||
* lzma_lzma_preset() can be used to get a good starting point.
|
||||
*
|
||||
* For raw decoding, both LZMA1 and LZMA2 need dict_size, preset_dict, and
|
||||
* preset_dict_size (if preset_dict != NULL). LZMA1 needs also lc, lp, and pb.
|
||||
*/
|
||||
typedef struct {
|
||||
/**
|
||||
* \brief Dictionary size in bytes
|
||||
*
|
||||
* Dictionary size indicates how many bytes of the recently processed
|
||||
* uncompressed data is kept in memory. One method to reduce size of
|
||||
* the uncompressed data is to store distance-length pairs, which
|
||||
* indicate what data to repeat from the dictionary buffer. Thus,
|
||||
* the bigger the dictionary, the better the compression ratio
|
||||
* usually is.
|
||||
*
|
||||
* Maximum size of the dictionary depends on multiple things:
|
||||
* - Memory usage limit
|
||||
* - Available address space (not a problem on 64-bit systems)
|
||||
* - Selected match finder (encoder only)
|
||||
*
|
||||
* Currently the maximum dictionary size for encoding is 1.5 GiB
|
||||
* (i.e. (UINT32_C(1) << 30) + (UINT32_C(1) << 29)) even on 64-bit
|
||||
* systems for certain match finder implementation reasons. In the
|
||||
* future, there may be match finders that support bigger
|
||||
* dictionaries.
|
||||
*
|
||||
* Decoder already supports dictionaries up to 4 GiB - 1 B (i.e.
|
||||
* UINT32_MAX), so increasing the maximum dictionary size of the
|
||||
* encoder won't cause problems for old decoders.
|
||||
*
|
||||
* Because extremely small dictionaries sizes would have unneeded
|
||||
* overhead in the decoder, the minimum dictionary size is 4096 bytes.
|
||||
*
|
||||
* \note When decoding, too big dictionary does no other harm
|
||||
* than wasting memory.
|
||||
*/
|
||||
uint32_t dict_size;
|
||||
# define LZMA_DICT_SIZE_MIN UINT32_C(4096)
|
||||
# define LZMA_DICT_SIZE_DEFAULT (UINT32_C(1) << 23)
|
||||
|
||||
/**
|
||||
* \brief Pointer to an initial dictionary
|
||||
*
|
||||
* It is possible to initialize the LZ77 history window using
|
||||
* a preset dictionary. It is useful when compressing many
|
||||
* similar, relatively small chunks of data independently from
|
||||
* each other. The preset dictionary should contain typical
|
||||
* strings that occur in the files being compressed. The most
|
||||
* probable strings should be near the end of the preset dictionary.
|
||||
*
|
||||
* This feature should be used only in special situations. For
|
||||
* now, it works correctly only with raw encoding and decoding.
|
||||
* Currently none of the container formats supported by
|
||||
* liblzma allow preset dictionary when decoding, thus if
|
||||
* you create a .xz or .lzma file with preset dictionary, it
|
||||
* cannot be decoded with the regular decoder functions. In the
|
||||
* future, the .xz format will likely get support for preset
|
||||
* dictionary though.
|
||||
*/
|
||||
const uint8_t *preset_dict;
|
||||
|
||||
/**
|
||||
* \brief Size of the preset dictionary
|
||||
*
|
||||
* Specifies the size of the preset dictionary. If the size is
|
||||
* bigger than dict_size, only the last dict_size bytes are
|
||||
* processed.
|
||||
*
|
||||
* This variable is read only when preset_dict is not NULL.
|
||||
* If preset_dict is not NULL but preset_dict_size is zero,
|
||||
* no preset dictionary is used (identical to only setting
|
||||
* preset_dict to NULL).
|
||||
*/
|
||||
uint32_t preset_dict_size;
|
||||
|
||||
/**
|
||||
* \brief Number of literal context bits
|
||||
*
|
||||
* How many of the highest bits of the previous uncompressed
|
||||
* eight-bit byte (also known as `literal') are taken into
|
||||
* account when predicting the bits of the next literal.
|
||||
*
|
||||
* E.g. in typical English text, an upper-case letter is
|
||||
* often followed by a lower-case letter, and a lower-case
|
||||
* letter is usually followed by another lower-case letter.
|
||||
* In the US-ASCII character set, the highest three bits are 010
|
||||
* for upper-case letters and 011 for lower-case letters.
|
||||
* When lc is at least 3, the literal coding can take advantage of
|
||||
* this property in the uncompressed data.
|
||||
*
|
||||
* There is a limit that applies to literal context bits and literal
|
||||
* position bits together: lc + lp <= 4. Without this limit the
|
||||
* decoding could become very slow, which could have security related
|
||||
* results in some cases like email servers doing virus scanning.
|
||||
* This limit also simplifies the internal implementation in liblzma.
|
||||
*
|
||||
* There may be LZMA1 streams that have lc + lp > 4 (maximum possible
|
||||
* lc would be 8). It is not possible to decode such streams with
|
||||
* liblzma.
|
||||
*/
|
||||
uint32_t lc;
|
||||
# define LZMA_LCLP_MIN 0
|
||||
# define LZMA_LCLP_MAX 4
|
||||
# define LZMA_LC_DEFAULT 3
|
||||
|
||||
/**
|
||||
* \brief Number of literal position bits
|
||||
*
|
||||
* lp affects what kind of alignment in the uncompressed data is
|
||||
* assumed when encoding literals. A literal is a single 8-bit byte.
|
||||
* See pb below for more information about alignment.
|
||||
*/
|
||||
uint32_t lp;
|
||||
# define LZMA_LP_DEFAULT 0
|
||||
|
||||
/**
|
||||
* \brief Number of position bits
|
||||
*
|
||||
* pb affects what kind of alignment in the uncompressed data is
|
||||
* assumed in general. The default means four-byte alignment
|
||||
* (2^ pb =2^2=4), which is often a good choice when there's
|
||||
* no better guess.
|
||||
*
|
||||
* When the alignment is known, setting pb accordingly may reduce
|
||||
* the file size a little. E.g. with text files having one-byte
|
||||
* alignment (US-ASCII, ISO-8859-*, UTF-8), setting pb=0 can
|
||||
* improve compression slightly. For UTF-16 text, pb=1 is a good
|
||||
* choice. If the alignment is an odd number like 3 bytes, pb=0
|
||||
* might be the best choice.
|
||||
*
|
||||
* Even though the assumed alignment can be adjusted with pb and
|
||||
* lp, LZMA1 and LZMA2 still slightly favor 16-byte alignment.
|
||||
* It might be worth taking into account when designing file formats
|
||||
* that are likely to be often compressed with LZMA1 or LZMA2.
|
||||
*/
|
||||
uint32_t pb;
|
||||
# define LZMA_PB_MIN 0
|
||||
# define LZMA_PB_MAX 4
|
||||
# define LZMA_PB_DEFAULT 2
|
||||
|
||||
/** Compression mode */
|
||||
lzma_mode mode;
|
||||
|
||||
/**
|
||||
* \brief Nice length of a match
|
||||
*
|
||||
* This determines how many bytes the encoder compares from the match
|
||||
* candidates when looking for the best match. Once a match of at
|
||||
* least nice_len bytes long is found, the encoder stops looking for
|
||||
* better candidates and encodes the match. (Naturally, if the found
|
||||
* match is actually longer than nice_len, the actual length is
|
||||
* encoded; it's not truncated to nice_len.)
|
||||
*
|
||||
* Bigger values usually increase the compression ratio and
|
||||
* compression time. For most files, 32 to 128 is a good value,
|
||||
* which gives very good compression ratio at good speed.
|
||||
*
|
||||
* The exact minimum value depends on the match finder. The maximum
|
||||
* is 273, which is the maximum length of a match that LZMA1 and
|
||||
* LZMA2 can encode.
|
||||
*/
|
||||
uint32_t nice_len;
|
||||
|
||||
/** Match finder ID */
|
||||
lzma_match_finder mf;
|
||||
|
||||
/**
|
||||
* \brief Maximum search depth in the match finder
|
||||
*
|
||||
* For every input byte, match finder searches through the hash chain
|
||||
* or binary tree in a loop, each iteration going one step deeper in
|
||||
* the chain or tree. The searching stops if
|
||||
* - a match of at least nice_len bytes long is found;
|
||||
* - all match candidates from the hash chain or binary tree have
|
||||
* been checked; or
|
||||
* - maximum search depth is reached.
|
||||
*
|
||||
* Maximum search depth is needed to prevent the match finder from
|
||||
* wasting too much time in case there are lots of short match
|
||||
* candidates. On the other hand, stopping the search before all
|
||||
* candidates have been checked can reduce compression ratio.
|
||||
*
|
||||
* Setting depth to zero tells liblzma to use an automatic default
|
||||
* value, that depends on the selected match finder and nice_len.
|
||||
* The default is in the range [4, 200] or so (it may vary between
|
||||
* liblzma versions).
|
||||
*
|
||||
* Using a bigger depth value than the default can increase
|
||||
* compression ratio in some cases. There is no strict maximum value,
|
||||
* but high values (thousands or millions) should be used with care:
|
||||
* the encoder could remain fast enough with typical input, but
|
||||
* malicious input could cause the match finder to slow down
|
||||
* dramatically, possibly creating a denial of service attack.
|
||||
*/
|
||||
uint32_t depth;
|
||||
|
||||
/*
|
||||
* Reserved space to allow possible future extensions without
|
||||
* breaking the ABI. You should not touch these, because the names
|
||||
* of these variables may change. These are and will never be used
|
||||
* with the currently supported options, so it is safe to leave these
|
||||
* uninitialized.
|
||||
*/
|
||||
uint32_t reserved_int1;
|
||||
uint32_t reserved_int2;
|
||||
uint32_t reserved_int3;
|
||||
uint32_t reserved_int4;
|
||||
uint32_t reserved_int5;
|
||||
uint32_t reserved_int6;
|
||||
uint32_t reserved_int7;
|
||||
uint32_t reserved_int8;
|
||||
lzma_reserved_enum reserved_enum1;
|
||||
lzma_reserved_enum reserved_enum2;
|
||||
lzma_reserved_enum reserved_enum3;
|
||||
lzma_reserved_enum reserved_enum4;
|
||||
void *reserved_ptr1;
|
||||
void *reserved_ptr2;
|
||||
|
||||
} lzma_options_lzma;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Set a compression preset to lzma_options_lzma structure
|
||||
*
|
||||
* 0 is the fastest and 9 is the slowest. These match the switches -0 .. -9
|
||||
* of the xz command line tool. In addition, it is possible to bitwise-or
|
||||
* flags to the preset. Currently only LZMA_PRESET_EXTREME is supported.
|
||||
* The flags are defined in container.h, because the flags are used also
|
||||
* with lzma_easy_encoder().
|
||||
*
|
||||
* The preset values are subject to changes between liblzma versions.
|
||||
*
|
||||
* This function is available only if LZMA1 or LZMA2 encoder has been enabled
|
||||
* when building liblzma.
|
||||
*
|
||||
* \return On success, false is returned. If the preset is not
|
||||
* supported, true is returned.
|
||||
*/
|
||||
extern LZMA_API(lzma_bool) lzma_lzma_preset(
|
||||
lzma_options_lzma *options, uint32_t preset) lzma_nothrow;
|
||||
223
.CondaPkg/env/include/lzma/stream_flags.h
vendored
Normal file
223
.CondaPkg/env/include/lzma/stream_flags.h
vendored
Normal file
@@ -0,0 +1,223 @@
|
||||
/**
|
||||
* \file lzma/stream_flags.h
|
||||
* \brief .xz Stream Header and Stream Footer encoder and decoder
|
||||
*/
|
||||
|
||||
/*
|
||||
* Author: Lasse Collin
|
||||
*
|
||||
* This file has been put into the public domain.
|
||||
* You can do whatever you want with this file.
|
||||
*
|
||||
* See ../lzma.h for information about liblzma as a whole.
|
||||
*/
|
||||
|
||||
#ifndef LZMA_H_INTERNAL
|
||||
# error Never include this file directly. Use <lzma.h> instead.
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
* \brief Size of Stream Header and Stream Footer
|
||||
*
|
||||
* Stream Header and Stream Footer have the same size and they are not
|
||||
* going to change even if a newer version of the .xz file format is
|
||||
* developed in future.
|
||||
*/
|
||||
#define LZMA_STREAM_HEADER_SIZE 12
|
||||
|
||||
|
||||
/**
|
||||
* \brief Options for encoding/decoding Stream Header and Stream Footer
|
||||
*/
|
||||
typedef struct {
|
||||
/**
|
||||
* \brief Stream Flags format version
|
||||
*
|
||||
* To prevent API and ABI breakages if new features are needed in
|
||||
* Stream Header or Stream Footer, a version number is used to
|
||||
* indicate which fields in this structure are in use. For now,
|
||||
* version must always be zero. With non-zero version, the
|
||||
* lzma_stream_header_encode() and lzma_stream_footer_encode()
|
||||
* will return LZMA_OPTIONS_ERROR.
|
||||
*
|
||||
* lzma_stream_header_decode() and lzma_stream_footer_decode()
|
||||
* will always set this to the lowest value that supports all the
|
||||
* features indicated by the Stream Flags field. The application
|
||||
* must check that the version number set by the decoding functions
|
||||
* is supported by the application. Otherwise it is possible that
|
||||
* the application will decode the Stream incorrectly.
|
||||
*/
|
||||
uint32_t version;
|
||||
|
||||
/**
|
||||
* \brief Backward Size
|
||||
*
|
||||
* Backward Size must be a multiple of four bytes. In this Stream
|
||||
* format version, Backward Size is the size of the Index field.
|
||||
*
|
||||
* Backward Size isn't actually part of the Stream Flags field, but
|
||||
* it is convenient to include in this structure anyway. Backward
|
||||
* Size is present only in the Stream Footer. There is no need to
|
||||
* initialize backward_size when encoding Stream Header.
|
||||
*
|
||||
* lzma_stream_header_decode() always sets backward_size to
|
||||
* LZMA_VLI_UNKNOWN so that it is convenient to use
|
||||
* lzma_stream_flags_compare() when both Stream Header and Stream
|
||||
* Footer have been decoded.
|
||||
*/
|
||||
lzma_vli backward_size;
|
||||
# define LZMA_BACKWARD_SIZE_MIN 4
|
||||
# define LZMA_BACKWARD_SIZE_MAX (LZMA_VLI_C(1) << 34)
|
||||
|
||||
/**
|
||||
* \brief Check ID
|
||||
*
|
||||
* This indicates the type of the integrity check calculated from
|
||||
* uncompressed data.
|
||||
*/
|
||||
lzma_check check;
|
||||
|
||||
/*
|
||||
* Reserved space to allow possible future extensions without
|
||||
* breaking the ABI. You should not touch these, because the
|
||||
* names of these variables may change.
|
||||
*
|
||||
* (We will never be able to use all of these since Stream Flags
|
||||
* is just two bytes plus Backward Size of four bytes. But it's
|
||||
* nice to have the proper types when they are needed.)
|
||||
*/
|
||||
lzma_reserved_enum reserved_enum1;
|
||||
lzma_reserved_enum reserved_enum2;
|
||||
lzma_reserved_enum reserved_enum3;
|
||||
lzma_reserved_enum reserved_enum4;
|
||||
lzma_bool reserved_bool1;
|
||||
lzma_bool reserved_bool2;
|
||||
lzma_bool reserved_bool3;
|
||||
lzma_bool reserved_bool4;
|
||||
lzma_bool reserved_bool5;
|
||||
lzma_bool reserved_bool6;
|
||||
lzma_bool reserved_bool7;
|
||||
lzma_bool reserved_bool8;
|
||||
uint32_t reserved_int1;
|
||||
uint32_t reserved_int2;
|
||||
|
||||
} lzma_stream_flags;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Encode Stream Header
|
||||
*
|
||||
* \param options Stream Header options to be encoded.
|
||||
* options->backward_size is ignored and doesn't
|
||||
* need to be initialized.
|
||||
* \param out Beginning of the output buffer of
|
||||
* LZMA_STREAM_HEADER_SIZE bytes.
|
||||
*
|
||||
* \return - LZMA_OK: Encoding was successful.
|
||||
* - LZMA_OPTIONS_ERROR: options->version is not supported by
|
||||
* this liblzma version.
|
||||
* - LZMA_PROG_ERROR: Invalid options.
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_stream_header_encode(
|
||||
const lzma_stream_flags *options, uint8_t *out)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Encode Stream Footer
|
||||
*
|
||||
* \param options Stream Footer options to be encoded.
|
||||
* \param out Beginning of the output buffer of
|
||||
* LZMA_STREAM_HEADER_SIZE bytes.
|
||||
*
|
||||
* \return - LZMA_OK: Encoding was successful.
|
||||
* - LZMA_OPTIONS_ERROR: options->version is not supported by
|
||||
* this liblzma version.
|
||||
* - LZMA_PROG_ERROR: Invalid options.
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_stream_footer_encode(
|
||||
const lzma_stream_flags *options, uint8_t *out)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Decode Stream Header
|
||||
*
|
||||
* \param options Target for the decoded Stream Header options.
|
||||
* \param in Beginning of the input buffer of
|
||||
* LZMA_STREAM_HEADER_SIZE bytes.
|
||||
*
|
||||
* options->backward_size is always set to LZMA_VLI_UNKNOWN. This is to
|
||||
* help comparing Stream Flags from Stream Header and Stream Footer with
|
||||
* lzma_stream_flags_compare().
|
||||
*
|
||||
* \return - LZMA_OK: Decoding was successful.
|
||||
* - LZMA_FORMAT_ERROR: Magic bytes don't match, thus the given
|
||||
* buffer cannot be Stream Header.
|
||||
* - LZMA_DATA_ERROR: CRC32 doesn't match, thus the header
|
||||
* is corrupt.
|
||||
* - LZMA_OPTIONS_ERROR: Unsupported options are present
|
||||
* in the header.
|
||||
*
|
||||
* \note When decoding .xz files that contain multiple Streams, it may
|
||||
* make sense to print "file format not recognized" only if
|
||||
* decoding of the Stream Header of the _first_ Stream gives
|
||||
* LZMA_FORMAT_ERROR. If non-first Stream Header gives
|
||||
* LZMA_FORMAT_ERROR, the message used for LZMA_DATA_ERROR is
|
||||
* probably more appropriate.
|
||||
*
|
||||
* For example, Stream decoder in liblzma uses LZMA_DATA_ERROR if
|
||||
* LZMA_FORMAT_ERROR is returned by lzma_stream_header_decode()
|
||||
* when decoding non-first Stream.
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_stream_header_decode(
|
||||
lzma_stream_flags *options, const uint8_t *in)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Decode Stream Footer
|
||||
*
|
||||
* \param options Target for the decoded Stream Header options.
|
||||
* \param in Beginning of the input buffer of
|
||||
* LZMA_STREAM_HEADER_SIZE bytes.
|
||||
*
|
||||
* \return - LZMA_OK: Decoding was successful.
|
||||
* - LZMA_FORMAT_ERROR: Magic bytes don't match, thus the given
|
||||
* buffer cannot be Stream Footer.
|
||||
* - LZMA_DATA_ERROR: CRC32 doesn't match, thus the Stream Footer
|
||||
* is corrupt.
|
||||
* - LZMA_OPTIONS_ERROR: Unsupported options are present
|
||||
* in Stream Footer.
|
||||
*
|
||||
* \note If Stream Header was already decoded successfully, but
|
||||
* decoding Stream Footer returns LZMA_FORMAT_ERROR, the
|
||||
* application should probably report some other error message
|
||||
* than "file format not recognized", since the file more likely
|
||||
* is corrupt (possibly truncated). Stream decoder in liblzma
|
||||
* uses LZMA_DATA_ERROR in this situation.
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_stream_footer_decode(
|
||||
lzma_stream_flags *options, const uint8_t *in)
|
||||
lzma_nothrow lzma_attr_warn_unused_result;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Compare two lzma_stream_flags structures
|
||||
*
|
||||
* backward_size values are compared only if both are not
|
||||
* LZMA_VLI_UNKNOWN.
|
||||
*
|
||||
* \return - LZMA_OK: Both are equal. If either had backward_size set
|
||||
* to LZMA_VLI_UNKNOWN, backward_size values were not
|
||||
* compared or validated.
|
||||
* - LZMA_DATA_ERROR: The structures differ.
|
||||
* - LZMA_OPTIONS_ERROR: version in either structure is greater
|
||||
* than the maximum supported version (currently zero).
|
||||
* - LZMA_PROG_ERROR: Invalid value, e.g. invalid check or
|
||||
* backward_size.
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_stream_flags_compare(
|
||||
const lzma_stream_flags *a, const lzma_stream_flags *b)
|
||||
lzma_nothrow lzma_attr_pure;
|
||||
121
.CondaPkg/env/include/lzma/version.h
vendored
Normal file
121
.CondaPkg/env/include/lzma/version.h
vendored
Normal file
@@ -0,0 +1,121 @@
|
||||
/**
|
||||
* \file lzma/version.h
|
||||
* \brief Version number
|
||||
*/
|
||||
|
||||
/*
|
||||
* Author: Lasse Collin
|
||||
*
|
||||
* This file has been put into the public domain.
|
||||
* You can do whatever you want with this file.
|
||||
*
|
||||
* See ../lzma.h for information about liblzma as a whole.
|
||||
*/
|
||||
|
||||
#ifndef LZMA_H_INTERNAL
|
||||
# error Never include this file directly. Use <lzma.h> instead.
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Version number split into components
|
||||
*/
|
||||
#define LZMA_VERSION_MAJOR 5
|
||||
#define LZMA_VERSION_MINOR 2
|
||||
#define LZMA_VERSION_PATCH 6
|
||||
#define LZMA_VERSION_STABILITY LZMA_VERSION_STABILITY_STABLE
|
||||
|
||||
#ifndef LZMA_VERSION_COMMIT
|
||||
# define LZMA_VERSION_COMMIT ""
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Map symbolic stability levels to integers.
|
||||
*/
|
||||
#define LZMA_VERSION_STABILITY_ALPHA 0
|
||||
#define LZMA_VERSION_STABILITY_BETA 1
|
||||
#define LZMA_VERSION_STABILITY_STABLE 2
|
||||
|
||||
|
||||
/**
|
||||
* \brief Compile-time version number
|
||||
*
|
||||
* The version number is of format xyyyzzzs where
|
||||
* - x = major
|
||||
* - yyy = minor
|
||||
* - zzz = revision
|
||||
* - s indicates stability: 0 = alpha, 1 = beta, 2 = stable
|
||||
*
|
||||
* The same xyyyzzz triplet is never reused with different stability levels.
|
||||
* For example, if 5.1.0alpha has been released, there will never be 5.1.0beta
|
||||
* or 5.1.0 stable.
|
||||
*
|
||||
* \note The version number of liblzma has nothing to with
|
||||
* the version number of Igor Pavlov's LZMA SDK.
|
||||
*/
|
||||
#define LZMA_VERSION (LZMA_VERSION_MAJOR * UINT32_C(10000000) \
|
||||
+ LZMA_VERSION_MINOR * UINT32_C(10000) \
|
||||
+ LZMA_VERSION_PATCH * UINT32_C(10) \
|
||||
+ LZMA_VERSION_STABILITY)
|
||||
|
||||
|
||||
/*
|
||||
* Macros to construct the compile-time version string
|
||||
*/
|
||||
#if LZMA_VERSION_STABILITY == LZMA_VERSION_STABILITY_ALPHA
|
||||
# define LZMA_VERSION_STABILITY_STRING "alpha"
|
||||
#elif LZMA_VERSION_STABILITY == LZMA_VERSION_STABILITY_BETA
|
||||
# define LZMA_VERSION_STABILITY_STRING "beta"
|
||||
#elif LZMA_VERSION_STABILITY == LZMA_VERSION_STABILITY_STABLE
|
||||
# define LZMA_VERSION_STABILITY_STRING ""
|
||||
#else
|
||||
# error Incorrect LZMA_VERSION_STABILITY
|
||||
#endif
|
||||
|
||||
#define LZMA_VERSION_STRING_C_(major, minor, patch, stability, commit) \
|
||||
#major "." #minor "." #patch stability commit
|
||||
|
||||
#define LZMA_VERSION_STRING_C(major, minor, patch, stability, commit) \
|
||||
LZMA_VERSION_STRING_C_(major, minor, patch, stability, commit)
|
||||
|
||||
|
||||
/**
|
||||
* \brief Compile-time version as a string
|
||||
*
|
||||
* This can be for example "4.999.5alpha", "4.999.8beta", or "5.0.0" (stable
|
||||
* versions don't have any "stable" suffix). In future, a snapshot built
|
||||
* from source code repository may include an additional suffix, for example
|
||||
* "4.999.8beta-21-g1d92". The commit ID won't be available in numeric form
|
||||
* in LZMA_VERSION macro.
|
||||
*/
|
||||
#define LZMA_VERSION_STRING LZMA_VERSION_STRING_C( \
|
||||
LZMA_VERSION_MAJOR, LZMA_VERSION_MINOR, \
|
||||
LZMA_VERSION_PATCH, LZMA_VERSION_STABILITY_STRING, \
|
||||
LZMA_VERSION_COMMIT)
|
||||
|
||||
|
||||
/* #ifndef is needed for use with windres (MinGW or Cygwin). */
|
||||
#ifndef LZMA_H_INTERNAL_RC
|
||||
|
||||
/**
|
||||
* \brief Run-time version number as an integer
|
||||
*
|
||||
* Return the value of LZMA_VERSION macro at the compile time of liblzma.
|
||||
* This allows the application to compare if it was built against the same,
|
||||
* older, or newer version of liblzma that is currently running.
|
||||
*/
|
||||
extern LZMA_API(uint32_t) lzma_version_number(void)
|
||||
lzma_nothrow lzma_attr_const;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Run-time version as a string
|
||||
*
|
||||
* This function may be useful if you want to display which version of
|
||||
* liblzma your application is currently using.
|
||||
*/
|
||||
extern LZMA_API(const char *) lzma_version_string(void)
|
||||
lzma_nothrow lzma_attr_const;
|
||||
|
||||
#endif
|
||||
168
.CondaPkg/env/include/lzma/vli.h
vendored
Normal file
168
.CondaPkg/env/include/lzma/vli.h
vendored
Normal file
@@ -0,0 +1,168 @@
|
||||
/**
|
||||
* \file lzma/vli.h
|
||||
* \brief Variable-length integer handling
|
||||
*
|
||||
* In the .xz format, most integers are encoded in a variable-length
|
||||
* representation, which is sometimes called little endian base-128 encoding.
|
||||
* This saves space when smaller values are more likely than bigger values.
|
||||
*
|
||||
* The encoding scheme encodes seven bits to every byte, using minimum
|
||||
* number of bytes required to represent the given value. Encodings that use
|
||||
* non-minimum number of bytes are invalid, thus every integer has exactly
|
||||
* one encoded representation. The maximum number of bits in a VLI is 63,
|
||||
* thus the vli argument must be less than or equal to UINT64_MAX / 2. You
|
||||
* should use LZMA_VLI_MAX for clarity.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Author: Lasse Collin
|
||||
*
|
||||
* This file has been put into the public domain.
|
||||
* You can do whatever you want with this file.
|
||||
*
|
||||
* See ../lzma.h for information about liblzma as a whole.
|
||||
*/
|
||||
|
||||
#ifndef LZMA_H_INTERNAL
|
||||
# error Never include this file directly. Use <lzma.h> instead.
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
* \brief Maximum supported value of a variable-length integer
|
||||
*/
|
||||
#define LZMA_VLI_MAX (UINT64_MAX / 2)
|
||||
|
||||
/**
|
||||
* \brief VLI value to denote that the value is unknown
|
||||
*/
|
||||
#define LZMA_VLI_UNKNOWN UINT64_MAX
|
||||
|
||||
/**
|
||||
* \brief Maximum supported encoded length of variable length integers
|
||||
*/
|
||||
#define LZMA_VLI_BYTES_MAX 9
|
||||
|
||||
/**
|
||||
* \brief VLI constant suffix
|
||||
*/
|
||||
#define LZMA_VLI_C(n) UINT64_C(n)
|
||||
|
||||
|
||||
/**
|
||||
* \brief Variable-length integer type
|
||||
*
|
||||
* Valid VLI values are in the range [0, LZMA_VLI_MAX]. Unknown value is
|
||||
* indicated with LZMA_VLI_UNKNOWN, which is the maximum value of the
|
||||
* underlying integer type.
|
||||
*
|
||||
* lzma_vli will be uint64_t for the foreseeable future. If a bigger size
|
||||
* is needed in the future, it is guaranteed that 2 * LZMA_VLI_MAX will
|
||||
* not overflow lzma_vli. This simplifies integer overflow detection.
|
||||
*/
|
||||
typedef uint64_t lzma_vli;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Validate a variable-length integer
|
||||
*
|
||||
* This is useful to test that application has given acceptable values
|
||||
* for example in the uncompressed_size and compressed_size variables.
|
||||
*
|
||||
* \return True if the integer is representable as VLI or if it
|
||||
* indicates unknown value.
|
||||
*/
|
||||
#define lzma_vli_is_valid(vli) \
|
||||
((vli) <= LZMA_VLI_MAX || (vli) == LZMA_VLI_UNKNOWN)
|
||||
|
||||
|
||||
/**
|
||||
* \brief Encode a variable-length integer
|
||||
*
|
||||
* This function has two modes: single-call and multi-call. Single-call mode
|
||||
* encodes the whole integer at once; it is an error if the output buffer is
|
||||
* too small. Multi-call mode saves the position in *vli_pos, and thus it is
|
||||
* possible to continue encoding if the buffer becomes full before the whole
|
||||
* integer has been encoded.
|
||||
*
|
||||
* \param vli Integer to be encoded
|
||||
* \param vli_pos How many VLI-encoded bytes have already been written
|
||||
* out. When starting to encode a new integer in
|
||||
* multi-call mode, *vli_pos must be set to zero.
|
||||
* To use single-call encoding, set vli_pos to NULL.
|
||||
* \param out Beginning of the output buffer
|
||||
* \param out_pos The next byte will be written to out[*out_pos].
|
||||
* \param out_size Size of the out buffer; the first byte into
|
||||
* which no data is written to is out[out_size].
|
||||
*
|
||||
* \return Slightly different return values are used in multi-call and
|
||||
* single-call modes.
|
||||
*
|
||||
* Single-call (vli_pos == NULL):
|
||||
* - LZMA_OK: Integer successfully encoded.
|
||||
* - LZMA_PROG_ERROR: Arguments are not sane. This can be due
|
||||
* to too little output space; single-call mode doesn't use
|
||||
* LZMA_BUF_ERROR, since the application should have checked
|
||||
* the encoded size with lzma_vli_size().
|
||||
*
|
||||
* Multi-call (vli_pos != NULL):
|
||||
* - LZMA_OK: So far all OK, but the integer is not
|
||||
* completely written out yet.
|
||||
* - LZMA_STREAM_END: Integer successfully encoded.
|
||||
* - LZMA_BUF_ERROR: No output space was provided.
|
||||
* - LZMA_PROG_ERROR: Arguments are not sane.
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_vli_encode(lzma_vli vli, size_t *vli_pos,
|
||||
uint8_t *out, size_t *out_pos, size_t out_size) lzma_nothrow;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Decode a variable-length integer
|
||||
*
|
||||
* Like lzma_vli_encode(), this function has single-call and multi-call modes.
|
||||
*
|
||||
* \param vli Pointer to decoded integer. The decoder will
|
||||
* initialize it to zero when *vli_pos == 0, so
|
||||
* application isn't required to initialize *vli.
|
||||
* \param vli_pos How many bytes have already been decoded. When
|
||||
* starting to decode a new integer in multi-call
|
||||
* mode, *vli_pos must be initialized to zero. To
|
||||
* use single-call decoding, set vli_pos to NULL.
|
||||
* \param in Beginning of the input buffer
|
||||
* \param in_pos The next byte will be read from in[*in_pos].
|
||||
* \param in_size Size of the input buffer; the first byte that
|
||||
* won't be read is in[in_size].
|
||||
*
|
||||
* \return Slightly different return values are used in multi-call and
|
||||
* single-call modes.
|
||||
*
|
||||
* Single-call (vli_pos == NULL):
|
||||
* - LZMA_OK: Integer successfully decoded.
|
||||
* - LZMA_DATA_ERROR: Integer is corrupt. This includes hitting
|
||||
* the end of the input buffer before the whole integer was
|
||||
* decoded; providing no input at all will use LZMA_DATA_ERROR.
|
||||
* - LZMA_PROG_ERROR: Arguments are not sane.
|
||||
*
|
||||
* Multi-call (vli_pos != NULL):
|
||||
* - LZMA_OK: So far all OK, but the integer is not
|
||||
* completely decoded yet.
|
||||
* - LZMA_STREAM_END: Integer successfully decoded.
|
||||
* - LZMA_DATA_ERROR: Integer is corrupt.
|
||||
* - LZMA_BUF_ERROR: No input was provided.
|
||||
* - LZMA_PROG_ERROR: Arguments are not sane.
|
||||
*/
|
||||
extern LZMA_API(lzma_ret) lzma_vli_decode(lzma_vli *vli, size_t *vli_pos,
|
||||
const uint8_t *in, size_t *in_pos, size_t in_size)
|
||||
lzma_nothrow;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Get the number of bytes required to encode a VLI
|
||||
*
|
||||
* \param vli Integer whose encoded size is to be determined
|
||||
*
|
||||
* \return Number of bytes on success (1-9). If vli isn't valid,
|
||||
* zero is returned.
|
||||
*/
|
||||
extern LZMA_API(uint32_t) lzma_vli_size(lzma_vli vli)
|
||||
lzma_nothrow lzma_attr_pure;
|
||||
281
.CondaPkg/env/include/menu.h
vendored
Normal file
281
.CondaPkg/env/include/menu.h
vendored
Normal file
@@ -0,0 +1,281 @@
|
||||
/****************************************************************************
|
||||
* Copyright 2020 Thomas E. Dickey *
|
||||
* Copyright 1998-2016,2017 Free Software Foundation, Inc. *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a *
|
||||
* copy of this software and associated documentation files (the *
|
||||
* "Software"), to deal in the Software without restriction, including *
|
||||
* without limitation the rights to use, copy, modify, merge, publish, *
|
||||
* distribute, distribute with modifications, sublicense, and/or sell *
|
||||
* copies of the Software, and to permit persons to whom the Software is *
|
||||
* furnished to do so, subject to the following conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included *
|
||||
* in all copies or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
|
||||
* IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
|
||||
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
|
||||
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
|
||||
* THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
* *
|
||||
* Except as contained in this notice, the name(s) of the above copyright *
|
||||
* holders shall not be used in advertising or otherwise to promote the *
|
||||
* sale, use or other dealings in this Software without prior written *
|
||||
* authorization. *
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Author: Juergen Pfeifer, 1995,1997 *
|
||||
****************************************************************************/
|
||||
|
||||
/* $Id: menu.h,v 1.26 2020/12/12 00:38:02 tom Exp $ */
|
||||
|
||||
#ifndef ETI_MENU
|
||||
#define ETI_MENU
|
||||
|
||||
#ifdef AMIGA
|
||||
#define TEXT TEXT_ncurses
|
||||
#endif
|
||||
|
||||
#include <ncursesw/curses.h>
|
||||
#include <ncursesw/eti.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
#if defined(BUILDING_MENU)
|
||||
# define MENU_IMPEXP NCURSES_EXPORT_GENERAL_EXPORT
|
||||
#else
|
||||
# define MENU_IMPEXP NCURSES_EXPORT_GENERAL_IMPORT
|
||||
#endif
|
||||
|
||||
#define MENU_WRAPPED_VAR(type,name) extern MENU_IMPEXP type NCURSES_PUBLIC_VAR(name)(void)
|
||||
|
||||
#define MENU_EXPORT(type) MENU_IMPEXP type NCURSES_API
|
||||
#define MENU_EXPORT_VAR(type) MENU_IMPEXP type
|
||||
|
||||
typedef int Menu_Options;
|
||||
typedef int Item_Options;
|
||||
|
||||
/* Menu options: */
|
||||
#define O_ONEVALUE (0x01)
|
||||
#define O_SHOWDESC (0x02)
|
||||
#define O_ROWMAJOR (0x04)
|
||||
#define O_IGNORECASE (0x08)
|
||||
#define O_SHOWMATCH (0x10)
|
||||
#define O_NONCYCLIC (0x20)
|
||||
#define O_MOUSE_MENU (0x40)
|
||||
|
||||
/* Item options: */
|
||||
#define O_SELECTABLE (0x01)
|
||||
|
||||
#if !NCURSES_OPAQUE_MENU
|
||||
typedef struct
|
||||
{
|
||||
const char *str;
|
||||
unsigned short length;
|
||||
}
|
||||
TEXT;
|
||||
#endif /* !NCURSES_OPAQUE_MENU */
|
||||
|
||||
struct tagMENU;
|
||||
|
||||
typedef struct tagITEM
|
||||
#if !NCURSES_OPAQUE_MENU
|
||||
{
|
||||
TEXT name; /* name of menu item */
|
||||
TEXT description; /* description of item, optional in display */
|
||||
struct tagMENU *imenu; /* Pointer to parent menu */
|
||||
void *userptr; /* Pointer to user defined per item data */
|
||||
Item_Options opt; /* Item options */
|
||||
short index; /* Item number if connected to a menu */
|
||||
short y; /* y and x location of item in menu */
|
||||
short x;
|
||||
bool value; /* Selection value */
|
||||
|
||||
struct tagITEM *left; /* neighbor items */
|
||||
struct tagITEM *right;
|
||||
struct tagITEM *up;
|
||||
struct tagITEM *down;
|
||||
|
||||
}
|
||||
#endif /* !NCURSES_OPAQUE_MENU */
|
||||
ITEM;
|
||||
|
||||
typedef void (*Menu_Hook) (struct tagMENU *);
|
||||
|
||||
typedef struct tagMENU
|
||||
#if 1 /* not yet: !NCURSES_OPAQUE_MENU */
|
||||
{
|
||||
short height; /* Nr. of chars high */
|
||||
short width; /* Nr. of chars wide */
|
||||
short rows; /* Nr. of items high */
|
||||
short cols; /* Nr. of items wide */
|
||||
short frows; /* Nr. of formatted items high */
|
||||
short fcols; /* Nr. of formatted items wide */
|
||||
short arows; /* Nr. of items high (actual) */
|
||||
short namelen; /* Max. name length */
|
||||
short desclen; /* Max. description length */
|
||||
short marklen; /* Length of mark, if any */
|
||||
short itemlen; /* Length of one item */
|
||||
short spc_desc; /* Spacing for descriptor */
|
||||
short spc_cols; /* Spacing for columns */
|
||||
short spc_rows; /* Spacing for rows */
|
||||
char *pattern; /* Buffer to store match chars */
|
||||
short pindex; /* Index into pattern buffer */
|
||||
WINDOW *win; /* Window containing menu */
|
||||
WINDOW *sub; /* Subwindow for menu display */
|
||||
WINDOW *userwin; /* User's window */
|
||||
WINDOW *usersub; /* User's subwindow */
|
||||
ITEM **items; /* array of items */
|
||||
short nitems; /* Nr. of items in menu */
|
||||
ITEM *curitem; /* Current item */
|
||||
short toprow; /* Top row of menu */
|
||||
chtype fore; /* Selection attribute */
|
||||
chtype back; /* Nonselection attribute */
|
||||
chtype grey; /* Inactive attribute */
|
||||
unsigned char pad; /* Pad character */
|
||||
|
||||
Menu_Hook menuinit; /* User hooks */
|
||||
Menu_Hook menuterm;
|
||||
Menu_Hook iteminit;
|
||||
Menu_Hook itemterm;
|
||||
|
||||
void *userptr; /* Pointer to menus user data */
|
||||
char *mark; /* Pointer to marker string */
|
||||
|
||||
Menu_Options opt; /* Menu options */
|
||||
unsigned short status; /* Internal state of menu */
|
||||
}
|
||||
#endif /* !NCURSES_OPAQUE_MENU */
|
||||
MENU;
|
||||
|
||||
/* Define keys */
|
||||
|
||||
#define REQ_LEFT_ITEM (KEY_MAX + 1)
|
||||
#define REQ_RIGHT_ITEM (KEY_MAX + 2)
|
||||
#define REQ_UP_ITEM (KEY_MAX + 3)
|
||||
#define REQ_DOWN_ITEM (KEY_MAX + 4)
|
||||
#define REQ_SCR_ULINE (KEY_MAX + 5)
|
||||
#define REQ_SCR_DLINE (KEY_MAX + 6)
|
||||
#define REQ_SCR_DPAGE (KEY_MAX + 7)
|
||||
#define REQ_SCR_UPAGE (KEY_MAX + 8)
|
||||
#define REQ_FIRST_ITEM (KEY_MAX + 9)
|
||||
#define REQ_LAST_ITEM (KEY_MAX + 10)
|
||||
#define REQ_NEXT_ITEM (KEY_MAX + 11)
|
||||
#define REQ_PREV_ITEM (KEY_MAX + 12)
|
||||
#define REQ_TOGGLE_ITEM (KEY_MAX + 13)
|
||||
#define REQ_CLEAR_PATTERN (KEY_MAX + 14)
|
||||
#define REQ_BACK_PATTERN (KEY_MAX + 15)
|
||||
#define REQ_NEXT_MATCH (KEY_MAX + 16)
|
||||
#define REQ_PREV_MATCH (KEY_MAX + 17)
|
||||
|
||||
#define MIN_MENU_COMMAND (KEY_MAX + 1)
|
||||
#define MAX_MENU_COMMAND (KEY_MAX + 17)
|
||||
|
||||
/*
|
||||
* Some AT&T code expects MAX_COMMAND to be out-of-band not
|
||||
* just for menu commands but for forms ones as well.
|
||||
*/
|
||||
#if defined(MAX_COMMAND)
|
||||
# if (MAX_MENU_COMMAND > MAX_COMMAND)
|
||||
# error Something is wrong -- MAX_MENU_COMMAND is greater than MAX_COMMAND
|
||||
# elif (MAX_COMMAND != (KEY_MAX + 128))
|
||||
# error Something is wrong -- MAX_COMMAND is already inconsistently defined.
|
||||
# endif
|
||||
#else
|
||||
# define MAX_COMMAND (KEY_MAX + 128)
|
||||
#endif
|
||||
|
||||
/* --------- prototypes for libmenu functions ----------------------------- */
|
||||
|
||||
extern MENU_EXPORT(ITEM **) menu_items(const MENU *);
|
||||
extern MENU_EXPORT(ITEM *) current_item(const MENU *);
|
||||
extern MENU_EXPORT(ITEM *) new_item(const char *, const char *);
|
||||
|
||||
extern MENU_EXPORT(MENU *) new_menu(ITEM **);
|
||||
|
||||
extern MENU_EXPORT(Item_Options) item_opts(const ITEM *);
|
||||
extern MENU_EXPORT(Menu_Options) menu_opts(const MENU *);
|
||||
|
||||
extern MENU_EXPORT(Menu_Hook) item_init(const MENU *);
|
||||
extern MENU_EXPORT(Menu_Hook) item_term(const MENU *);
|
||||
extern MENU_EXPORT(Menu_Hook) menu_init(const MENU *);
|
||||
extern MENU_EXPORT(Menu_Hook) menu_term(const MENU *);
|
||||
|
||||
extern MENU_EXPORT(WINDOW *) menu_sub(const MENU *);
|
||||
extern MENU_EXPORT(WINDOW *) menu_win(const MENU *);
|
||||
|
||||
extern MENU_EXPORT(const char *) item_description(const ITEM *);
|
||||
extern MENU_EXPORT(const char *) item_name(const ITEM *);
|
||||
extern MENU_EXPORT(const char *) menu_mark(const MENU *);
|
||||
extern MENU_EXPORT(const char *) menu_request_name(int);
|
||||
|
||||
extern MENU_EXPORT(char *) menu_pattern(const MENU *);
|
||||
|
||||
extern MENU_EXPORT(void *) menu_userptr(const MENU *);
|
||||
extern MENU_EXPORT(void *) item_userptr(const ITEM *);
|
||||
|
||||
extern MENU_EXPORT(chtype) menu_back(const MENU *);
|
||||
extern MENU_EXPORT(chtype) menu_fore(const MENU *);
|
||||
extern MENU_EXPORT(chtype) menu_grey(const MENU *);
|
||||
|
||||
extern MENU_EXPORT(int) free_item(ITEM *);
|
||||
extern MENU_EXPORT(int) free_menu(MENU *);
|
||||
extern MENU_EXPORT(int) item_count(const MENU *);
|
||||
extern MENU_EXPORT(int) item_index(const ITEM *);
|
||||
extern MENU_EXPORT(int) item_opts_off(ITEM *, Item_Options);
|
||||
extern MENU_EXPORT(int) item_opts_on(ITEM *, Item_Options);
|
||||
extern MENU_EXPORT(int) menu_driver(MENU *, int);
|
||||
extern MENU_EXPORT(int) menu_opts_off(MENU *, Menu_Options);
|
||||
extern MENU_EXPORT(int) menu_opts_on(MENU *, Menu_Options);
|
||||
extern MENU_EXPORT(int) menu_pad(const MENU *);
|
||||
extern MENU_EXPORT(int) pos_menu_cursor(const MENU *);
|
||||
extern MENU_EXPORT(int) post_menu(MENU *);
|
||||
extern MENU_EXPORT(int) scale_menu(const MENU *, int *, int *);
|
||||
extern MENU_EXPORT(int) set_current_item(MENU *menu, ITEM *item);
|
||||
extern MENU_EXPORT(int) set_item_init(MENU *, Menu_Hook);
|
||||
extern MENU_EXPORT(int) set_item_opts(ITEM *, Item_Options);
|
||||
extern MENU_EXPORT(int) set_item_term(MENU *, Menu_Hook);
|
||||
extern MENU_EXPORT(int) set_item_userptr(ITEM *, void *);
|
||||
extern MENU_EXPORT(int) set_item_value(ITEM *, bool);
|
||||
extern MENU_EXPORT(int) set_menu_back(MENU *, chtype);
|
||||
extern MENU_EXPORT(int) set_menu_fore(MENU *, chtype);
|
||||
extern MENU_EXPORT(int) set_menu_format(MENU *, int, int);
|
||||
extern MENU_EXPORT(int) set_menu_grey(MENU *, chtype);
|
||||
extern MENU_EXPORT(int) set_menu_init(MENU *, Menu_Hook);
|
||||
extern MENU_EXPORT(int) set_menu_items(MENU *, ITEM **);
|
||||
extern MENU_EXPORT(int) set_menu_mark(MENU *, const char *);
|
||||
extern MENU_EXPORT(int) set_menu_opts(MENU *, Menu_Options);
|
||||
extern MENU_EXPORT(int) set_menu_pad(MENU *, int);
|
||||
extern MENU_EXPORT(int) set_menu_pattern(MENU *, const char *);
|
||||
extern MENU_EXPORT(int) set_menu_sub(MENU *, WINDOW *);
|
||||
extern MENU_EXPORT(int) set_menu_term(MENU *, Menu_Hook);
|
||||
extern MENU_EXPORT(int) set_menu_userptr(MENU *, void *);
|
||||
extern MENU_EXPORT(int) set_menu_win(MENU *, WINDOW *);
|
||||
extern MENU_EXPORT(int) set_top_row(MENU *, int);
|
||||
extern MENU_EXPORT(int) top_row(const MENU *);
|
||||
extern MENU_EXPORT(int) unpost_menu(MENU *);
|
||||
extern MENU_EXPORT(int) menu_request_by_name(const char *);
|
||||
extern MENU_EXPORT(int) set_menu_spacing(MENU *, int, int, int);
|
||||
extern MENU_EXPORT(int) menu_spacing(const MENU *, int *, int *, int *);
|
||||
|
||||
extern MENU_EXPORT(bool) item_value(const ITEM *);
|
||||
extern MENU_EXPORT(bool) item_visible(const ITEM *);
|
||||
|
||||
extern MENU_EXPORT(void) menu_format(const MENU *, int *, int *);
|
||||
|
||||
#if NCURSES_SP_FUNCS
|
||||
extern MENU_EXPORT(MENU *) NCURSES_SP_NAME(new_menu) (SCREEN *, ITEM **);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* ETI_MENU */
|
||||
101
.CondaPkg/env/include/mysqlStubs.h
vendored
Normal file
101
.CondaPkg/env/include/mysqlStubs.h
vendored
Normal file
@@ -0,0 +1,101 @@
|
||||
/*
|
||||
*-----------------------------------------------------------------------------
|
||||
*
|
||||
* ../generic/mysqlStubs.h --
|
||||
*
|
||||
* Stubs for procedures in mysqlStubDefs.txt
|
||||
*
|
||||
* Generated by genExtStubs.tcl: DO NOT EDIT
|
||||
* 2017-05-26 05:57:32Z
|
||||
*
|
||||
*-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
typedef struct mysqlStubDefs {
|
||||
|
||||
/* Functions from libraries: mysqlclient_r mysqlclient mysql */
|
||||
|
||||
int (STDCALL*mysql_server_initPtr)(int, char**, char**);
|
||||
void (STDCALL*mysql_server_endPtr)(void);
|
||||
my_ulonglong (STDCALL*mysql_affected_rowsPtr)(MYSQL*);
|
||||
my_bool (STDCALL*mysql_autocommitPtr)(MYSQL*, my_bool);
|
||||
my_bool (STDCALL*mysql_change_userPtr)(MYSQL*, const char*, const char*, const char*);
|
||||
my_bool (STDCALL*mysql_closePtr)(MYSQL*);
|
||||
my_bool (STDCALL*mysql_commitPtr)(MYSQL*);
|
||||
unsigned int (STDCALL*mysql_errnoPtr)(MYSQL*);
|
||||
const char* (STDCALL*mysql_errorPtr)(MYSQL*);
|
||||
MYSQL_FIELD* (STDCALL*mysql_fetch_fieldsPtr)(MYSQL_RES*);
|
||||
unsigned long* (STDCALL*mysql_fetch_lengthsPtr)(MYSQL_RES*);
|
||||
MYSQL_ROW (STDCALL*mysql_fetch_rowPtr)(MYSQL_RES*);
|
||||
unsigned int (STDCALL*mysql_field_countPtr)(MYSQL*);
|
||||
void (STDCALL*mysql_free_resultPtr)(MYSQL_RES*);
|
||||
unsigned long (STDCALL*mysql_get_client_versionPtr)(void);
|
||||
MYSQL* (STDCALL*mysql_initPtr)(MYSQL*);
|
||||
MYSQL_RES* (STDCALL*mysql_list_fieldsPtr)(MYSQL*, const char*, const char*);
|
||||
MYSQL_RES* (STDCALL*mysql_list_tablesPtr)(MYSQL*, const char*);
|
||||
unsigned int (STDCALL*mysql_num_fieldsPtr)(MYSQL_RES*);
|
||||
int (STDCALL*mysql_optionsPtr)(MYSQL*, enum mysql_option, const void*);
|
||||
int (STDCALL*mysql_queryPtr)(MYSQL*, const char*);
|
||||
MYSQL* (STDCALL*mysql_real_connectPtr)(MYSQL*, const char*, const char*, const char*, const char*, unsigned int, const char*, unsigned long);
|
||||
my_bool (STDCALL*mysql_rollbackPtr)(MYSQL*);
|
||||
int (STDCALL*mysql_select_dbPtr)(MYSQL*, const char*);
|
||||
const char* (STDCALL*mysql_sqlstatePtr)(MYSQL*);
|
||||
my_bool (STDCALL*mysql_ssl_setPtr)(MYSQL*, const char*, const char*, const char*, const char*, const char*);
|
||||
my_ulonglong (STDCALL*mysql_stmt_affected_rowsPtr)(MYSQL_STMT*);
|
||||
my_bool (STDCALL*mysql_stmt_bind_paramPtr)(MYSQL_STMT*, MYSQL_BIND*);
|
||||
my_bool (STDCALL*mysql_stmt_bind_resultPtr)(MYSQL_STMT*, MYSQL_BIND*);
|
||||
my_bool (STDCALL*mysql_stmt_closePtr)(MYSQL_STMT*);
|
||||
unsigned int (STDCALL*mysql_stmt_errnoPtr)(MYSQL_STMT*);
|
||||
const char* (STDCALL*mysql_stmt_errorPtr)(MYSQL_STMT*);
|
||||
int (STDCALL*mysql_stmt_executePtr)(MYSQL_STMT*);
|
||||
int (STDCALL*mysql_stmt_fetchPtr)(MYSQL_STMT*);
|
||||
int (STDCALL*mysql_stmt_fetch_columnPtr)(MYSQL_STMT*, MYSQL_BIND*, unsigned int, unsigned long);
|
||||
MYSQL_STMT* (STDCALL*mysql_stmt_initPtr)(MYSQL*);
|
||||
int (STDCALL*mysql_stmt_preparePtr)(MYSQL_STMT*, const char*, unsigned long);
|
||||
MYSQL_RES* (STDCALL*mysql_stmt_result_metadataPtr)(MYSQL_STMT*);
|
||||
const char* (STDCALL*mysql_stmt_sqlstatePtr)(MYSQL_STMT*);
|
||||
int (STDCALL*mysql_stmt_store_resultPtr)(MYSQL_STMT*);
|
||||
MYSQL_RES* (STDCALL*mysql_store_resultPtr)(MYSQL*);
|
||||
} mysqlStubDefs;
|
||||
#define mysql_server_init (mysqlStubs->mysql_server_initPtr)
|
||||
#define mysql_server_end (mysqlStubs->mysql_server_endPtr)
|
||||
#define mysql_affected_rows (mysqlStubs->mysql_affected_rowsPtr)
|
||||
#define mysql_autocommit (mysqlStubs->mysql_autocommitPtr)
|
||||
#define mysql_change_user (mysqlStubs->mysql_change_userPtr)
|
||||
#define mysql_close (mysqlStubs->mysql_closePtr)
|
||||
#define mysql_commit (mysqlStubs->mysql_commitPtr)
|
||||
#define mysql_errno (mysqlStubs->mysql_errnoPtr)
|
||||
#define mysql_error (mysqlStubs->mysql_errorPtr)
|
||||
#define mysql_fetch_fields (mysqlStubs->mysql_fetch_fieldsPtr)
|
||||
#define mysql_fetch_lengths (mysqlStubs->mysql_fetch_lengthsPtr)
|
||||
#define mysql_fetch_row (mysqlStubs->mysql_fetch_rowPtr)
|
||||
#define mysql_field_count (mysqlStubs->mysql_field_countPtr)
|
||||
#define mysql_free_result (mysqlStubs->mysql_free_resultPtr)
|
||||
#define mysql_get_client_version (mysqlStubs->mysql_get_client_versionPtr)
|
||||
#define mysql_init (mysqlStubs->mysql_initPtr)
|
||||
#define mysql_list_fields (mysqlStubs->mysql_list_fieldsPtr)
|
||||
#define mysql_list_tables (mysqlStubs->mysql_list_tablesPtr)
|
||||
#define mysql_num_fields (mysqlStubs->mysql_num_fieldsPtr)
|
||||
#define mysql_options (mysqlStubs->mysql_optionsPtr)
|
||||
#define mysql_query (mysqlStubs->mysql_queryPtr)
|
||||
#define mysql_real_connect (mysqlStubs->mysql_real_connectPtr)
|
||||
#define mysql_rollback (mysqlStubs->mysql_rollbackPtr)
|
||||
#define mysql_select_db (mysqlStubs->mysql_select_dbPtr)
|
||||
#define mysql_sqlstate (mysqlStubs->mysql_sqlstatePtr)
|
||||
#define mysql_ssl_set (mysqlStubs->mysql_ssl_setPtr)
|
||||
#define mysql_stmt_affected_rows (mysqlStubs->mysql_stmt_affected_rowsPtr)
|
||||
#define mysql_stmt_bind_param (mysqlStubs->mysql_stmt_bind_paramPtr)
|
||||
#define mysql_stmt_bind_result (mysqlStubs->mysql_stmt_bind_resultPtr)
|
||||
#define mysql_stmt_close (mysqlStubs->mysql_stmt_closePtr)
|
||||
#define mysql_stmt_errno (mysqlStubs->mysql_stmt_errnoPtr)
|
||||
#define mysql_stmt_error (mysqlStubs->mysql_stmt_errorPtr)
|
||||
#define mysql_stmt_execute (mysqlStubs->mysql_stmt_executePtr)
|
||||
#define mysql_stmt_fetch (mysqlStubs->mysql_stmt_fetchPtr)
|
||||
#define mysql_stmt_fetch_column (mysqlStubs->mysql_stmt_fetch_columnPtr)
|
||||
#define mysql_stmt_init (mysqlStubs->mysql_stmt_initPtr)
|
||||
#define mysql_stmt_prepare (mysqlStubs->mysql_stmt_preparePtr)
|
||||
#define mysql_stmt_result_metadata (mysqlStubs->mysql_stmt_result_metadataPtr)
|
||||
#define mysql_stmt_sqlstate (mysqlStubs->mysql_stmt_sqlstatePtr)
|
||||
#define mysql_stmt_store_result (mysqlStubs->mysql_stmt_store_resultPtr)
|
||||
#define mysql_store_result (mysqlStubs->mysql_store_resultPtr)
|
||||
MODULE_SCOPE const mysqlStubDefs *mysqlStubs;
|
||||
92
.CondaPkg/env/include/nc_tparm.h
vendored
Normal file
92
.CondaPkg/env/include/nc_tparm.h
vendored
Normal file
@@ -0,0 +1,92 @@
|
||||
/****************************************************************************
|
||||
* Copyright 2018,2020 Thomas E. Dickey *
|
||||
* Copyright 2006-2012,2017 Free Software Foundation, Inc. *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a *
|
||||
* copy of this software and associated documentation files (the *
|
||||
* "Software"), to deal in the Software without restriction, including *
|
||||
* without limitation the rights to use, copy, modify, merge, publish, *
|
||||
* distribute, distribute with modifications, sublicense, and/or sell *
|
||||
* copies of the Software, and to permit persons to whom the Software is *
|
||||
* furnished to do so, subject to the following conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included *
|
||||
* in all copies or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
|
||||
* IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
|
||||
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
|
||||
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
|
||||
* THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
* *
|
||||
* Except as contained in this notice, the name(s) of the above copyright *
|
||||
* holders shall not be used in advertising or otherwise to promote the *
|
||||
* sale, use or other dealings in this Software without prior written *
|
||||
* authorization. *
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Author: Thomas E. Dickey 2006 *
|
||||
****************************************************************************/
|
||||
|
||||
/* $Id: nc_tparm.h,v 1.11 2020/05/27 23:33:31 tom Exp $ */
|
||||
|
||||
#ifndef NC_TPARM_included
|
||||
#define NC_TPARM_included 1
|
||||
|
||||
#include <ncurses_cfg.h>
|
||||
#include <ncursesw/curses.h>
|
||||
|
||||
/*
|
||||
* Cast parameters past the formatting-string for tparm() to match the
|
||||
* assumption of the varargs code.
|
||||
*/
|
||||
#ifndef TPARM_ARG
|
||||
#ifdef NCURSES_TPARM_ARG
|
||||
#define TPARM_ARG NCURSES_TPARM_ARG
|
||||
#else
|
||||
#define TPARM_ARG long
|
||||
#endif
|
||||
#endif /* TPARAM_ARG */
|
||||
|
||||
#define TPARM_N(n) (TPARM_ARG)(n)
|
||||
|
||||
#define TPARM_9(a,b,c,d,e,f,g,h,i,j) tparm(a,TPARM_N(b),TPARM_N(c),TPARM_N(d),TPARM_N(e),TPARM_N(f),TPARM_N(g),TPARM_N(h),TPARM_N(i),TPARM_N(j))
|
||||
|
||||
#if NCURSES_TPARM_VARARGS
|
||||
#define TPARM_8(a,b,c,d,e,f,g,h,i) tparm(a,TPARM_N(b),TPARM_N(c),TPARM_N(d),TPARM_N(e),TPARM_N(f),TPARM_N(g),TPARM_N(h),TPARM_N(i))
|
||||
#define TPARM_7(a,b,c,d,e,f,g,h) tparm(a,TPARM_N(b),TPARM_N(c),TPARM_N(d),TPARM_N(e),TPARM_N(f),TPARM_N(g),TPARM_N(h))
|
||||
#define TPARM_6(a,b,c,d,e,f,g) tparm(a,TPARM_N(b),TPARM_N(c),TPARM_N(d),TPARM_N(e),TPARM_N(f),TPARM_N(g))
|
||||
#define TPARM_5(a,b,c,d,e,f) tparm(a,TPARM_N(b),TPARM_N(c),TPARM_N(d),TPARM_N(e),TPARM_N(f))
|
||||
#define TPARM_4(a,b,c,d,e) tparm(a,TPARM_N(b),TPARM_N(c),TPARM_N(d),TPARM_N(e))
|
||||
#define TPARM_3(a,b,c,d) tparm(a,TPARM_N(b),TPARM_N(c),TPARM_N(d))
|
||||
#define TPARM_2(a,b,c) tparm(a,TPARM_N(b),TPARM_N(c))
|
||||
#define TPARM_1(a,b) tparm(a,TPARM_N(b))
|
||||
#define TPARM_0(a) tparm(a)
|
||||
#else
|
||||
#define TPARM_8(a,b,c,d,e,f,g,h,i) TPARM_9(a,b,c,d,e,f,g,h,i,0)
|
||||
#define TPARM_7(a,b,c,d,e,f,g,h) TPARM_8(a,b,c,d,e,f,g,h,0)
|
||||
#define TPARM_6(a,b,c,d,e,f,g) TPARM_7(a,b,c,d,e,f,g,0)
|
||||
#define TPARM_5(a,b,c,d,e,f) TPARM_6(a,b,c,d,e,f,0)
|
||||
#define TPARM_4(a,b,c,d,e) TPARM_5(a,b,c,d,e,0)
|
||||
#define TPARM_3(a,b,c,d) TPARM_4(a,b,c,d,0)
|
||||
#define TPARM_2(a,b,c) TPARM_3(a,b,c,0)
|
||||
#define TPARM_1(a,b) TPARM_2(a,b,0)
|
||||
#define TPARM_0(a) TPARM_1(a,0)
|
||||
#endif
|
||||
|
||||
#ifdef NCURSES_INTERNALS
|
||||
#define TIPARM_1(s,a) _nc_tiparm(1,s,a)
|
||||
#define TIPARM_2(s,a,b) _nc_tiparm(2,s,a,b)
|
||||
#define TIPARM_3(s,a,b,c) _nc_tiparm(3,s,a,b,c)
|
||||
#define TIPARM_4(s,a,b,c,d) _nc_tiparm(4,s,a,b,c,d)
|
||||
#define TIPARM_5(s,a,b,c,d,e) _nc_tiparm(5,s,a,b,c,d,e)
|
||||
#define TIPARM_6(s,a,b,c,d,e,f) _nc_tiparm(6,s,a,b,c,d,e,f)
|
||||
#define TIPARM_7(s,a,b,c,d,e,f,g) _nc_tiparm(7,s,a,b,c,d,e,f,g)
|
||||
#define TIPARM_8(s,a,b,c,d,e,f,g,h) _nc_tiparm(8,s,a,b,c,d,e,f,g,h)
|
||||
#define TIPARM_9(s,a,b,c,d,e,f,g,h,i) _nc_tiparm(9,s,a,b,c,d,e,f,g,h,i)
|
||||
#endif
|
||||
|
||||
#endif /* NC_TPARM_included */
|
||||
1
.CondaPkg/env/include/ncurses.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncurses.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
curses.h
|
||||
1
.CondaPkg/env/include/ncurses/curses.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncurses/curses.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../curses.h
|
||||
1
.CondaPkg/env/include/ncurses/cursesapp.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncurses/cursesapp.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../cursesapp.h
|
||||
1
.CondaPkg/env/include/ncurses/cursesf.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncurses/cursesf.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../cursesf.h
|
||||
1
.CondaPkg/env/include/ncurses/cursesm.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncurses/cursesm.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../cursesm.h
|
||||
1
.CondaPkg/env/include/ncurses/cursesp.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncurses/cursesp.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../cursesp.h
|
||||
1
.CondaPkg/env/include/ncurses/cursesw.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncurses/cursesw.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../cursesw.h
|
||||
1
.CondaPkg/env/include/ncurses/cursslk.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncurses/cursslk.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../cursslk.h
|
||||
1
.CondaPkg/env/include/ncurses/eti.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncurses/eti.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../eti.h
|
||||
1
.CondaPkg/env/include/ncurses/etip.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncurses/etip.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../etip.h
|
||||
1
.CondaPkg/env/include/ncurses/form.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncurses/form.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../form.h
|
||||
1
.CondaPkg/env/include/ncurses/menu.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncurses/menu.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../menu.h
|
||||
1
.CondaPkg/env/include/ncurses/nc_tparm.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncurses/nc_tparm.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../nc_tparm.h
|
||||
1
.CondaPkg/env/include/ncurses/ncurses.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncurses/ncurses.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../curses.h
|
||||
1
.CondaPkg/env/include/ncurses/ncurses_dll.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncurses/ncurses_dll.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../ncurses_dll.h
|
||||
1
.CondaPkg/env/include/ncurses/panel.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncurses/panel.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../panel.h
|
||||
1
.CondaPkg/env/include/ncurses/term.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncurses/term.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../term.h
|
||||
1
.CondaPkg/env/include/ncurses/term_entry.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncurses/term_entry.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../term_entry.h
|
||||
1
.CondaPkg/env/include/ncurses/termcap.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncurses/termcap.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../termcap.h
|
||||
1
.CondaPkg/env/include/ncurses/tic.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncurses/tic.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../tic.h
|
||||
1
.CondaPkg/env/include/ncurses/unctrl.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncurses/unctrl.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../unctrl.h
|
||||
99
.CondaPkg/env/include/ncurses_dll.h
vendored
Normal file
99
.CondaPkg/env/include/ncurses_dll.h
vendored
Normal file
@@ -0,0 +1,99 @@
|
||||
/****************************************************************************
|
||||
* Copyright 2018,2020 Thomas E. Dickey *
|
||||
* Copyright 2009,2014 Free Software Foundation, Inc. *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a *
|
||||
* copy of this software and associated documentation files (the *
|
||||
* "Software"), to deal in the Software without restriction, including *
|
||||
* without limitation the rights to use, copy, modify, merge, publish, *
|
||||
* distribute, distribute with modifications, sublicense, and/or sell *
|
||||
* copies of the Software, and to permit persons to whom the Software is *
|
||||
* furnished to do so, subject to the following conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included *
|
||||
* in all copies or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
|
||||
* IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
|
||||
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
|
||||
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
|
||||
* THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
* *
|
||||
* Except as contained in this notice, the name(s) of the above copyright *
|
||||
* holders shall not be used in advertising or otherwise to promote the *
|
||||
* sale, use or other dealings in this Software without prior written *
|
||||
* authorization. *
|
||||
****************************************************************************/
|
||||
/* $Id: ncurses_dll.h.in,v 1.17 2020/09/05 17:58:47 juergen Exp $ */
|
||||
|
||||
#ifndef NCURSES_DLL_H_incl
|
||||
#define NCURSES_DLL_H_incl 1
|
||||
|
||||
/*
|
||||
* MinGW gcc (unlike MSYS2 and Cygwin) should define _WIN32 and possibly _WIN64.
|
||||
*/
|
||||
#if defined(__MINGW64__)
|
||||
|
||||
#ifndef _WIN64
|
||||
#define _WIN64 1
|
||||
#endif
|
||||
|
||||
#elif defined(__MINGW32__)
|
||||
|
||||
#ifndef _WIN32
|
||||
#define _WIN32 1
|
||||
#endif
|
||||
|
||||
/* 2014-08-02 workaround for broken MinGW compiler.
|
||||
* Oddly, only TRACE is mapped to trace - the other -D's are okay.
|
||||
* suggest TDM as an alternative.
|
||||
*/
|
||||
#if (__GNUC__ == 4) && (__GNUC_MINOR__ == 8)
|
||||
|
||||
#ifdef trace
|
||||
#undef trace
|
||||
#define TRACE
|
||||
#endif
|
||||
|
||||
#endif /* broken compiler */
|
||||
|
||||
#endif /* MingW */
|
||||
|
||||
/*
|
||||
* For reentrant code, we map the various global variables into SCREEN by
|
||||
* using functions to access them.
|
||||
*/
|
||||
#define NCURSES_PUBLIC_VAR(name) _nc_##name
|
||||
|
||||
#if defined(BUILDING_NCURSES)
|
||||
# define NCURSES_IMPEXP NCURSES_EXPORT_GENERAL_EXPORT
|
||||
#else
|
||||
# define NCURSES_IMPEXP NCURSES_EXPORT_GENERAL_IMPORT
|
||||
#endif
|
||||
|
||||
#define NCURSES_WRAPPED_VAR(type,name) extern NCURSES_IMPEXP type NCURSES_PUBLIC_VAR(name)(void)
|
||||
|
||||
#define NCURSES_EXPORT(type) NCURSES_IMPEXP type NCURSES_API
|
||||
#define NCURSES_EXPORT_VAR(type) NCURSES_IMPEXP type
|
||||
|
||||
/*
|
||||
* These symbols hide dllimport/dllexport, for compilers which care about it.
|
||||
*/
|
||||
#if defined(__CYGWIN__) || (defined(_WIN32) || defined(_WIN64))
|
||||
# if defined(NCURSES_STATIC) /* "static" here only implies "not-a-DLL" */
|
||||
# define NCURSES_EXPORT_GENERAL_IMPORT
|
||||
# define NCURSES_EXPORT_GENERAL_EXPORT
|
||||
# else
|
||||
# define NCURSES_EXPORT_GENERAL_IMPORT __declspec(dllimport)
|
||||
# define NCURSES_EXPORT_GENERAL_EXPORT __declspec(dllexport)
|
||||
# endif
|
||||
# define NCURSES_API __cdecl
|
||||
#else
|
||||
# define NCURSES_EXPORT_GENERAL_IMPORT
|
||||
# define NCURSES_EXPORT_GENERAL_EXPORT
|
||||
# define NCURSES_API /* FIXME: __attribute__ ((cdecl)) is only available on x86 */
|
||||
#endif
|
||||
|
||||
#endif /* NCURSES_DLL_H_incl */
|
||||
1
.CondaPkg/env/include/ncursesw/curses.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncursesw/curses.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../curses.h
|
||||
1
.CondaPkg/env/include/ncursesw/cursesapp.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncursesw/cursesapp.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../cursesapp.h
|
||||
1
.CondaPkg/env/include/ncursesw/cursesf.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncursesw/cursesf.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../cursesf.h
|
||||
1
.CondaPkg/env/include/ncursesw/cursesm.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncursesw/cursesm.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../cursesm.h
|
||||
1
.CondaPkg/env/include/ncursesw/cursesp.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncursesw/cursesp.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../cursesp.h
|
||||
1
.CondaPkg/env/include/ncursesw/cursesw.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncursesw/cursesw.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../cursesw.h
|
||||
1
.CondaPkg/env/include/ncursesw/cursslk.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncursesw/cursslk.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../cursslk.h
|
||||
1
.CondaPkg/env/include/ncursesw/eti.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncursesw/eti.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../eti.h
|
||||
1
.CondaPkg/env/include/ncursesw/etip.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncursesw/etip.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../etip.h
|
||||
1
.CondaPkg/env/include/ncursesw/form.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncursesw/form.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../form.h
|
||||
1
.CondaPkg/env/include/ncursesw/menu.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncursesw/menu.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../menu.h
|
||||
1
.CondaPkg/env/include/ncursesw/nc_tparm.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncursesw/nc_tparm.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../nc_tparm.h
|
||||
1
.CondaPkg/env/include/ncursesw/ncurses.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncursesw/ncurses.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../curses.h
|
||||
1
.CondaPkg/env/include/ncursesw/ncurses_dll.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncursesw/ncurses_dll.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../ncurses_dll.h
|
||||
1
.CondaPkg/env/include/ncursesw/panel.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncursesw/panel.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../panel.h
|
||||
1
.CondaPkg/env/include/ncursesw/term.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncursesw/term.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../term.h
|
||||
1
.CondaPkg/env/include/ncursesw/term_entry.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncursesw/term_entry.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../term_entry.h
|
||||
1
.CondaPkg/env/include/ncursesw/termcap.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncursesw/termcap.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../termcap.h
|
||||
1
.CondaPkg/env/include/ncursesw/tic.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncursesw/tic.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../tic.h
|
||||
1
.CondaPkg/env/include/ncursesw/unctrl.h
vendored
Symbolic link
1
.CondaPkg/env/include/ncursesw/unctrl.h
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../unctrl.h
|
||||
78
.CondaPkg/env/include/odbcStubs.h
vendored
Normal file
78
.CondaPkg/env/include/odbcStubs.h
vendored
Normal file
@@ -0,0 +1,78 @@
|
||||
/*
|
||||
*-----------------------------------------------------------------------------
|
||||
*
|
||||
* odbcStubs.h --
|
||||
*
|
||||
* Stubs for procedures in odbcStubDefs.txt
|
||||
*
|
||||
* Generated by genExtStubs.tcl: DO NOT EDIT
|
||||
* 2018-05-12 16:18:48Z
|
||||
*
|
||||
*-----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
typedef struct odbcStubDefs {
|
||||
SQLRETURN (SQL_API*SQLAllocHandlePtr)(SQLSMALLINT,SQLHANDLE,SQLHANDLE*);
|
||||
SQLRETURN (SQL_API*SQLBindParameterPtr)(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT,SQLSMALLINT,SQLSMALLINT,SQLULEN,SQLSMALLINT,SQLPOINTER,SQLLEN,SQLLEN*);
|
||||
SQLRETURN (SQL_API*SQLCloseCursorPtr)(SQLHSTMT);
|
||||
SQLRETURN (SQL_API*SQLColumnsWPtr)(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT ,SQLWCHAR*,SQLSMALLINT );
|
||||
SQLRETURN (SQL_API*SQLDataSourcesWPtr)(SQLHENV,SQLUSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*);
|
||||
SQLRETURN (SQL_API*SQLDescribeColWPtr)(SQLHSTMT,SQLUSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLSMALLINT*,SQLULEN*,SQLSMALLINT*,SQLSMALLINT*);
|
||||
SQLRETURN (SQL_API*SQLDescribeParamPtr)(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT*,SQLULEN*,SQLSMALLINT*,SQLSMALLINT*);
|
||||
SQLRETURN (SQL_API*SQLDisconnectPtr)(SQLHDBC);
|
||||
SQLRETURN (SQL_API*SQLDriverConnectWPtr)(SQLHDBC,SQLHWND,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLUSMALLINT);
|
||||
SQLRETURN (SQL_API*SQLDriversWPtr)(SQLHENV,SQLUSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*);
|
||||
SQLRETURN (SQL_API*SQLEndTranPtr)(SQLSMALLINT,SQLHANDLE,SQLSMALLINT);
|
||||
SQLRETURN (SQL_API*SQLExecutePtr)(SQLHSTMT);
|
||||
SQLRETURN (SQL_API*SQLFetchPtr)(SQLHSTMT);
|
||||
SQLRETURN (SQL_API*SQLForeignKeysWPtr)(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT);
|
||||
SQLRETURN (SQL_API*SQLFreeHandlePtr)(SQLSMALLINT,SQLHANDLE);
|
||||
SQLRETURN (SQL_API*SQLGetConnectAttrPtr)(SQLHDBC,SQLINTEGER,SQLPOINTER,SQLINTEGER,SQLINTEGER*);
|
||||
SQLRETURN (SQL_API*SQLGetDataPtr)(SQLHSTMT,SQLUSMALLINT,SQLSMALLINT,SQLPOINTER,SQLLEN,SQLLEN*);
|
||||
SQLRETURN (SQL_API*SQLGetDiagFieldAPtr)(SQLSMALLINT,SQLHANDLE,SQLSMALLINT,SQLSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*);
|
||||
SQLRETURN (SQL_API*SQLGetDiagRecWPtr)(SQLSMALLINT,SQLHANDLE,SQLSMALLINT,SQLWCHAR*,SQLINTEGER*,SQLWCHAR*,SQLSMALLINT,SQLSMALLINT*);
|
||||
SQLRETURN (SQL_API*SQLGetInfoWPtr)(SQLHANDLE,SQLUSMALLINT,SQLPOINTER,SQLSMALLINT,SQLSMALLINT*);
|
||||
SQLRETURN (SQL_API*SQLGetTypeInfoPtr)(SQLHSTMT,SQLSMALLINT);
|
||||
SQLRETURN (SQL_API*SQLMoreResultsPtr)(SQLHSTMT);
|
||||
SQLRETURN (SQL_API*SQLNumParamsPtr)(SQLHSTMT,SQLSMALLINT*);
|
||||
SQLRETURN (SQL_API*SQLNumResultColsPtr)(SQLHSTMT,SQLSMALLINT*);
|
||||
SQLRETURN (SQL_API*SQLPrepareWPtr)(SQLHSTMT,SQLWCHAR*,SQLINTEGER);
|
||||
SQLRETURN (SQL_API*SQLPrimaryKeysWPtr)(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT);
|
||||
SQLRETURN (SQL_API*SQLRowCountPtr)(SQLHSTMT,SQLLEN*);
|
||||
SQLRETURN (SQL_API*SQLSetConnectAttrPtr)(SQLHDBC,SQLINTEGER,SQLPOINTER,SQLINTEGER);
|
||||
SQLRETURN (SQL_API*SQLSetConnectOptionPtr)(SQLHDBC,SQLUSMALLINT,SQLULEN);
|
||||
SQLRETURN (SQL_API*SQLSetEnvAttrPtr)(SQLHENV,SQLINTEGER,SQLPOINTER,SQLINTEGER);
|
||||
SQLRETURN (SQL_API*SQLTablesWPtr)(SQLHSTMT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT,SQLWCHAR*,SQLSMALLINT);
|
||||
} odbcStubDefs;
|
||||
#define SQLAllocHandle (odbcStubs->SQLAllocHandlePtr)
|
||||
#define SQLBindParameter (odbcStubs->SQLBindParameterPtr)
|
||||
#define SQLCloseCursor (odbcStubs->SQLCloseCursorPtr)
|
||||
#define SQLColumnsW (odbcStubs->SQLColumnsWPtr)
|
||||
#define SQLDataSourcesW (odbcStubs->SQLDataSourcesWPtr)
|
||||
#define SQLDescribeColW (odbcStubs->SQLDescribeColWPtr)
|
||||
#define SQLDescribeParam (odbcStubs->SQLDescribeParamPtr)
|
||||
#define SQLDisconnect (odbcStubs->SQLDisconnectPtr)
|
||||
#define SQLDriverConnectW (odbcStubs->SQLDriverConnectWPtr)
|
||||
#define SQLDriversW (odbcStubs->SQLDriversWPtr)
|
||||
#define SQLEndTran (odbcStubs->SQLEndTranPtr)
|
||||
#define SQLExecute (odbcStubs->SQLExecutePtr)
|
||||
#define SQLFetch (odbcStubs->SQLFetchPtr)
|
||||
#define SQLForeignKeysW (odbcStubs->SQLForeignKeysWPtr)
|
||||
#define SQLFreeHandle (odbcStubs->SQLFreeHandlePtr)
|
||||
#define SQLGetConnectAttr (odbcStubs->SQLGetConnectAttrPtr)
|
||||
#define SQLGetData (odbcStubs->SQLGetDataPtr)
|
||||
#define SQLGetDiagFieldA (odbcStubs->SQLGetDiagFieldAPtr)
|
||||
#define SQLGetDiagRecW (odbcStubs->SQLGetDiagRecWPtr)
|
||||
#define SQLGetInfoW (odbcStubs->SQLGetInfoWPtr)
|
||||
#define SQLGetTypeInfo (odbcStubs->SQLGetTypeInfoPtr)
|
||||
#define SQLMoreResults (odbcStubs->SQLMoreResultsPtr)
|
||||
#define SQLNumParams (odbcStubs->SQLNumParamsPtr)
|
||||
#define SQLNumResultCols (odbcStubs->SQLNumResultColsPtr)
|
||||
#define SQLPrepareW (odbcStubs->SQLPrepareWPtr)
|
||||
#define SQLPrimaryKeysW (odbcStubs->SQLPrimaryKeysWPtr)
|
||||
#define SQLRowCount (odbcStubs->SQLRowCountPtr)
|
||||
#define SQLSetConnectAttr (odbcStubs->SQLSetConnectAttrPtr)
|
||||
#define SQLSetConnectOption (odbcStubs->SQLSetConnectOptionPtr)
|
||||
#define SQLSetEnvAttr (odbcStubs->SQLSetEnvAttrPtr)
|
||||
#define SQLTablesW (odbcStubs->SQLTablesWPtr)
|
||||
MODULE_SCOPE const odbcStubDefs *odbcStubs;
|
||||
111
.CondaPkg/env/include/openssl/aes.h
vendored
Normal file
111
.CondaPkg/env/include/openssl/aes.h
vendored
Normal file
@@ -0,0 +1,111 @@
|
||||
/*
|
||||
* Copyright 2002-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
* in the file LICENSE in the source distribution or at
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#ifndef OPENSSL_AES_H
|
||||
# define OPENSSL_AES_H
|
||||
# pragma once
|
||||
|
||||
# include <openssl/macros.h>
|
||||
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
# define HEADER_AES_H
|
||||
# endif
|
||||
|
||||
# include <openssl/opensslconf.h>
|
||||
|
||||
# include <stddef.h>
|
||||
# ifdef __cplusplus
|
||||
extern "C" {
|
||||
# endif
|
||||
|
||||
# define AES_BLOCK_SIZE 16
|
||||
|
||||
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
|
||||
# define AES_ENCRYPT 1
|
||||
# define AES_DECRYPT 0
|
||||
|
||||
# define AES_MAXNR 14
|
||||
|
||||
|
||||
/* This should be a hidden type, but EVP requires that the size be known */
|
||||
struct aes_key_st {
|
||||
# ifdef AES_LONG
|
||||
unsigned long rd_key[4 * (AES_MAXNR + 1)];
|
||||
# else
|
||||
unsigned int rd_key[4 * (AES_MAXNR + 1)];
|
||||
# endif
|
||||
int rounds;
|
||||
};
|
||||
typedef struct aes_key_st AES_KEY;
|
||||
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
OSSL_DEPRECATEDIN_3_0 const char *AES_options(void);
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
int AES_set_encrypt_key(const unsigned char *userKey, const int bits,
|
||||
AES_KEY *key);
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
int AES_set_decrypt_key(const unsigned char *userKey, const int bits,
|
||||
AES_KEY *key);
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
void AES_encrypt(const unsigned char *in, unsigned char *out,
|
||||
const AES_KEY *key);
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
void AES_decrypt(const unsigned char *in, unsigned char *out,
|
||||
const AES_KEY *key);
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
void AES_ecb_encrypt(const unsigned char *in, unsigned char *out,
|
||||
const AES_KEY *key, const int enc);
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
void AES_cbc_encrypt(const unsigned char *in, unsigned char *out,
|
||||
size_t length, const AES_KEY *key,
|
||||
unsigned char *ivec, const int enc);
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
void AES_cfb128_encrypt(const unsigned char *in, unsigned char *out,
|
||||
size_t length, const AES_KEY *key,
|
||||
unsigned char *ivec, int *num, const int enc);
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
void AES_cfb1_encrypt(const unsigned char *in, unsigned char *out,
|
||||
size_t length, const AES_KEY *key,
|
||||
unsigned char *ivec, int *num, const int enc);
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
void AES_cfb8_encrypt(const unsigned char *in, unsigned char *out,
|
||||
size_t length, const AES_KEY *key,
|
||||
unsigned char *ivec, int *num, const int enc);
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
void AES_ofb128_encrypt(const unsigned char *in, unsigned char *out,
|
||||
size_t length, const AES_KEY *key,
|
||||
unsigned char *ivec, int *num);
|
||||
|
||||
/* NB: the IV is _two_ blocks long */
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
void AES_ige_encrypt(const unsigned char *in, unsigned char *out,
|
||||
size_t length, const AES_KEY *key,
|
||||
unsigned char *ivec, const int enc);
|
||||
/* NB: the IV is _four_ blocks long */
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
void AES_bi_ige_encrypt(const unsigned char *in, unsigned char *out,
|
||||
size_t length, const AES_KEY *key, const AES_KEY *key2,
|
||||
const unsigned char *ivec, const int enc);
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
int AES_wrap_key(AES_KEY *key, const unsigned char *iv,
|
||||
unsigned char *out, const unsigned char *in,
|
||||
unsigned int inlen);
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
int AES_unwrap_key(AES_KEY *key, const unsigned char *iv,
|
||||
unsigned char *out, const unsigned char *in,
|
||||
unsigned int inlen);
|
||||
# endif
|
||||
|
||||
|
||||
# ifdef __cplusplus
|
||||
}
|
||||
# endif
|
||||
|
||||
#endif
|
||||
1131
.CondaPkg/env/include/openssl/asn1.h
vendored
Normal file
1131
.CondaPkg/env/include/openssl/asn1.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
10
.CondaPkg/env/include/openssl/asn1_mac.h
vendored
Normal file
10
.CondaPkg/env/include/openssl/asn1_mac.h
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
/*
|
||||
* Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
* in the file LICENSE in the source distribution or at
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#error "This file is obsolete; please update your software."
|
||||
140
.CondaPkg/env/include/openssl/asn1err.h
vendored
Normal file
140
.CondaPkg/env/include/openssl/asn1err.h
vendored
Normal file
@@ -0,0 +1,140 @@
|
||||
/*
|
||||
* Generated by util/mkerr.pl DO NOT EDIT
|
||||
* Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
* in the file LICENSE in the source distribution or at
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#ifndef OPENSSL_ASN1ERR_H
|
||||
# define OPENSSL_ASN1ERR_H
|
||||
# pragma once
|
||||
|
||||
# include <openssl/opensslconf.h>
|
||||
# include <openssl/symhacks.h>
|
||||
# include <openssl/cryptoerr_legacy.h>
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* ASN1 reason codes.
|
||||
*/
|
||||
# define ASN1_R_ADDING_OBJECT 171
|
||||
# define ASN1_R_ASN1_PARSE_ERROR 203
|
||||
# define ASN1_R_ASN1_SIG_PARSE_ERROR 204
|
||||
# define ASN1_R_AUX_ERROR 100
|
||||
# define ASN1_R_BAD_OBJECT_HEADER 102
|
||||
# define ASN1_R_BAD_TEMPLATE 230
|
||||
# define ASN1_R_BMPSTRING_IS_WRONG_LENGTH 214
|
||||
# define ASN1_R_BN_LIB 105
|
||||
# define ASN1_R_BOOLEAN_IS_WRONG_LENGTH 106
|
||||
# define ASN1_R_BUFFER_TOO_SMALL 107
|
||||
# define ASN1_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER 108
|
||||
# define ASN1_R_CONTEXT_NOT_INITIALISED 217
|
||||
# define ASN1_R_DATA_IS_WRONG 109
|
||||
# define ASN1_R_DECODE_ERROR 110
|
||||
# define ASN1_R_DEPTH_EXCEEDED 174
|
||||
# define ASN1_R_DIGEST_AND_KEY_TYPE_NOT_SUPPORTED 198
|
||||
# define ASN1_R_ENCODE_ERROR 112
|
||||
# define ASN1_R_ERROR_GETTING_TIME 173
|
||||
# define ASN1_R_ERROR_LOADING_SECTION 172
|
||||
# define ASN1_R_ERROR_SETTING_CIPHER_PARAMS 114
|
||||
# define ASN1_R_EXPECTING_AN_INTEGER 115
|
||||
# define ASN1_R_EXPECTING_AN_OBJECT 116
|
||||
# define ASN1_R_EXPLICIT_LENGTH_MISMATCH 119
|
||||
# define ASN1_R_EXPLICIT_TAG_NOT_CONSTRUCTED 120
|
||||
# define ASN1_R_FIELD_MISSING 121
|
||||
# define ASN1_R_FIRST_NUM_TOO_LARGE 122
|
||||
# define ASN1_R_HEADER_TOO_LONG 123
|
||||
# define ASN1_R_ILLEGAL_BITSTRING_FORMAT 175
|
||||
# define ASN1_R_ILLEGAL_BOOLEAN 176
|
||||
# define ASN1_R_ILLEGAL_CHARACTERS 124
|
||||
# define ASN1_R_ILLEGAL_FORMAT 177
|
||||
# define ASN1_R_ILLEGAL_HEX 178
|
||||
# define ASN1_R_ILLEGAL_IMPLICIT_TAG 179
|
||||
# define ASN1_R_ILLEGAL_INTEGER 180
|
||||
# define ASN1_R_ILLEGAL_NEGATIVE_VALUE 226
|
||||
# define ASN1_R_ILLEGAL_NESTED_TAGGING 181
|
||||
# define ASN1_R_ILLEGAL_NULL 125
|
||||
# define ASN1_R_ILLEGAL_NULL_VALUE 182
|
||||
# define ASN1_R_ILLEGAL_OBJECT 183
|
||||
# define ASN1_R_ILLEGAL_OPTIONAL_ANY 126
|
||||
# define ASN1_R_ILLEGAL_OPTIONS_ON_ITEM_TEMPLATE 170
|
||||
# define ASN1_R_ILLEGAL_PADDING 221
|
||||
# define ASN1_R_ILLEGAL_TAGGED_ANY 127
|
||||
# define ASN1_R_ILLEGAL_TIME_VALUE 184
|
||||
# define ASN1_R_ILLEGAL_ZERO_CONTENT 222
|
||||
# define ASN1_R_INTEGER_NOT_ASCII_FORMAT 185
|
||||
# define ASN1_R_INTEGER_TOO_LARGE_FOR_LONG 128
|
||||
# define ASN1_R_INVALID_BIT_STRING_BITS_LEFT 220
|
||||
# define ASN1_R_INVALID_BMPSTRING_LENGTH 129
|
||||
# define ASN1_R_INVALID_DIGIT 130
|
||||
# define ASN1_R_INVALID_MIME_TYPE 205
|
||||
# define ASN1_R_INVALID_MODIFIER 186
|
||||
# define ASN1_R_INVALID_NUMBER 187
|
||||
# define ASN1_R_INVALID_OBJECT_ENCODING 216
|
||||
# define ASN1_R_INVALID_SCRYPT_PARAMETERS 227
|
||||
# define ASN1_R_INVALID_SEPARATOR 131
|
||||
# define ASN1_R_INVALID_STRING_TABLE_VALUE 218
|
||||
# define ASN1_R_INVALID_UNIVERSALSTRING_LENGTH 133
|
||||
# define ASN1_R_INVALID_UTF8STRING 134
|
||||
# define ASN1_R_INVALID_VALUE 219
|
||||
# define ASN1_R_LENGTH_TOO_LONG 231
|
||||
# define ASN1_R_LIST_ERROR 188
|
||||
# define ASN1_R_MIME_NO_CONTENT_TYPE 206
|
||||
# define ASN1_R_MIME_PARSE_ERROR 207
|
||||
# define ASN1_R_MIME_SIG_PARSE_ERROR 208
|
||||
# define ASN1_R_MISSING_EOC 137
|
||||
# define ASN1_R_MISSING_SECOND_NUMBER 138
|
||||
# define ASN1_R_MISSING_VALUE 189
|
||||
# define ASN1_R_MSTRING_NOT_UNIVERSAL 139
|
||||
# define ASN1_R_MSTRING_WRONG_TAG 140
|
||||
# define ASN1_R_NESTED_ASN1_STRING 197
|
||||
# define ASN1_R_NESTED_TOO_DEEP 201
|
||||
# define ASN1_R_NON_HEX_CHARACTERS 141
|
||||
# define ASN1_R_NOT_ASCII_FORMAT 190
|
||||
# define ASN1_R_NOT_ENOUGH_DATA 142
|
||||
# define ASN1_R_NO_CONTENT_TYPE 209
|
||||
# define ASN1_R_NO_MATCHING_CHOICE_TYPE 143
|
||||
# define ASN1_R_NO_MULTIPART_BODY_FAILURE 210
|
||||
# define ASN1_R_NO_MULTIPART_BOUNDARY 211
|
||||
# define ASN1_R_NO_SIG_CONTENT_TYPE 212
|
||||
# define ASN1_R_NULL_IS_WRONG_LENGTH 144
|
||||
# define ASN1_R_OBJECT_NOT_ASCII_FORMAT 191
|
||||
# define ASN1_R_ODD_NUMBER_OF_CHARS 145
|
||||
# define ASN1_R_SECOND_NUMBER_TOO_LARGE 147
|
||||
# define ASN1_R_SEQUENCE_LENGTH_MISMATCH 148
|
||||
# define ASN1_R_SEQUENCE_NOT_CONSTRUCTED 149
|
||||
# define ASN1_R_SEQUENCE_OR_SET_NEEDS_CONFIG 192
|
||||
# define ASN1_R_SHORT_LINE 150
|
||||
# define ASN1_R_SIG_INVALID_MIME_TYPE 213
|
||||
# define ASN1_R_STREAMING_NOT_SUPPORTED 202
|
||||
# define ASN1_R_STRING_TOO_LONG 151
|
||||
# define ASN1_R_STRING_TOO_SHORT 152
|
||||
# define ASN1_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 154
|
||||
# define ASN1_R_TIME_NOT_ASCII_FORMAT 193
|
||||
# define ASN1_R_TOO_LARGE 223
|
||||
# define ASN1_R_TOO_LONG 155
|
||||
# define ASN1_R_TOO_SMALL 224
|
||||
# define ASN1_R_TYPE_NOT_CONSTRUCTED 156
|
||||
# define ASN1_R_TYPE_NOT_PRIMITIVE 195
|
||||
# define ASN1_R_UNEXPECTED_EOC 159
|
||||
# define ASN1_R_UNIVERSALSTRING_IS_WRONG_LENGTH 215
|
||||
# define ASN1_R_UNKNOWN_DIGEST 229
|
||||
# define ASN1_R_UNKNOWN_FORMAT 160
|
||||
# define ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM 161
|
||||
# define ASN1_R_UNKNOWN_OBJECT_TYPE 162
|
||||
# define ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE 163
|
||||
# define ASN1_R_UNKNOWN_SIGNATURE_ALGORITHM 199
|
||||
# define ASN1_R_UNKNOWN_TAG 194
|
||||
# define ASN1_R_UNSUPPORTED_ANY_DEFINED_BY_TYPE 164
|
||||
# define ASN1_R_UNSUPPORTED_CIPHER 228
|
||||
# define ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE 167
|
||||
# define ASN1_R_UNSUPPORTED_TYPE 196
|
||||
# define ASN1_R_WRONG_INTEGER_TYPE 225
|
||||
# define ASN1_R_WRONG_PUBLIC_KEY_TYPE 200
|
||||
# define ASN1_R_WRONG_TAG 168
|
||||
|
||||
#endif
|
||||
946
.CondaPkg/env/include/openssl/asn1t.h
vendored
Normal file
946
.CondaPkg/env/include/openssl/asn1t.h
vendored
Normal file
@@ -0,0 +1,946 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from include/openssl/asn1t.h.in
|
||||
*
|
||||
* Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
* in the file LICENSE in the source distribution or at
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#ifndef OPENSSL_ASN1T_H
|
||||
# define OPENSSL_ASN1T_H
|
||||
# pragma once
|
||||
|
||||
# include <openssl/macros.h>
|
||||
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
# define HEADER_ASN1T_H
|
||||
# endif
|
||||
|
||||
# include <stddef.h>
|
||||
# include <openssl/e_os2.h>
|
||||
# include <openssl/asn1.h>
|
||||
|
||||
# ifdef OPENSSL_BUILD_SHLIBCRYPTO
|
||||
# undef OPENSSL_EXTERN
|
||||
# define OPENSSL_EXTERN OPENSSL_EXPORT
|
||||
# endif
|
||||
|
||||
/* ASN1 template defines, structures and functions */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*-
|
||||
* These are the possible values for the itype field of the
|
||||
* ASN1_ITEM structure and determine how it is interpreted.
|
||||
*
|
||||
* For PRIMITIVE types the underlying type
|
||||
* determines the behaviour if items is NULL.
|
||||
*
|
||||
* Otherwise templates must contain a single
|
||||
* template and the type is treated in the
|
||||
* same way as the type specified in the template.
|
||||
*
|
||||
* For SEQUENCE types the templates field points
|
||||
* to the members, the size field is the
|
||||
* structure size.
|
||||
*
|
||||
* For CHOICE types the templates field points
|
||||
* to each possible member (typically a union)
|
||||
* and the 'size' field is the offset of the
|
||||
* selector.
|
||||
*
|
||||
* The 'funcs' field is used for application-specific
|
||||
* data and functions.
|
||||
*
|
||||
* The EXTERN type uses a new style d2i/i2d.
|
||||
* The new style should be used where possible
|
||||
* because it avoids things like the d2i IMPLICIT
|
||||
* hack.
|
||||
*
|
||||
* MSTRING is a multiple string type, it is used
|
||||
* for a CHOICE of character strings where the
|
||||
* actual strings all occupy an ASN1_STRING
|
||||
* structure. In this case the 'utype' field
|
||||
* has a special meaning, it is used as a mask
|
||||
* of acceptable types using the B_ASN1 constants.
|
||||
*
|
||||
* NDEF_SEQUENCE is the same as SEQUENCE except
|
||||
* that it will use indefinite length constructed
|
||||
* encoding if requested.
|
||||
*
|
||||
*/
|
||||
|
||||
# define ASN1_ITYPE_PRIMITIVE 0x0
|
||||
# define ASN1_ITYPE_SEQUENCE 0x1
|
||||
# define ASN1_ITYPE_CHOICE 0x2
|
||||
/* unused value 0x3 */
|
||||
# define ASN1_ITYPE_EXTERN 0x4
|
||||
# define ASN1_ITYPE_MSTRING 0x5
|
||||
# define ASN1_ITYPE_NDEF_SEQUENCE 0x6
|
||||
|
||||
/* Macro to obtain ASN1_ADB pointer from a type (only used internally) */
|
||||
# define ASN1_ADB_ptr(iptr) ((const ASN1_ADB *)((iptr)()))
|
||||
|
||||
/* Macros for start and end of ASN1_ITEM definition */
|
||||
|
||||
# define ASN1_ITEM_start(itname) \
|
||||
const ASN1_ITEM * itname##_it(void) \
|
||||
{ \
|
||||
static const ASN1_ITEM local_it = {
|
||||
|
||||
# define static_ASN1_ITEM_start(itname) \
|
||||
static ASN1_ITEM_start(itname)
|
||||
|
||||
# define ASN1_ITEM_end(itname) \
|
||||
}; \
|
||||
return &local_it; \
|
||||
}
|
||||
|
||||
/* Macros to aid ASN1 template writing */
|
||||
|
||||
# define ASN1_ITEM_TEMPLATE(tname) \
|
||||
static const ASN1_TEMPLATE tname##_item_tt
|
||||
|
||||
# define ASN1_ITEM_TEMPLATE_END(tname) \
|
||||
;\
|
||||
ASN1_ITEM_start(tname) \
|
||||
ASN1_ITYPE_PRIMITIVE,\
|
||||
-1,\
|
||||
&tname##_item_tt,\
|
||||
0,\
|
||||
NULL,\
|
||||
0,\
|
||||
#tname \
|
||||
ASN1_ITEM_end(tname)
|
||||
# define static_ASN1_ITEM_TEMPLATE_END(tname) \
|
||||
;\
|
||||
static_ASN1_ITEM_start(tname) \
|
||||
ASN1_ITYPE_PRIMITIVE,\
|
||||
-1,\
|
||||
&tname##_item_tt,\
|
||||
0,\
|
||||
NULL,\
|
||||
0,\
|
||||
#tname \
|
||||
ASN1_ITEM_end(tname)
|
||||
|
||||
/* This is a ASN1 type which just embeds a template */
|
||||
|
||||
/*-
|
||||
* This pair helps declare a SEQUENCE. We can do:
|
||||
*
|
||||
* ASN1_SEQUENCE(stname) = {
|
||||
* ... SEQUENCE components ...
|
||||
* } ASN1_SEQUENCE_END(stname)
|
||||
*
|
||||
* This will produce an ASN1_ITEM called stname_it
|
||||
* for a structure called stname.
|
||||
*
|
||||
* If you want the same structure but a different
|
||||
* name then use:
|
||||
*
|
||||
* ASN1_SEQUENCE(itname) = {
|
||||
* ... SEQUENCE components ...
|
||||
* } ASN1_SEQUENCE_END_name(stname, itname)
|
||||
*
|
||||
* This will create an item called itname_it using
|
||||
* a structure called stname.
|
||||
*/
|
||||
|
||||
# define ASN1_SEQUENCE(tname) \
|
||||
static const ASN1_TEMPLATE tname##_seq_tt[]
|
||||
|
||||
# define ASN1_SEQUENCE_END(stname) ASN1_SEQUENCE_END_name(stname, stname)
|
||||
|
||||
# define static_ASN1_SEQUENCE_END(stname) static_ASN1_SEQUENCE_END_name(stname, stname)
|
||||
|
||||
# define ASN1_SEQUENCE_END_name(stname, tname) \
|
||||
;\
|
||||
ASN1_ITEM_start(tname) \
|
||||
ASN1_ITYPE_SEQUENCE,\
|
||||
V_ASN1_SEQUENCE,\
|
||||
tname##_seq_tt,\
|
||||
sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
|
||||
NULL,\
|
||||
sizeof(stname),\
|
||||
#tname \
|
||||
ASN1_ITEM_end(tname)
|
||||
|
||||
# define static_ASN1_SEQUENCE_END_name(stname, tname) \
|
||||
;\
|
||||
static_ASN1_ITEM_start(tname) \
|
||||
ASN1_ITYPE_SEQUENCE,\
|
||||
V_ASN1_SEQUENCE,\
|
||||
tname##_seq_tt,\
|
||||
sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
|
||||
NULL,\
|
||||
sizeof(stname),\
|
||||
#stname \
|
||||
ASN1_ITEM_end(tname)
|
||||
|
||||
# define ASN1_NDEF_SEQUENCE(tname) \
|
||||
ASN1_SEQUENCE(tname)
|
||||
|
||||
# define ASN1_NDEF_SEQUENCE_cb(tname, cb) \
|
||||
ASN1_SEQUENCE_cb(tname, cb)
|
||||
|
||||
# define ASN1_SEQUENCE_cb(tname, cb) \
|
||||
static const ASN1_AUX tname##_aux = {NULL, 0, 0, 0, cb, 0, NULL}; \
|
||||
ASN1_SEQUENCE(tname)
|
||||
|
||||
# define ASN1_SEQUENCE_const_cb(tname, const_cb) \
|
||||
static const ASN1_AUX tname##_aux = \
|
||||
{NULL, ASN1_AFLG_CONST_CB, 0, 0, NULL, 0, const_cb}; \
|
||||
ASN1_SEQUENCE(tname)
|
||||
|
||||
# define ASN1_SEQUENCE_cb_const_cb(tname, cb, const_cb) \
|
||||
static const ASN1_AUX tname##_aux = \
|
||||
{NULL, ASN1_AFLG_CONST_CB, 0, 0, cb, 0, const_cb}; \
|
||||
ASN1_SEQUENCE(tname)
|
||||
|
||||
# define ASN1_SEQUENCE_ref(tname, cb) \
|
||||
static const ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_REFCOUNT, offsetof(tname, references), offsetof(tname, lock), cb, 0, NULL}; \
|
||||
ASN1_SEQUENCE(tname)
|
||||
|
||||
# define ASN1_SEQUENCE_enc(tname, enc, cb) \
|
||||
static const ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_ENCODING, 0, 0, cb, offsetof(tname, enc), NULL}; \
|
||||
ASN1_SEQUENCE(tname)
|
||||
|
||||
# define ASN1_NDEF_SEQUENCE_END(tname) \
|
||||
;\
|
||||
ASN1_ITEM_start(tname) \
|
||||
ASN1_ITYPE_NDEF_SEQUENCE,\
|
||||
V_ASN1_SEQUENCE,\
|
||||
tname##_seq_tt,\
|
||||
sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
|
||||
NULL,\
|
||||
sizeof(tname),\
|
||||
#tname \
|
||||
ASN1_ITEM_end(tname)
|
||||
# define static_ASN1_NDEF_SEQUENCE_END(tname) \
|
||||
;\
|
||||
static_ASN1_ITEM_start(tname) \
|
||||
ASN1_ITYPE_NDEF_SEQUENCE,\
|
||||
V_ASN1_SEQUENCE,\
|
||||
tname##_seq_tt,\
|
||||
sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
|
||||
NULL,\
|
||||
sizeof(tname),\
|
||||
#tname \
|
||||
ASN1_ITEM_end(tname)
|
||||
|
||||
|
||||
# define ASN1_SEQUENCE_END_enc(stname, tname) ASN1_SEQUENCE_END_ref(stname, tname)
|
||||
|
||||
# define ASN1_SEQUENCE_END_cb(stname, tname) ASN1_SEQUENCE_END_ref(stname, tname)
|
||||
# define static_ASN1_SEQUENCE_END_cb(stname, tname) static_ASN1_SEQUENCE_END_ref(stname, tname)
|
||||
|
||||
# define ASN1_SEQUENCE_END_ref(stname, tname) \
|
||||
;\
|
||||
ASN1_ITEM_start(tname) \
|
||||
ASN1_ITYPE_SEQUENCE,\
|
||||
V_ASN1_SEQUENCE,\
|
||||
tname##_seq_tt,\
|
||||
sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
|
||||
&tname##_aux,\
|
||||
sizeof(stname),\
|
||||
#tname \
|
||||
ASN1_ITEM_end(tname)
|
||||
# define static_ASN1_SEQUENCE_END_ref(stname, tname) \
|
||||
;\
|
||||
static_ASN1_ITEM_start(tname) \
|
||||
ASN1_ITYPE_SEQUENCE,\
|
||||
V_ASN1_SEQUENCE,\
|
||||
tname##_seq_tt,\
|
||||
sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
|
||||
&tname##_aux,\
|
||||
sizeof(stname),\
|
||||
#stname \
|
||||
ASN1_ITEM_end(tname)
|
||||
|
||||
# define ASN1_NDEF_SEQUENCE_END_cb(stname, tname) \
|
||||
;\
|
||||
ASN1_ITEM_start(tname) \
|
||||
ASN1_ITYPE_NDEF_SEQUENCE,\
|
||||
V_ASN1_SEQUENCE,\
|
||||
tname##_seq_tt,\
|
||||
sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
|
||||
&tname##_aux,\
|
||||
sizeof(stname),\
|
||||
#stname \
|
||||
ASN1_ITEM_end(tname)
|
||||
|
||||
/*-
|
||||
* This pair helps declare a CHOICE type. We can do:
|
||||
*
|
||||
* ASN1_CHOICE(chname) = {
|
||||
* ... CHOICE options ...
|
||||
* ASN1_CHOICE_END(chname)
|
||||
*
|
||||
* This will produce an ASN1_ITEM called chname_it
|
||||
* for a structure called chname. The structure
|
||||
* definition must look like this:
|
||||
* typedef struct {
|
||||
* int type;
|
||||
* union {
|
||||
* ASN1_SOMETHING *opt1;
|
||||
* ASN1_SOMEOTHER *opt2;
|
||||
* } value;
|
||||
* } chname;
|
||||
*
|
||||
* the name of the selector must be 'type'.
|
||||
* to use an alternative selector name use the
|
||||
* ASN1_CHOICE_END_selector() version.
|
||||
*/
|
||||
|
||||
# define ASN1_CHOICE(tname) \
|
||||
static const ASN1_TEMPLATE tname##_ch_tt[]
|
||||
|
||||
# define ASN1_CHOICE_cb(tname, cb) \
|
||||
static const ASN1_AUX tname##_aux = {NULL, 0, 0, 0, cb, 0, NULL}; \
|
||||
ASN1_CHOICE(tname)
|
||||
|
||||
# define ASN1_CHOICE_END(stname) ASN1_CHOICE_END_name(stname, stname)
|
||||
|
||||
# define static_ASN1_CHOICE_END(stname) static_ASN1_CHOICE_END_name(stname, stname)
|
||||
|
||||
# define ASN1_CHOICE_END_name(stname, tname) ASN1_CHOICE_END_selector(stname, tname, type)
|
||||
|
||||
# define static_ASN1_CHOICE_END_name(stname, tname) static_ASN1_CHOICE_END_selector(stname, tname, type)
|
||||
|
||||
# define ASN1_CHOICE_END_selector(stname, tname, selname) \
|
||||
;\
|
||||
ASN1_ITEM_start(tname) \
|
||||
ASN1_ITYPE_CHOICE,\
|
||||
offsetof(stname,selname) ,\
|
||||
tname##_ch_tt,\
|
||||
sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE),\
|
||||
NULL,\
|
||||
sizeof(stname),\
|
||||
#stname \
|
||||
ASN1_ITEM_end(tname)
|
||||
|
||||
# define static_ASN1_CHOICE_END_selector(stname, tname, selname) \
|
||||
;\
|
||||
static_ASN1_ITEM_start(tname) \
|
||||
ASN1_ITYPE_CHOICE,\
|
||||
offsetof(stname,selname) ,\
|
||||
tname##_ch_tt,\
|
||||
sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE),\
|
||||
NULL,\
|
||||
sizeof(stname),\
|
||||
#stname \
|
||||
ASN1_ITEM_end(tname)
|
||||
|
||||
# define ASN1_CHOICE_END_cb(stname, tname, selname) \
|
||||
;\
|
||||
ASN1_ITEM_start(tname) \
|
||||
ASN1_ITYPE_CHOICE,\
|
||||
offsetof(stname,selname) ,\
|
||||
tname##_ch_tt,\
|
||||
sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE),\
|
||||
&tname##_aux,\
|
||||
sizeof(stname),\
|
||||
#stname \
|
||||
ASN1_ITEM_end(tname)
|
||||
|
||||
/* This helps with the template wrapper form of ASN1_ITEM */
|
||||
|
||||
# define ASN1_EX_TEMPLATE_TYPE(flags, tag, name, type) { \
|
||||
(flags), (tag), 0,\
|
||||
#name, ASN1_ITEM_ref(type) }
|
||||
|
||||
/* These help with SEQUENCE or CHOICE components */
|
||||
|
||||
/* used to declare other types */
|
||||
|
||||
# define ASN1_EX_TYPE(flags, tag, stname, field, type) { \
|
||||
(flags), (tag), offsetof(stname, field),\
|
||||
#field, ASN1_ITEM_ref(type) }
|
||||
|
||||
/* implicit and explicit helper macros */
|
||||
|
||||
# define ASN1_IMP_EX(stname, field, type, tag, ex) \
|
||||
ASN1_EX_TYPE(ASN1_TFLG_IMPLICIT | (ex), tag, stname, field, type)
|
||||
|
||||
# define ASN1_EXP_EX(stname, field, type, tag, ex) \
|
||||
ASN1_EX_TYPE(ASN1_TFLG_EXPLICIT | (ex), tag, stname, field, type)
|
||||
|
||||
/* Any defined by macros: the field used is in the table itself */
|
||||
|
||||
# define ASN1_ADB_OBJECT(tblname) { ASN1_TFLG_ADB_OID, -1, 0, #tblname, tblname##_adb }
|
||||
# define ASN1_ADB_INTEGER(tblname) { ASN1_TFLG_ADB_INT, -1, 0, #tblname, tblname##_adb }
|
||||
|
||||
/* Plain simple type */
|
||||
# define ASN1_SIMPLE(stname, field, type) ASN1_EX_TYPE(0,0, stname, field, type)
|
||||
/* Embedded simple type */
|
||||
# define ASN1_EMBED(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_EMBED,0, stname, field, type)
|
||||
|
||||
/* OPTIONAL simple type */
|
||||
# define ASN1_OPT(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_OPTIONAL, 0, stname, field, type)
|
||||
# define ASN1_OPT_EMBED(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_OPTIONAL|ASN1_TFLG_EMBED, 0, stname, field, type)
|
||||
|
||||
/* IMPLICIT tagged simple type */
|
||||
# define ASN1_IMP(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, 0)
|
||||
# define ASN1_IMP_EMBED(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_EMBED)
|
||||
|
||||
/* IMPLICIT tagged OPTIONAL simple type */
|
||||
# define ASN1_IMP_OPT(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL)
|
||||
# define ASN1_IMP_OPT_EMBED(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL|ASN1_TFLG_EMBED)
|
||||
|
||||
/* Same as above but EXPLICIT */
|
||||
|
||||
# define ASN1_EXP(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, 0)
|
||||
# define ASN1_EXP_EMBED(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_EMBED)
|
||||
# define ASN1_EXP_OPT(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL)
|
||||
# define ASN1_EXP_OPT_EMBED(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL|ASN1_TFLG_EMBED)
|
||||
|
||||
/* SEQUENCE OF type */
|
||||
# define ASN1_SEQUENCE_OF(stname, field, type) \
|
||||
ASN1_EX_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, stname, field, type)
|
||||
|
||||
/* OPTIONAL SEQUENCE OF */
|
||||
# define ASN1_SEQUENCE_OF_OPT(stname, field, type) \
|
||||
ASN1_EX_TYPE(ASN1_TFLG_SEQUENCE_OF|ASN1_TFLG_OPTIONAL, 0, stname, field, type)
|
||||
|
||||
/* Same as above but for SET OF */
|
||||
|
||||
# define ASN1_SET_OF(stname, field, type) \
|
||||
ASN1_EX_TYPE(ASN1_TFLG_SET_OF, 0, stname, field, type)
|
||||
|
||||
# define ASN1_SET_OF_OPT(stname, field, type) \
|
||||
ASN1_EX_TYPE(ASN1_TFLG_SET_OF|ASN1_TFLG_OPTIONAL, 0, stname, field, type)
|
||||
|
||||
/* Finally compound types of SEQUENCE, SET, IMPLICIT, EXPLICIT and OPTIONAL */
|
||||
|
||||
# define ASN1_IMP_SET_OF(stname, field, type, tag) \
|
||||
ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF)
|
||||
|
||||
# define ASN1_EXP_SET_OF(stname, field, type, tag) \
|
||||
ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF)
|
||||
|
||||
# define ASN1_IMP_SET_OF_OPT(stname, field, type, tag) \
|
||||
ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF|ASN1_TFLG_OPTIONAL)
|
||||
|
||||
# define ASN1_EXP_SET_OF_OPT(stname, field, type, tag) \
|
||||
ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF|ASN1_TFLG_OPTIONAL)
|
||||
|
||||
# define ASN1_IMP_SEQUENCE_OF(stname, field, type, tag) \
|
||||
ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF)
|
||||
|
||||
# define ASN1_IMP_SEQUENCE_OF_OPT(stname, field, type, tag) \
|
||||
ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF|ASN1_TFLG_OPTIONAL)
|
||||
|
||||
# define ASN1_EXP_SEQUENCE_OF(stname, field, type, tag) \
|
||||
ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF)
|
||||
|
||||
# define ASN1_EXP_SEQUENCE_OF_OPT(stname, field, type, tag) \
|
||||
ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF|ASN1_TFLG_OPTIONAL)
|
||||
|
||||
/* EXPLICIT using indefinite length constructed form */
|
||||
# define ASN1_NDEF_EXP(stname, field, type, tag) \
|
||||
ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_NDEF)
|
||||
|
||||
/* EXPLICIT OPTIONAL using indefinite length constructed form */
|
||||
# define ASN1_NDEF_EXP_OPT(stname, field, type, tag) \
|
||||
ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL|ASN1_TFLG_NDEF)
|
||||
|
||||
/* Macros for the ASN1_ADB structure */
|
||||
|
||||
# define ASN1_ADB(name) \
|
||||
static const ASN1_ADB_TABLE name##_adbtbl[]
|
||||
|
||||
# define ASN1_ADB_END(name, flags, field, adb_cb, def, none) \
|
||||
;\
|
||||
static const ASN1_ITEM *name##_adb(void) \
|
||||
{ \
|
||||
static const ASN1_ADB internal_adb = \
|
||||
{\
|
||||
flags,\
|
||||
offsetof(name, field),\
|
||||
adb_cb,\
|
||||
name##_adbtbl,\
|
||||
sizeof(name##_adbtbl) / sizeof(ASN1_ADB_TABLE),\
|
||||
def,\
|
||||
none\
|
||||
}; \
|
||||
return (const ASN1_ITEM *) &internal_adb; \
|
||||
} \
|
||||
void dummy_function(void)
|
||||
|
||||
# define ADB_ENTRY(val, template) {val, template}
|
||||
|
||||
# define ASN1_ADB_TEMPLATE(name) \
|
||||
static const ASN1_TEMPLATE name##_tt
|
||||
|
||||
/*
|
||||
* This is the ASN1 template structure that defines a wrapper round the
|
||||
* actual type. It determines the actual position of the field in the value
|
||||
* structure, various flags such as OPTIONAL and the field name.
|
||||
*/
|
||||
|
||||
struct ASN1_TEMPLATE_st {
|
||||
unsigned long flags; /* Various flags */
|
||||
long tag; /* tag, not used if no tagging */
|
||||
unsigned long offset; /* Offset of this field in structure */
|
||||
const char *field_name; /* Field name */
|
||||
ASN1_ITEM_EXP *item; /* Relevant ASN1_ITEM or ASN1_ADB */
|
||||
};
|
||||
|
||||
/* Macro to extract ASN1_ITEM and ASN1_ADB pointer from ASN1_TEMPLATE */
|
||||
|
||||
# define ASN1_TEMPLATE_item(t) (t->item_ptr)
|
||||
# define ASN1_TEMPLATE_adb(t) (t->item_ptr)
|
||||
|
||||
typedef struct ASN1_ADB_TABLE_st ASN1_ADB_TABLE;
|
||||
typedef struct ASN1_ADB_st ASN1_ADB;
|
||||
|
||||
struct ASN1_ADB_st {
|
||||
unsigned long flags; /* Various flags */
|
||||
unsigned long offset; /* Offset of selector field */
|
||||
int (*adb_cb)(long *psel); /* Application callback */
|
||||
const ASN1_ADB_TABLE *tbl; /* Table of possible types */
|
||||
long tblcount; /* Number of entries in tbl */
|
||||
const ASN1_TEMPLATE *default_tt; /* Type to use if no match */
|
||||
const ASN1_TEMPLATE *null_tt; /* Type to use if selector is NULL */
|
||||
};
|
||||
|
||||
struct ASN1_ADB_TABLE_st {
|
||||
long value; /* NID for an object or value for an int */
|
||||
const ASN1_TEMPLATE tt; /* item for this value */
|
||||
};
|
||||
|
||||
/* template flags */
|
||||
|
||||
/* Field is optional */
|
||||
# define ASN1_TFLG_OPTIONAL (0x1)
|
||||
|
||||
/* Field is a SET OF */
|
||||
# define ASN1_TFLG_SET_OF (0x1 << 1)
|
||||
|
||||
/* Field is a SEQUENCE OF */
|
||||
# define ASN1_TFLG_SEQUENCE_OF (0x2 << 1)
|
||||
|
||||
/*
|
||||
* Special case: this refers to a SET OF that will be sorted into DER order
|
||||
* when encoded *and* the corresponding STACK will be modified to match the
|
||||
* new order.
|
||||
*/
|
||||
# define ASN1_TFLG_SET_ORDER (0x3 << 1)
|
||||
|
||||
/* Mask for SET OF or SEQUENCE OF */
|
||||
# define ASN1_TFLG_SK_MASK (0x3 << 1)
|
||||
|
||||
/*
|
||||
* These flags mean the tag should be taken from the tag field. If EXPLICIT
|
||||
* then the underlying type is used for the inner tag.
|
||||
*/
|
||||
|
||||
/* IMPLICIT tagging */
|
||||
# define ASN1_TFLG_IMPTAG (0x1 << 3)
|
||||
|
||||
/* EXPLICIT tagging, inner tag from underlying type */
|
||||
# define ASN1_TFLG_EXPTAG (0x2 << 3)
|
||||
|
||||
# define ASN1_TFLG_TAG_MASK (0x3 << 3)
|
||||
|
||||
/* context specific IMPLICIT */
|
||||
# define ASN1_TFLG_IMPLICIT (ASN1_TFLG_IMPTAG|ASN1_TFLG_CONTEXT)
|
||||
|
||||
/* context specific EXPLICIT */
|
||||
# define ASN1_TFLG_EXPLICIT (ASN1_TFLG_EXPTAG|ASN1_TFLG_CONTEXT)
|
||||
|
||||
/*
|
||||
* If tagging is in force these determine the type of tag to use. Otherwise
|
||||
* the tag is determined by the underlying type. These values reflect the
|
||||
* actual octet format.
|
||||
*/
|
||||
|
||||
/* Universal tag */
|
||||
# define ASN1_TFLG_UNIVERSAL (0x0<<6)
|
||||
/* Application tag */
|
||||
# define ASN1_TFLG_APPLICATION (0x1<<6)
|
||||
/* Context specific tag */
|
||||
# define ASN1_TFLG_CONTEXT (0x2<<6)
|
||||
/* Private tag */
|
||||
# define ASN1_TFLG_PRIVATE (0x3<<6)
|
||||
|
||||
# define ASN1_TFLG_TAG_CLASS (0x3<<6)
|
||||
|
||||
/*
|
||||
* These are for ANY DEFINED BY type. In this case the 'item' field points to
|
||||
* an ASN1_ADB structure which contains a table of values to decode the
|
||||
* relevant type
|
||||
*/
|
||||
|
||||
# define ASN1_TFLG_ADB_MASK (0x3<<8)
|
||||
|
||||
# define ASN1_TFLG_ADB_OID (0x1<<8)
|
||||
|
||||
# define ASN1_TFLG_ADB_INT (0x1<<9)
|
||||
|
||||
/*
|
||||
* This flag when present in a SEQUENCE OF, SET OF or EXPLICIT causes
|
||||
* indefinite length constructed encoding to be used if required.
|
||||
*/
|
||||
|
||||
# define ASN1_TFLG_NDEF (0x1<<11)
|
||||
|
||||
/* Field is embedded and not a pointer */
|
||||
# define ASN1_TFLG_EMBED (0x1 << 12)
|
||||
|
||||
/* This is the actual ASN1 item itself */
|
||||
|
||||
struct ASN1_ITEM_st {
|
||||
char itype; /* The item type, primitive, SEQUENCE, CHOICE
|
||||
* or extern */
|
||||
long utype; /* underlying type */
|
||||
const ASN1_TEMPLATE *templates; /* If SEQUENCE or CHOICE this contains
|
||||
* the contents */
|
||||
long tcount; /* Number of templates if SEQUENCE or CHOICE */
|
||||
const void *funcs; /* further data and type-specific functions */
|
||||
/* funcs can be ASN1_PRIMITIVE_FUNCS*, ASN1_EXTERN_FUNCS*, or ASN1_AUX* */
|
||||
long size; /* Structure size (usually) */
|
||||
const char *sname; /* Structure name */
|
||||
};
|
||||
|
||||
/*
|
||||
* Cache for ASN1 tag and length, so we don't keep re-reading it for things
|
||||
* like CHOICE
|
||||
*/
|
||||
|
||||
struct ASN1_TLC_st {
|
||||
char valid; /* Values below are valid */
|
||||
int ret; /* return value */
|
||||
long plen; /* length */
|
||||
int ptag; /* class value */
|
||||
int pclass; /* class value */
|
||||
int hdrlen; /* header length */
|
||||
};
|
||||
|
||||
/* Typedefs for ASN1 function pointers */
|
||||
typedef int ASN1_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len,
|
||||
const ASN1_ITEM *it, int tag, int aclass, char opt,
|
||||
ASN1_TLC *ctx);
|
||||
|
||||
typedef int ASN1_ex_d2i_ex(ASN1_VALUE **pval, const unsigned char **in, long len,
|
||||
const ASN1_ITEM *it, int tag, int aclass, char opt,
|
||||
ASN1_TLC *ctx, OSSL_LIB_CTX *libctx,
|
||||
const char *propq);
|
||||
typedef int ASN1_ex_i2d(const ASN1_VALUE **pval, unsigned char **out,
|
||||
const ASN1_ITEM *it, int tag, int aclass);
|
||||
typedef int ASN1_ex_new_func(ASN1_VALUE **pval, const ASN1_ITEM *it);
|
||||
typedef int ASN1_ex_new_ex_func(ASN1_VALUE **pval, const ASN1_ITEM *it,
|
||||
OSSL_LIB_CTX *libctx, const char *propq);
|
||||
typedef void ASN1_ex_free_func(ASN1_VALUE **pval, const ASN1_ITEM *it);
|
||||
|
||||
typedef int ASN1_ex_print_func(BIO *out, const ASN1_VALUE **pval,
|
||||
int indent, const char *fname,
|
||||
const ASN1_PCTX *pctx);
|
||||
|
||||
typedef int ASN1_primitive_i2c(const ASN1_VALUE **pval, unsigned char *cont,
|
||||
int *putype, const ASN1_ITEM *it);
|
||||
typedef int ASN1_primitive_c2i(ASN1_VALUE **pval, const unsigned char *cont,
|
||||
int len, int utype, char *free_cont,
|
||||
const ASN1_ITEM *it);
|
||||
typedef int ASN1_primitive_print(BIO *out, const ASN1_VALUE **pval,
|
||||
const ASN1_ITEM *it, int indent,
|
||||
const ASN1_PCTX *pctx);
|
||||
|
||||
typedef struct ASN1_EXTERN_FUNCS_st {
|
||||
void *app_data;
|
||||
ASN1_ex_new_func *asn1_ex_new;
|
||||
ASN1_ex_free_func *asn1_ex_free;
|
||||
ASN1_ex_free_func *asn1_ex_clear;
|
||||
ASN1_ex_d2i *asn1_ex_d2i;
|
||||
ASN1_ex_i2d *asn1_ex_i2d;
|
||||
ASN1_ex_print_func *asn1_ex_print;
|
||||
ASN1_ex_new_ex_func *asn1_ex_new_ex;
|
||||
ASN1_ex_d2i_ex *asn1_ex_d2i_ex;
|
||||
} ASN1_EXTERN_FUNCS;
|
||||
|
||||
typedef struct ASN1_PRIMITIVE_FUNCS_st {
|
||||
void *app_data;
|
||||
unsigned long flags;
|
||||
ASN1_ex_new_func *prim_new;
|
||||
ASN1_ex_free_func *prim_free;
|
||||
ASN1_ex_free_func *prim_clear;
|
||||
ASN1_primitive_c2i *prim_c2i;
|
||||
ASN1_primitive_i2c *prim_i2c;
|
||||
ASN1_primitive_print *prim_print;
|
||||
} ASN1_PRIMITIVE_FUNCS;
|
||||
|
||||
/*
|
||||
* This is the ASN1_AUX structure: it handles various miscellaneous
|
||||
* requirements. For example the use of reference counts and an informational
|
||||
* callback. The "informational callback" is called at various points during
|
||||
* the ASN1 encoding and decoding. It can be used to provide minor
|
||||
* customisation of the structures used. This is most useful where the
|
||||
* supplied routines *almost* do the right thing but need some extra help at
|
||||
* a few points. If the callback returns zero then it is assumed a fatal
|
||||
* error has occurred and the main operation should be abandoned. If major
|
||||
* changes in the default behaviour are required then an external type is
|
||||
* more appropriate.
|
||||
* For the operations ASN1_OP_I2D_PRE, ASN1_OP_I2D_POST, ASN1_OP_PRINT_PRE, and
|
||||
* ASN1_OP_PRINT_POST, meanwhile a variant of the callback with const parameter
|
||||
* 'in' is provided to make clear statically that its input is not modified. If
|
||||
* and only if this variant is in use the flag ASN1_AFLG_CONST_CB must be set.
|
||||
*/
|
||||
|
||||
typedef int ASN1_aux_cb(int operation, ASN1_VALUE **in, const ASN1_ITEM *it,
|
||||
void *exarg);
|
||||
typedef int ASN1_aux_const_cb(int operation, const ASN1_VALUE **in,
|
||||
const ASN1_ITEM *it, void *exarg);
|
||||
|
||||
typedef struct ASN1_AUX_st {
|
||||
void *app_data;
|
||||
int flags;
|
||||
int ref_offset; /* Offset of reference value */
|
||||
int ref_lock; /* Offset of lock value */
|
||||
ASN1_aux_cb *asn1_cb;
|
||||
int enc_offset; /* Offset of ASN1_ENCODING structure */
|
||||
ASN1_aux_const_cb *asn1_const_cb; /* for ASN1_OP_I2D_ and ASN1_OP_PRINT_ */
|
||||
} ASN1_AUX;
|
||||
|
||||
/* For print related callbacks exarg points to this structure */
|
||||
typedef struct ASN1_PRINT_ARG_st {
|
||||
BIO *out;
|
||||
int indent;
|
||||
const ASN1_PCTX *pctx;
|
||||
} ASN1_PRINT_ARG;
|
||||
|
||||
/* For streaming related callbacks exarg points to this structure */
|
||||
typedef struct ASN1_STREAM_ARG_st {
|
||||
/* BIO to stream through */
|
||||
BIO *out;
|
||||
/* BIO with filters appended */
|
||||
BIO *ndef_bio;
|
||||
/* Streaming I/O boundary */
|
||||
unsigned char **boundary;
|
||||
} ASN1_STREAM_ARG;
|
||||
|
||||
/* Flags in ASN1_AUX */
|
||||
|
||||
/* Use a reference count */
|
||||
# define ASN1_AFLG_REFCOUNT 1
|
||||
/* Save the encoding of structure (useful for signatures) */
|
||||
# define ASN1_AFLG_ENCODING 2
|
||||
/* The Sequence length is invalid */
|
||||
# define ASN1_AFLG_BROKEN 4
|
||||
/* Use the new asn1_const_cb */
|
||||
# define ASN1_AFLG_CONST_CB 8
|
||||
|
||||
/* operation values for asn1_cb */
|
||||
|
||||
# define ASN1_OP_NEW_PRE 0
|
||||
# define ASN1_OP_NEW_POST 1
|
||||
# define ASN1_OP_FREE_PRE 2
|
||||
# define ASN1_OP_FREE_POST 3
|
||||
# define ASN1_OP_D2I_PRE 4
|
||||
# define ASN1_OP_D2I_POST 5
|
||||
# define ASN1_OP_I2D_PRE 6
|
||||
# define ASN1_OP_I2D_POST 7
|
||||
# define ASN1_OP_PRINT_PRE 8
|
||||
# define ASN1_OP_PRINT_POST 9
|
||||
# define ASN1_OP_STREAM_PRE 10
|
||||
# define ASN1_OP_STREAM_POST 11
|
||||
# define ASN1_OP_DETACHED_PRE 12
|
||||
# define ASN1_OP_DETACHED_POST 13
|
||||
# define ASN1_OP_DUP_PRE 14
|
||||
# define ASN1_OP_DUP_POST 15
|
||||
# define ASN1_OP_GET0_LIBCTX 16
|
||||
# define ASN1_OP_GET0_PROPQ 17
|
||||
|
||||
/* Macro to implement a primitive type */
|
||||
# define IMPLEMENT_ASN1_TYPE(stname) IMPLEMENT_ASN1_TYPE_ex(stname, stname, 0)
|
||||
# define IMPLEMENT_ASN1_TYPE_ex(itname, vname, ex) \
|
||||
ASN1_ITEM_start(itname) \
|
||||
ASN1_ITYPE_PRIMITIVE, V_##vname, NULL, 0, NULL, ex, #itname \
|
||||
ASN1_ITEM_end(itname)
|
||||
|
||||
/* Macro to implement a multi string type */
|
||||
# define IMPLEMENT_ASN1_MSTRING(itname, mask) \
|
||||
ASN1_ITEM_start(itname) \
|
||||
ASN1_ITYPE_MSTRING, mask, NULL, 0, NULL, sizeof(ASN1_STRING), #itname \
|
||||
ASN1_ITEM_end(itname)
|
||||
|
||||
# define IMPLEMENT_EXTERN_ASN1(sname, tag, fptrs) \
|
||||
ASN1_ITEM_start(sname) \
|
||||
ASN1_ITYPE_EXTERN, \
|
||||
tag, \
|
||||
NULL, \
|
||||
0, \
|
||||
&fptrs, \
|
||||
0, \
|
||||
#sname \
|
||||
ASN1_ITEM_end(sname)
|
||||
|
||||
/* Macro to implement standard functions in terms of ASN1_ITEM structures */
|
||||
|
||||
# define IMPLEMENT_ASN1_FUNCTIONS(stname) IMPLEMENT_ASN1_FUNCTIONS_fname(stname, stname, stname)
|
||||
|
||||
# define IMPLEMENT_ASN1_FUNCTIONS_name(stname, itname) IMPLEMENT_ASN1_FUNCTIONS_fname(stname, itname, itname)
|
||||
|
||||
# define IMPLEMENT_ASN1_FUNCTIONS_ENCODE_name(stname, itname) \
|
||||
IMPLEMENT_ASN1_FUNCTIONS_ENCODE_fname(stname, itname, itname)
|
||||
|
||||
# define IMPLEMENT_STATIC_ASN1_ALLOC_FUNCTIONS(stname) \
|
||||
IMPLEMENT_ASN1_ALLOC_FUNCTIONS_pfname(static, stname, stname, stname)
|
||||
|
||||
# define IMPLEMENT_ASN1_ALLOC_FUNCTIONS(stname) \
|
||||
IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, stname, stname)
|
||||
|
||||
# define IMPLEMENT_ASN1_ALLOC_FUNCTIONS_pfname(pre, stname, itname, fname) \
|
||||
pre stname *fname##_new(void) \
|
||||
{ \
|
||||
return (stname *)ASN1_item_new(ASN1_ITEM_rptr(itname)); \
|
||||
} \
|
||||
pre void fname##_free(stname *a) \
|
||||
{ \
|
||||
ASN1_item_free((ASN1_VALUE *)a, ASN1_ITEM_rptr(itname)); \
|
||||
}
|
||||
|
||||
# define IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname) \
|
||||
stname *fname##_new(void) \
|
||||
{ \
|
||||
return (stname *)ASN1_item_new(ASN1_ITEM_rptr(itname)); \
|
||||
} \
|
||||
void fname##_free(stname *a) \
|
||||
{ \
|
||||
ASN1_item_free((ASN1_VALUE *)a, ASN1_ITEM_rptr(itname)); \
|
||||
}
|
||||
|
||||
# define IMPLEMENT_ASN1_FUNCTIONS_fname(stname, itname, fname) \
|
||||
IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname) \
|
||||
IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname)
|
||||
|
||||
# define IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname) \
|
||||
stname *d2i_##fname(stname **a, const unsigned char **in, long len) \
|
||||
{ \
|
||||
return (stname *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, ASN1_ITEM_rptr(itname));\
|
||||
} \
|
||||
int i2d_##fname(const stname *a, unsigned char **out) \
|
||||
{ \
|
||||
return ASN1_item_i2d((const ASN1_VALUE *)a, out, ASN1_ITEM_rptr(itname));\
|
||||
}
|
||||
|
||||
# define IMPLEMENT_ASN1_NDEF_FUNCTION(stname) \
|
||||
int i2d_##stname##_NDEF(const stname *a, unsigned char **out) \
|
||||
{ \
|
||||
return ASN1_item_ndef_i2d((const ASN1_VALUE *)a, out, ASN1_ITEM_rptr(stname));\
|
||||
}
|
||||
|
||||
# define IMPLEMENT_STATIC_ASN1_ENCODE_FUNCTIONS(stname) \
|
||||
static stname *d2i_##stname(stname **a, \
|
||||
const unsigned char **in, long len) \
|
||||
{ \
|
||||
return (stname *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, \
|
||||
ASN1_ITEM_rptr(stname)); \
|
||||
} \
|
||||
static int i2d_##stname(const stname *a, unsigned char **out) \
|
||||
{ \
|
||||
return ASN1_item_i2d((const ASN1_VALUE *)a, out, \
|
||||
ASN1_ITEM_rptr(stname)); \
|
||||
}
|
||||
|
||||
# define IMPLEMENT_ASN1_DUP_FUNCTION(stname) \
|
||||
stname * stname##_dup(const stname *x) \
|
||||
{ \
|
||||
return ASN1_item_dup(ASN1_ITEM_rptr(stname), x); \
|
||||
}
|
||||
|
||||
# define IMPLEMENT_ASN1_PRINT_FUNCTION(stname) \
|
||||
IMPLEMENT_ASN1_PRINT_FUNCTION_fname(stname, stname, stname)
|
||||
|
||||
# define IMPLEMENT_ASN1_PRINT_FUNCTION_fname(stname, itname, fname) \
|
||||
int fname##_print_ctx(BIO *out, const stname *x, int indent, \
|
||||
const ASN1_PCTX *pctx) \
|
||||
{ \
|
||||
return ASN1_item_print(out, (const ASN1_VALUE *)x, indent, \
|
||||
ASN1_ITEM_rptr(itname), pctx); \
|
||||
}
|
||||
|
||||
/* external definitions for primitive types */
|
||||
|
||||
DECLARE_ASN1_ITEM(ASN1_BOOLEAN)
|
||||
DECLARE_ASN1_ITEM(ASN1_TBOOLEAN)
|
||||
DECLARE_ASN1_ITEM(ASN1_FBOOLEAN)
|
||||
DECLARE_ASN1_ITEM(ASN1_SEQUENCE)
|
||||
DECLARE_ASN1_ITEM(CBIGNUM)
|
||||
DECLARE_ASN1_ITEM(BIGNUM)
|
||||
DECLARE_ASN1_ITEM(INT32)
|
||||
DECLARE_ASN1_ITEM(ZINT32)
|
||||
DECLARE_ASN1_ITEM(UINT32)
|
||||
DECLARE_ASN1_ITEM(ZUINT32)
|
||||
DECLARE_ASN1_ITEM(INT64)
|
||||
DECLARE_ASN1_ITEM(ZINT64)
|
||||
DECLARE_ASN1_ITEM(UINT64)
|
||||
DECLARE_ASN1_ITEM(ZUINT64)
|
||||
|
||||
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
/*
|
||||
* LONG and ZLONG are strongly discouraged for use as stored data, as the
|
||||
* underlying C type (long) differs in size depending on the architecture.
|
||||
* They are designed with 32-bit longs in mind.
|
||||
*/
|
||||
DECLARE_ASN1_ITEM(LONG)
|
||||
DECLARE_ASN1_ITEM(ZLONG)
|
||||
# endif
|
||||
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(ASN1_VALUE, ASN1_VALUE, ASN1_VALUE)
|
||||
#define sk_ASN1_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_VALUE_sk_type(sk))
|
||||
#define sk_ASN1_VALUE_value(sk, idx) ((ASN1_VALUE *)OPENSSL_sk_value(ossl_check_const_ASN1_VALUE_sk_type(sk), (idx)))
|
||||
#define sk_ASN1_VALUE_new(cmp) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new(ossl_check_ASN1_VALUE_compfunc_type(cmp)))
|
||||
#define sk_ASN1_VALUE_new_null() ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new_null())
|
||||
#define sk_ASN1_VALUE_new_reserve(cmp, n) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_VALUE_compfunc_type(cmp), (n)))
|
||||
#define sk_ASN1_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_VALUE_sk_type(sk), (n))
|
||||
#define sk_ASN1_VALUE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_VALUE_sk_type(sk))
|
||||
#define sk_ASN1_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_VALUE_sk_type(sk))
|
||||
#define sk_ASN1_VALUE_delete(sk, i) ((ASN1_VALUE *)OPENSSL_sk_delete(ossl_check_ASN1_VALUE_sk_type(sk), (i)))
|
||||
#define sk_ASN1_VALUE_delete_ptr(sk, ptr) ((ASN1_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)))
|
||||
#define sk_ASN1_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr))
|
||||
#define sk_ASN1_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr))
|
||||
#define sk_ASN1_VALUE_pop(sk) ((ASN1_VALUE *)OPENSSL_sk_pop(ossl_check_ASN1_VALUE_sk_type(sk)))
|
||||
#define sk_ASN1_VALUE_shift(sk) ((ASN1_VALUE *)OPENSSL_sk_shift(ossl_check_ASN1_VALUE_sk_type(sk)))
|
||||
#define sk_ASN1_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_VALUE_sk_type(sk),ossl_check_ASN1_VALUE_freefunc_type(freefunc))
|
||||
#define sk_ASN1_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr), (idx))
|
||||
#define sk_ASN1_VALUE_set(sk, idx, ptr) ((ASN1_VALUE *)OPENSSL_sk_set(ossl_check_ASN1_VALUE_sk_type(sk), (idx), ossl_check_ASN1_VALUE_type(ptr)))
|
||||
#define sk_ASN1_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr))
|
||||
#define sk_ASN1_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr))
|
||||
#define sk_ASN1_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr), pnum)
|
||||
#define sk_ASN1_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_VALUE_sk_type(sk))
|
||||
#define sk_ASN1_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_VALUE_sk_type(sk))
|
||||
#define sk_ASN1_VALUE_dup(sk) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_VALUE_sk_type(sk)))
|
||||
#define sk_ASN1_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_copyfunc_type(copyfunc), ossl_check_ASN1_VALUE_freefunc_type(freefunc)))
|
||||
#define sk_ASN1_VALUE_set_cmp_func(sk, cmp) ((sk_ASN1_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_compfunc_type(cmp)))
|
||||
|
||||
|
||||
|
||||
/* Functions used internally by the ASN1 code */
|
||||
|
||||
int ASN1_item_ex_new(ASN1_VALUE **pval, const ASN1_ITEM *it);
|
||||
void ASN1_item_ex_free(ASN1_VALUE **pval, const ASN1_ITEM *it);
|
||||
|
||||
int ASN1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len,
|
||||
const ASN1_ITEM *it, int tag, int aclass, char opt,
|
||||
ASN1_TLC *ctx);
|
||||
|
||||
int ASN1_item_ex_i2d(const ASN1_VALUE **pval, unsigned char **out,
|
||||
const ASN1_ITEM *it, int tag, int aclass);
|
||||
|
||||
/* Legacy compatibility */
|
||||
# define IMPLEMENT_ASN1_FUNCTIONS_const(name) IMPLEMENT_ASN1_FUNCTIONS(name)
|
||||
# define IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(stname, itname, fname) \
|
||||
IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
96
.CondaPkg/env/include/openssl/async.h
vendored
Normal file
96
.CondaPkg/env/include/openssl/async.h
vendored
Normal file
@@ -0,0 +1,96 @@
|
||||
/*
|
||||
* Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
* in the file LICENSE in the source distribution or at
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#ifndef OPENSSL_ASYNC_H
|
||||
# define OPENSSL_ASYNC_H
|
||||
# pragma once
|
||||
|
||||
# include <openssl/macros.h>
|
||||
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
# define HEADER_ASYNC_H
|
||||
# endif
|
||||
|
||||
#if defined(_WIN32)
|
||||
# if defined(BASETYPES) || defined(_WINDEF_H)
|
||||
/* application has to include <windows.h> to use this */
|
||||
#define OSSL_ASYNC_FD HANDLE
|
||||
#define OSSL_BAD_ASYNC_FD INVALID_HANDLE_VALUE
|
||||
# endif
|
||||
#else
|
||||
#define OSSL_ASYNC_FD int
|
||||
#define OSSL_BAD_ASYNC_FD -1
|
||||
#endif
|
||||
# include <openssl/asyncerr.h>
|
||||
|
||||
|
||||
# ifdef __cplusplus
|
||||
extern "C" {
|
||||
# endif
|
||||
|
||||
typedef struct async_job_st ASYNC_JOB;
|
||||
typedef struct async_wait_ctx_st ASYNC_WAIT_CTX;
|
||||
typedef int (*ASYNC_callback_fn)(void *arg);
|
||||
|
||||
#define ASYNC_ERR 0
|
||||
#define ASYNC_NO_JOBS 1
|
||||
#define ASYNC_PAUSE 2
|
||||
#define ASYNC_FINISH 3
|
||||
|
||||
#define ASYNC_STATUS_UNSUPPORTED 0
|
||||
#define ASYNC_STATUS_ERR 1
|
||||
#define ASYNC_STATUS_OK 2
|
||||
#define ASYNC_STATUS_EAGAIN 3
|
||||
|
||||
int ASYNC_init_thread(size_t max_size, size_t init_size);
|
||||
void ASYNC_cleanup_thread(void);
|
||||
|
||||
#ifdef OSSL_ASYNC_FD
|
||||
ASYNC_WAIT_CTX *ASYNC_WAIT_CTX_new(void);
|
||||
void ASYNC_WAIT_CTX_free(ASYNC_WAIT_CTX *ctx);
|
||||
int ASYNC_WAIT_CTX_set_wait_fd(ASYNC_WAIT_CTX *ctx, const void *key,
|
||||
OSSL_ASYNC_FD fd,
|
||||
void *custom_data,
|
||||
void (*cleanup)(ASYNC_WAIT_CTX *, const void *,
|
||||
OSSL_ASYNC_FD, void *));
|
||||
int ASYNC_WAIT_CTX_get_fd(ASYNC_WAIT_CTX *ctx, const void *key,
|
||||
OSSL_ASYNC_FD *fd, void **custom_data);
|
||||
int ASYNC_WAIT_CTX_get_all_fds(ASYNC_WAIT_CTX *ctx, OSSL_ASYNC_FD *fd,
|
||||
size_t *numfds);
|
||||
int ASYNC_WAIT_CTX_get_callback(ASYNC_WAIT_CTX *ctx,
|
||||
ASYNC_callback_fn *callback,
|
||||
void **callback_arg);
|
||||
int ASYNC_WAIT_CTX_set_callback(ASYNC_WAIT_CTX *ctx,
|
||||
ASYNC_callback_fn callback,
|
||||
void *callback_arg);
|
||||
int ASYNC_WAIT_CTX_set_status(ASYNC_WAIT_CTX *ctx, int status);
|
||||
int ASYNC_WAIT_CTX_get_status(ASYNC_WAIT_CTX *ctx);
|
||||
int ASYNC_WAIT_CTX_get_changed_fds(ASYNC_WAIT_CTX *ctx, OSSL_ASYNC_FD *addfd,
|
||||
size_t *numaddfds, OSSL_ASYNC_FD *delfd,
|
||||
size_t *numdelfds);
|
||||
int ASYNC_WAIT_CTX_clear_fd(ASYNC_WAIT_CTX *ctx, const void *key);
|
||||
#endif
|
||||
|
||||
int ASYNC_is_capable(void);
|
||||
|
||||
int ASYNC_start_job(ASYNC_JOB **job, ASYNC_WAIT_CTX *ctx, int *ret,
|
||||
int (*func)(void *), void *args, size_t size);
|
||||
int ASYNC_pause_job(void);
|
||||
|
||||
ASYNC_JOB *ASYNC_get_current_job(void);
|
||||
ASYNC_WAIT_CTX *ASYNC_get_wait_ctx(ASYNC_JOB *job);
|
||||
void ASYNC_block_pause(void);
|
||||
void ASYNC_unblock_pause(void);
|
||||
|
||||
|
||||
# ifdef __cplusplus
|
||||
}
|
||||
# endif
|
||||
#endif
|
||||
29
.CondaPkg/env/include/openssl/asyncerr.h
vendored
Normal file
29
.CondaPkg/env/include/openssl/asyncerr.h
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
* Generated by util/mkerr.pl DO NOT EDIT
|
||||
* Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
* in the file LICENSE in the source distribution or at
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#ifndef OPENSSL_ASYNCERR_H
|
||||
# define OPENSSL_ASYNCERR_H
|
||||
# pragma once
|
||||
|
||||
# include <openssl/opensslconf.h>
|
||||
# include <openssl/symhacks.h>
|
||||
# include <openssl/cryptoerr_legacy.h>
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* ASYNC reason codes.
|
||||
*/
|
||||
# define ASYNC_R_FAILED_TO_SET_POOL 101
|
||||
# define ASYNC_R_FAILED_TO_SWAP_CONTEXT 102
|
||||
# define ASYNC_R_INIT_FAILED 105
|
||||
# define ASYNC_R_INVALID_POOL_SIZE 103
|
||||
|
||||
#endif
|
||||
887
.CondaPkg/env/include/openssl/bio.h
vendored
Normal file
887
.CondaPkg/env/include/openssl/bio.h
vendored
Normal file
@@ -0,0 +1,887 @@
|
||||
/*
|
||||
* WARNING: do not edit!
|
||||
* Generated by Makefile from include/openssl/bio.h.in
|
||||
*
|
||||
* Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
* in the file LICENSE in the source distribution or at
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
|
||||
#ifndef OPENSSL_BIO_H
|
||||
# define OPENSSL_BIO_H
|
||||
# pragma once
|
||||
|
||||
# include <openssl/macros.h>
|
||||
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
# define HEADER_BIO_H
|
||||
# endif
|
||||
|
||||
# include <openssl/e_os2.h>
|
||||
|
||||
# ifndef OPENSSL_NO_STDIO
|
||||
# include <stdio.h>
|
||||
# endif
|
||||
# include <stdarg.h>
|
||||
|
||||
# include <openssl/crypto.h>
|
||||
# include <openssl/bioerr.h>
|
||||
# include <openssl/core.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* There are the classes of BIOs */
|
||||
# define BIO_TYPE_DESCRIPTOR 0x0100 /* socket, fd, connect or accept */
|
||||
# define BIO_TYPE_FILTER 0x0200
|
||||
# define BIO_TYPE_SOURCE_SINK 0x0400
|
||||
|
||||
/* These are the 'types' of BIOs */
|
||||
# define BIO_TYPE_NONE 0
|
||||
# define BIO_TYPE_MEM ( 1|BIO_TYPE_SOURCE_SINK)
|
||||
# define BIO_TYPE_FILE ( 2|BIO_TYPE_SOURCE_SINK)
|
||||
|
||||
# define BIO_TYPE_FD ( 4|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR)
|
||||
# define BIO_TYPE_SOCKET ( 5|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR)
|
||||
# define BIO_TYPE_NULL ( 6|BIO_TYPE_SOURCE_SINK)
|
||||
# define BIO_TYPE_SSL ( 7|BIO_TYPE_FILTER)
|
||||
# define BIO_TYPE_MD ( 8|BIO_TYPE_FILTER)
|
||||
# define BIO_TYPE_BUFFER ( 9|BIO_TYPE_FILTER)
|
||||
# define BIO_TYPE_CIPHER (10|BIO_TYPE_FILTER)
|
||||
# define BIO_TYPE_BASE64 (11|BIO_TYPE_FILTER)
|
||||
# define BIO_TYPE_CONNECT (12|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR)
|
||||
# define BIO_TYPE_ACCEPT (13|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR)
|
||||
|
||||
# define BIO_TYPE_NBIO_TEST (16|BIO_TYPE_FILTER)/* server proxy BIO */
|
||||
# define BIO_TYPE_NULL_FILTER (17|BIO_TYPE_FILTER)
|
||||
# define BIO_TYPE_BIO (19|BIO_TYPE_SOURCE_SINK)/* half a BIO pair */
|
||||
# define BIO_TYPE_LINEBUFFER (20|BIO_TYPE_FILTER)
|
||||
# define BIO_TYPE_DGRAM (21|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR)
|
||||
# define BIO_TYPE_ASN1 (22|BIO_TYPE_FILTER)
|
||||
# define BIO_TYPE_COMP (23|BIO_TYPE_FILTER)
|
||||
# ifndef OPENSSL_NO_SCTP
|
||||
# define BIO_TYPE_DGRAM_SCTP (24|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR)
|
||||
# endif
|
||||
# define BIO_TYPE_CORE_TO_PROV (25|BIO_TYPE_SOURCE_SINK)
|
||||
|
||||
#define BIO_TYPE_START 128
|
||||
|
||||
/*
|
||||
* BIO_FILENAME_READ|BIO_CLOSE to open or close on free.
|
||||
* BIO_set_fp(in,stdin,BIO_NOCLOSE);
|
||||
*/
|
||||
# define BIO_NOCLOSE 0x00
|
||||
# define BIO_CLOSE 0x01
|
||||
|
||||
/*
|
||||
* These are used in the following macros and are passed to BIO_ctrl()
|
||||
*/
|
||||
# define BIO_CTRL_RESET 1/* opt - rewind/zero etc */
|
||||
# define BIO_CTRL_EOF 2/* opt - are we at the eof */
|
||||
# define BIO_CTRL_INFO 3/* opt - extra tit-bits */
|
||||
# define BIO_CTRL_SET 4/* man - set the 'IO' type */
|
||||
# define BIO_CTRL_GET 5/* man - get the 'IO' type */
|
||||
# define BIO_CTRL_PUSH 6/* opt - internal, used to signify change */
|
||||
# define BIO_CTRL_POP 7/* opt - internal, used to signify change */
|
||||
# define BIO_CTRL_GET_CLOSE 8/* man - set the 'close' on free */
|
||||
# define BIO_CTRL_SET_CLOSE 9/* man - set the 'close' on free */
|
||||
# define BIO_CTRL_PENDING 10/* opt - is their more data buffered */
|
||||
# define BIO_CTRL_FLUSH 11/* opt - 'flush' buffered output */
|
||||
# define BIO_CTRL_DUP 12/* man - extra stuff for 'duped' BIO */
|
||||
# define BIO_CTRL_WPENDING 13/* opt - number of bytes still to write */
|
||||
# define BIO_CTRL_SET_CALLBACK 14/* opt - set callback function */
|
||||
# define BIO_CTRL_GET_CALLBACK 15/* opt - set callback function */
|
||||
|
||||
# define BIO_CTRL_PEEK 29/* BIO_f_buffer special */
|
||||
# define BIO_CTRL_SET_FILENAME 30/* BIO_s_file special */
|
||||
|
||||
/* dgram BIO stuff */
|
||||
# define BIO_CTRL_DGRAM_CONNECT 31/* BIO dgram special */
|
||||
# define BIO_CTRL_DGRAM_SET_CONNECTED 32/* allow for an externally connected
|
||||
* socket to be passed in */
|
||||
# define BIO_CTRL_DGRAM_SET_RECV_TIMEOUT 33/* setsockopt, essentially */
|
||||
# define BIO_CTRL_DGRAM_GET_RECV_TIMEOUT 34/* getsockopt, essentially */
|
||||
# define BIO_CTRL_DGRAM_SET_SEND_TIMEOUT 35/* setsockopt, essentially */
|
||||
# define BIO_CTRL_DGRAM_GET_SEND_TIMEOUT 36/* getsockopt, essentially */
|
||||
|
||||
# define BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP 37/* flag whether the last */
|
||||
# define BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP 38/* I/O operation timed out */
|
||||
|
||||
/* #ifdef IP_MTU_DISCOVER */
|
||||
# define BIO_CTRL_DGRAM_MTU_DISCOVER 39/* set DF bit on egress packets */
|
||||
/* #endif */
|
||||
|
||||
# define BIO_CTRL_DGRAM_QUERY_MTU 40/* as kernel for current MTU */
|
||||
# define BIO_CTRL_DGRAM_GET_FALLBACK_MTU 47
|
||||
# define BIO_CTRL_DGRAM_GET_MTU 41/* get cached value for MTU */
|
||||
# define BIO_CTRL_DGRAM_SET_MTU 42/* set cached value for MTU.
|
||||
* want to use this if asking
|
||||
* the kernel fails */
|
||||
|
||||
# define BIO_CTRL_DGRAM_MTU_EXCEEDED 43/* check whether the MTU was
|
||||
* exceed in the previous write
|
||||
* operation */
|
||||
|
||||
# define BIO_CTRL_DGRAM_GET_PEER 46
|
||||
# define BIO_CTRL_DGRAM_SET_PEER 44/* Destination for the data */
|
||||
|
||||
# define BIO_CTRL_DGRAM_SET_NEXT_TIMEOUT 45/* Next DTLS handshake timeout
|
||||
* to adjust socket timeouts */
|
||||
# define BIO_CTRL_DGRAM_SET_DONT_FRAG 48
|
||||
|
||||
# define BIO_CTRL_DGRAM_GET_MTU_OVERHEAD 49
|
||||
|
||||
/* Deliberately outside of OPENSSL_NO_SCTP - used in bss_dgram.c */
|
||||
# define BIO_CTRL_DGRAM_SCTP_SET_IN_HANDSHAKE 50
|
||||
# ifndef OPENSSL_NO_SCTP
|
||||
/* SCTP stuff */
|
||||
# define BIO_CTRL_DGRAM_SCTP_ADD_AUTH_KEY 51
|
||||
# define BIO_CTRL_DGRAM_SCTP_NEXT_AUTH_KEY 52
|
||||
# define BIO_CTRL_DGRAM_SCTP_AUTH_CCS_RCVD 53
|
||||
# define BIO_CTRL_DGRAM_SCTP_GET_SNDINFO 60
|
||||
# define BIO_CTRL_DGRAM_SCTP_SET_SNDINFO 61
|
||||
# define BIO_CTRL_DGRAM_SCTP_GET_RCVINFO 62
|
||||
# define BIO_CTRL_DGRAM_SCTP_SET_RCVINFO 63
|
||||
# define BIO_CTRL_DGRAM_SCTP_GET_PRINFO 64
|
||||
# define BIO_CTRL_DGRAM_SCTP_SET_PRINFO 65
|
||||
# define BIO_CTRL_DGRAM_SCTP_SAVE_SHUTDOWN 70
|
||||
# endif
|
||||
|
||||
# define BIO_CTRL_DGRAM_SET_PEEK_MODE 71
|
||||
|
||||
/*
|
||||
* internal BIO:
|
||||
* # define BIO_CTRL_SET_KTLS_SEND 72
|
||||
* # define BIO_CTRL_SET_KTLS_SEND_CTRL_MSG 74
|
||||
* # define BIO_CTRL_CLEAR_KTLS_CTRL_MSG 75
|
||||
*/
|
||||
|
||||
# define BIO_CTRL_GET_KTLS_SEND 73
|
||||
# define BIO_CTRL_GET_KTLS_RECV 76
|
||||
|
||||
# define BIO_CTRL_DGRAM_SCTP_WAIT_FOR_DRY 77
|
||||
# define BIO_CTRL_DGRAM_SCTP_MSG_WAITING 78
|
||||
|
||||
/* BIO_f_prefix controls */
|
||||
# define BIO_CTRL_SET_PREFIX 79
|
||||
# define BIO_CTRL_SET_INDENT 80
|
||||
# define BIO_CTRL_GET_INDENT 81
|
||||
|
||||
# ifndef OPENSSL_NO_KTLS
|
||||
# define BIO_get_ktls_send(b) \
|
||||
(BIO_ctrl(b, BIO_CTRL_GET_KTLS_SEND, 0, NULL) > 0)
|
||||
# define BIO_get_ktls_recv(b) \
|
||||
(BIO_ctrl(b, BIO_CTRL_GET_KTLS_RECV, 0, NULL) > 0)
|
||||
# else
|
||||
# define BIO_get_ktls_send(b) (0)
|
||||
# define BIO_get_ktls_recv(b) (0)
|
||||
# endif
|
||||
|
||||
/* modifiers */
|
||||
# define BIO_FP_READ 0x02
|
||||
# define BIO_FP_WRITE 0x04
|
||||
# define BIO_FP_APPEND 0x08
|
||||
# define BIO_FP_TEXT 0x10
|
||||
|
||||
# define BIO_FLAGS_READ 0x01
|
||||
# define BIO_FLAGS_WRITE 0x02
|
||||
# define BIO_FLAGS_IO_SPECIAL 0x04
|
||||
# define BIO_FLAGS_RWS (BIO_FLAGS_READ|BIO_FLAGS_WRITE|BIO_FLAGS_IO_SPECIAL)
|
||||
# define BIO_FLAGS_SHOULD_RETRY 0x08
|
||||
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
/* This #define was replaced by an internal constant and should not be used. */
|
||||
# define BIO_FLAGS_UPLINK 0
|
||||
# endif
|
||||
|
||||
# define BIO_FLAGS_BASE64_NO_NL 0x100
|
||||
|
||||
/*
|
||||
* This is used with memory BIOs:
|
||||
* BIO_FLAGS_MEM_RDONLY means we shouldn't free up or change the data in any way;
|
||||
* BIO_FLAGS_NONCLEAR_RST means we shouldn't clear data on reset.
|
||||
*/
|
||||
# define BIO_FLAGS_MEM_RDONLY 0x200
|
||||
# define BIO_FLAGS_NONCLEAR_RST 0x400
|
||||
# define BIO_FLAGS_IN_EOF 0x800
|
||||
|
||||
/* the BIO FLAGS values 0x1000 to 0x4000 are reserved for internal KTLS flags */
|
||||
|
||||
typedef union bio_addr_st BIO_ADDR;
|
||||
typedef struct bio_addrinfo_st BIO_ADDRINFO;
|
||||
|
||||
int BIO_get_new_index(void);
|
||||
void BIO_set_flags(BIO *b, int flags);
|
||||
int BIO_test_flags(const BIO *b, int flags);
|
||||
void BIO_clear_flags(BIO *b, int flags);
|
||||
|
||||
# define BIO_get_flags(b) BIO_test_flags(b, ~(0x0))
|
||||
# define BIO_set_retry_special(b) \
|
||||
BIO_set_flags(b, (BIO_FLAGS_IO_SPECIAL|BIO_FLAGS_SHOULD_RETRY))
|
||||
# define BIO_set_retry_read(b) \
|
||||
BIO_set_flags(b, (BIO_FLAGS_READ|BIO_FLAGS_SHOULD_RETRY))
|
||||
# define BIO_set_retry_write(b) \
|
||||
BIO_set_flags(b, (BIO_FLAGS_WRITE|BIO_FLAGS_SHOULD_RETRY))
|
||||
|
||||
/* These are normally used internally in BIOs */
|
||||
# define BIO_clear_retry_flags(b) \
|
||||
BIO_clear_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY))
|
||||
# define BIO_get_retry_flags(b) \
|
||||
BIO_test_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY))
|
||||
|
||||
/* These should be used by the application to tell why we should retry */
|
||||
# define BIO_should_read(a) BIO_test_flags(a, BIO_FLAGS_READ)
|
||||
# define BIO_should_write(a) BIO_test_flags(a, BIO_FLAGS_WRITE)
|
||||
# define BIO_should_io_special(a) BIO_test_flags(a, BIO_FLAGS_IO_SPECIAL)
|
||||
# define BIO_retry_type(a) BIO_test_flags(a, BIO_FLAGS_RWS)
|
||||
# define BIO_should_retry(a) BIO_test_flags(a, BIO_FLAGS_SHOULD_RETRY)
|
||||
|
||||
/*
|
||||
* The next three are used in conjunction with the BIO_should_io_special()
|
||||
* condition. After this returns true, BIO *BIO_get_retry_BIO(BIO *bio, int
|
||||
* *reason); will walk the BIO stack and return the 'reason' for the special
|
||||
* and the offending BIO. Given a BIO, BIO_get_retry_reason(bio) will return
|
||||
* the code.
|
||||
*/
|
||||
/*
|
||||
* Returned from the SSL bio when the certificate retrieval code had an error
|
||||
*/
|
||||
# define BIO_RR_SSL_X509_LOOKUP 0x01
|
||||
/* Returned from the connect BIO when a connect would have blocked */
|
||||
# define BIO_RR_CONNECT 0x02
|
||||
/* Returned from the accept BIO when an accept would have blocked */
|
||||
# define BIO_RR_ACCEPT 0x03
|
||||
|
||||
/* These are passed by the BIO callback */
|
||||
# define BIO_CB_FREE 0x01
|
||||
# define BIO_CB_READ 0x02
|
||||
# define BIO_CB_WRITE 0x03
|
||||
# define BIO_CB_PUTS 0x04
|
||||
# define BIO_CB_GETS 0x05
|
||||
# define BIO_CB_CTRL 0x06
|
||||
|
||||
/*
|
||||
* The callback is called before and after the underling operation, The
|
||||
* BIO_CB_RETURN flag indicates if it is after the call
|
||||
*/
|
||||
# define BIO_CB_RETURN 0x80
|
||||
# define BIO_CB_return(a) ((a)|BIO_CB_RETURN)
|
||||
# define BIO_cb_pre(a) (!((a)&BIO_CB_RETURN))
|
||||
# define BIO_cb_post(a) ((a)&BIO_CB_RETURN)
|
||||
|
||||
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
typedef long (*BIO_callback_fn)(BIO *b, int oper, const char *argp, int argi,
|
||||
long argl, long ret);
|
||||
OSSL_DEPRECATEDIN_3_0 BIO_callback_fn BIO_get_callback(const BIO *b);
|
||||
OSSL_DEPRECATEDIN_3_0 void BIO_set_callback(BIO *b, BIO_callback_fn callback);
|
||||
OSSL_DEPRECATEDIN_3_0 long BIO_debug_callback(BIO *bio, int cmd,
|
||||
const char *argp, int argi,
|
||||
long argl, long ret);
|
||||
# endif
|
||||
|
||||
typedef long (*BIO_callback_fn_ex)(BIO *b, int oper, const char *argp,
|
||||
size_t len, int argi,
|
||||
long argl, int ret, size_t *processed);
|
||||
BIO_callback_fn_ex BIO_get_callback_ex(const BIO *b);
|
||||
void BIO_set_callback_ex(BIO *b, BIO_callback_fn_ex callback);
|
||||
long BIO_debug_callback_ex(BIO *bio, int oper, const char *argp, size_t len,
|
||||
int argi, long argl, int ret, size_t *processed);
|
||||
|
||||
char *BIO_get_callback_arg(const BIO *b);
|
||||
void BIO_set_callback_arg(BIO *b, char *arg);
|
||||
|
||||
typedef struct bio_method_st BIO_METHOD;
|
||||
|
||||
const char *BIO_method_name(const BIO *b);
|
||||
int BIO_method_type(const BIO *b);
|
||||
|
||||
typedef int BIO_info_cb(BIO *, int, int);
|
||||
typedef BIO_info_cb bio_info_cb; /* backward compatibility */
|
||||
|
||||
SKM_DEFINE_STACK_OF_INTERNAL(BIO, BIO, BIO)
|
||||
#define sk_BIO_num(sk) OPENSSL_sk_num(ossl_check_const_BIO_sk_type(sk))
|
||||
#define sk_BIO_value(sk, idx) ((BIO *)OPENSSL_sk_value(ossl_check_const_BIO_sk_type(sk), (idx)))
|
||||
#define sk_BIO_new(cmp) ((STACK_OF(BIO) *)OPENSSL_sk_new(ossl_check_BIO_compfunc_type(cmp)))
|
||||
#define sk_BIO_new_null() ((STACK_OF(BIO) *)OPENSSL_sk_new_null())
|
||||
#define sk_BIO_new_reserve(cmp, n) ((STACK_OF(BIO) *)OPENSSL_sk_new_reserve(ossl_check_BIO_compfunc_type(cmp), (n)))
|
||||
#define sk_BIO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_BIO_sk_type(sk), (n))
|
||||
#define sk_BIO_free(sk) OPENSSL_sk_free(ossl_check_BIO_sk_type(sk))
|
||||
#define sk_BIO_zero(sk) OPENSSL_sk_zero(ossl_check_BIO_sk_type(sk))
|
||||
#define sk_BIO_delete(sk, i) ((BIO *)OPENSSL_sk_delete(ossl_check_BIO_sk_type(sk), (i)))
|
||||
#define sk_BIO_delete_ptr(sk, ptr) ((BIO *)OPENSSL_sk_delete_ptr(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)))
|
||||
#define sk_BIO_push(sk, ptr) OPENSSL_sk_push(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr))
|
||||
#define sk_BIO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr))
|
||||
#define sk_BIO_pop(sk) ((BIO *)OPENSSL_sk_pop(ossl_check_BIO_sk_type(sk)))
|
||||
#define sk_BIO_shift(sk) ((BIO *)OPENSSL_sk_shift(ossl_check_BIO_sk_type(sk)))
|
||||
#define sk_BIO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_BIO_sk_type(sk),ossl_check_BIO_freefunc_type(freefunc))
|
||||
#define sk_BIO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr), (idx))
|
||||
#define sk_BIO_set(sk, idx, ptr) ((BIO *)OPENSSL_sk_set(ossl_check_BIO_sk_type(sk), (idx), ossl_check_BIO_type(ptr)))
|
||||
#define sk_BIO_find(sk, ptr) OPENSSL_sk_find(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr))
|
||||
#define sk_BIO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr))
|
||||
#define sk_BIO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr), pnum)
|
||||
#define sk_BIO_sort(sk) OPENSSL_sk_sort(ossl_check_BIO_sk_type(sk))
|
||||
#define sk_BIO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_BIO_sk_type(sk))
|
||||
#define sk_BIO_dup(sk) ((STACK_OF(BIO) *)OPENSSL_sk_dup(ossl_check_const_BIO_sk_type(sk)))
|
||||
#define sk_BIO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(BIO) *)OPENSSL_sk_deep_copy(ossl_check_const_BIO_sk_type(sk), ossl_check_BIO_copyfunc_type(copyfunc), ossl_check_BIO_freefunc_type(freefunc)))
|
||||
#define sk_BIO_set_cmp_func(sk, cmp) ((sk_BIO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_BIO_sk_type(sk), ossl_check_BIO_compfunc_type(cmp)))
|
||||
|
||||
|
||||
|
||||
/* Prefix and suffix callback in ASN1 BIO */
|
||||
typedef int asn1_ps_func (BIO *b, unsigned char **pbuf, int *plen,
|
||||
void *parg);
|
||||
|
||||
typedef void (*BIO_dgram_sctp_notification_handler_fn) (BIO *b,
|
||||
void *context,
|
||||
void *buf);
|
||||
# ifndef OPENSSL_NO_SCTP
|
||||
/* SCTP parameter structs */
|
||||
struct bio_dgram_sctp_sndinfo {
|
||||
uint16_t snd_sid;
|
||||
uint16_t snd_flags;
|
||||
uint32_t snd_ppid;
|
||||
uint32_t snd_context;
|
||||
};
|
||||
|
||||
struct bio_dgram_sctp_rcvinfo {
|
||||
uint16_t rcv_sid;
|
||||
uint16_t rcv_ssn;
|
||||
uint16_t rcv_flags;
|
||||
uint32_t rcv_ppid;
|
||||
uint32_t rcv_tsn;
|
||||
uint32_t rcv_cumtsn;
|
||||
uint32_t rcv_context;
|
||||
};
|
||||
|
||||
struct bio_dgram_sctp_prinfo {
|
||||
uint16_t pr_policy;
|
||||
uint32_t pr_value;
|
||||
};
|
||||
# endif
|
||||
|
||||
/*
|
||||
* #define BIO_CONN_get_param_hostname BIO_ctrl
|
||||
*/
|
||||
|
||||
# define BIO_C_SET_CONNECT 100
|
||||
# define BIO_C_DO_STATE_MACHINE 101
|
||||
# define BIO_C_SET_NBIO 102
|
||||
/* # define BIO_C_SET_PROXY_PARAM 103 */
|
||||
# define BIO_C_SET_FD 104
|
||||
# define BIO_C_GET_FD 105
|
||||
# define BIO_C_SET_FILE_PTR 106
|
||||
# define BIO_C_GET_FILE_PTR 107
|
||||
# define BIO_C_SET_FILENAME 108
|
||||
# define BIO_C_SET_SSL 109
|
||||
# define BIO_C_GET_SSL 110
|
||||
# define BIO_C_SET_MD 111
|
||||
# define BIO_C_GET_MD 112
|
||||
# define BIO_C_GET_CIPHER_STATUS 113
|
||||
# define BIO_C_SET_BUF_MEM 114
|
||||
# define BIO_C_GET_BUF_MEM_PTR 115
|
||||
# define BIO_C_GET_BUFF_NUM_LINES 116
|
||||
# define BIO_C_SET_BUFF_SIZE 117
|
||||
# define BIO_C_SET_ACCEPT 118
|
||||
# define BIO_C_SSL_MODE 119
|
||||
# define BIO_C_GET_MD_CTX 120
|
||||
/* # define BIO_C_GET_PROXY_PARAM 121 */
|
||||
# define BIO_C_SET_BUFF_READ_DATA 122/* data to read first */
|
||||
# define BIO_C_GET_CONNECT 123
|
||||
# define BIO_C_GET_ACCEPT 124
|
||||
# define BIO_C_SET_SSL_RENEGOTIATE_BYTES 125
|
||||
# define BIO_C_GET_SSL_NUM_RENEGOTIATES 126
|
||||
# define BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT 127
|
||||
# define BIO_C_FILE_SEEK 128
|
||||
# define BIO_C_GET_CIPHER_CTX 129
|
||||
# define BIO_C_SET_BUF_MEM_EOF_RETURN 130/* return end of input
|
||||
* value */
|
||||
# define BIO_C_SET_BIND_MODE 131
|
||||
# define BIO_C_GET_BIND_MODE 132
|
||||
# define BIO_C_FILE_TELL 133
|
||||
# define BIO_C_GET_SOCKS 134
|
||||
# define BIO_C_SET_SOCKS 135
|
||||
|
||||
# define BIO_C_SET_WRITE_BUF_SIZE 136/* for BIO_s_bio */
|
||||
# define BIO_C_GET_WRITE_BUF_SIZE 137
|
||||
# define BIO_C_MAKE_BIO_PAIR 138
|
||||
# define BIO_C_DESTROY_BIO_PAIR 139
|
||||
# define BIO_C_GET_WRITE_GUARANTEE 140
|
||||
# define BIO_C_GET_READ_REQUEST 141
|
||||
# define BIO_C_SHUTDOWN_WR 142
|
||||
# define BIO_C_NREAD0 143
|
||||
# define BIO_C_NREAD 144
|
||||
# define BIO_C_NWRITE0 145
|
||||
# define BIO_C_NWRITE 146
|
||||
# define BIO_C_RESET_READ_REQUEST 147
|
||||
# define BIO_C_SET_MD_CTX 148
|
||||
|
||||
# define BIO_C_SET_PREFIX 149
|
||||
# define BIO_C_GET_PREFIX 150
|
||||
# define BIO_C_SET_SUFFIX 151
|
||||
# define BIO_C_GET_SUFFIX 152
|
||||
|
||||
# define BIO_C_SET_EX_ARG 153
|
||||
# define BIO_C_GET_EX_ARG 154
|
||||
|
||||
# define BIO_C_SET_CONNECT_MODE 155
|
||||
|
||||
# define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg)
|
||||
# define BIO_get_app_data(s) BIO_get_ex_data(s,0)
|
||||
|
||||
# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL)
|
||||
|
||||
# ifndef OPENSSL_NO_SOCK
|
||||
/* IP families we support, for BIO_s_connect() and BIO_s_accept() */
|
||||
/* Note: the underlying operating system may not support some of them */
|
||||
# define BIO_FAMILY_IPV4 4
|
||||
# define BIO_FAMILY_IPV6 6
|
||||
# define BIO_FAMILY_IPANY 256
|
||||
|
||||
/* BIO_s_connect() */
|
||||
# define BIO_set_conn_hostname(b,name) BIO_ctrl(b,BIO_C_SET_CONNECT,0, \
|
||||
(char *)(name))
|
||||
# define BIO_set_conn_port(b,port) BIO_ctrl(b,BIO_C_SET_CONNECT,1, \
|
||||
(char *)(port))
|
||||
# define BIO_set_conn_address(b,addr) BIO_ctrl(b,BIO_C_SET_CONNECT,2, \
|
||||
(char *)(addr))
|
||||
# define BIO_set_conn_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_CONNECT,3,f)
|
||||
# define BIO_get_conn_hostname(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,0))
|
||||
# define BIO_get_conn_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1))
|
||||
# define BIO_get_conn_address(b) ((const BIO_ADDR *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2))
|
||||
# define BIO_get_conn_ip_family(b) BIO_ctrl(b,BIO_C_GET_CONNECT,3,NULL)
|
||||
# define BIO_set_conn_mode(b,n) BIO_ctrl(b,BIO_C_SET_CONNECT_MODE,(n),NULL)
|
||||
|
||||
/* BIO_s_accept() */
|
||||
# define BIO_set_accept_name(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0, \
|
||||
(char *)(name))
|
||||
# define BIO_set_accept_port(b,port) BIO_ctrl(b,BIO_C_SET_ACCEPT,1, \
|
||||
(char *)(port))
|
||||
# define BIO_get_accept_name(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,0))
|
||||
# define BIO_get_accept_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,1))
|
||||
# define BIO_get_peer_name(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,2))
|
||||
# define BIO_get_peer_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,3))
|
||||
/* #define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) */
|
||||
# define BIO_set_nbio_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,2,(n)?(void *)"a":NULL)
|
||||
# define BIO_set_accept_bios(b,bio) BIO_ctrl(b,BIO_C_SET_ACCEPT,3, \
|
||||
(char *)(bio))
|
||||
# define BIO_set_accept_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_ACCEPT,4,f)
|
||||
# define BIO_get_accept_ip_family(b) BIO_ctrl(b,BIO_C_GET_ACCEPT,4,NULL)
|
||||
|
||||
/* Aliases kept for backward compatibility */
|
||||
# define BIO_BIND_NORMAL 0
|
||||
# define BIO_BIND_REUSEADDR BIO_SOCK_REUSEADDR
|
||||
# define BIO_BIND_REUSEADDR_IF_UNUSED BIO_SOCK_REUSEADDR
|
||||
# define BIO_set_bind_mode(b,mode) BIO_ctrl(b,BIO_C_SET_BIND_MODE,mode,NULL)
|
||||
# define BIO_get_bind_mode(b) BIO_ctrl(b,BIO_C_GET_BIND_MODE,0,NULL)
|
||||
# endif /* OPENSSL_NO_SOCK */
|
||||
|
||||
# define BIO_do_connect(b) BIO_do_handshake(b)
|
||||
# define BIO_do_accept(b) BIO_do_handshake(b)
|
||||
|
||||
# define BIO_do_handshake(b) BIO_ctrl(b,BIO_C_DO_STATE_MACHINE,0,NULL)
|
||||
|
||||
/* BIO_s_datagram(), BIO_s_fd(), BIO_s_socket(), BIO_s_accept() and BIO_s_connect() */
|
||||
# define BIO_set_fd(b,fd,c) BIO_int_ctrl(b,BIO_C_SET_FD,c,fd)
|
||||
# define BIO_get_fd(b,c) BIO_ctrl(b,BIO_C_GET_FD,0,(char *)(c))
|
||||
|
||||
/* BIO_s_file() */
|
||||
# define BIO_set_fp(b,fp,c) BIO_ctrl(b,BIO_C_SET_FILE_PTR,c,(char *)(fp))
|
||||
# define BIO_get_fp(b,fpp) BIO_ctrl(b,BIO_C_GET_FILE_PTR,0,(char *)(fpp))
|
||||
|
||||
/* BIO_s_fd() and BIO_s_file() */
|
||||
# define BIO_seek(b,ofs) (int)BIO_ctrl(b,BIO_C_FILE_SEEK,ofs,NULL)
|
||||
# define BIO_tell(b) (int)BIO_ctrl(b,BIO_C_FILE_TELL,0,NULL)
|
||||
|
||||
/*
|
||||
* name is cast to lose const, but might be better to route through a
|
||||
* function so we can do it safely
|
||||
*/
|
||||
# ifdef CONST_STRICT
|
||||
/*
|
||||
* If you are wondering why this isn't defined, its because CONST_STRICT is
|
||||
* purely a compile-time kludge to allow const to be checked.
|
||||
*/
|
||||
int BIO_read_filename(BIO *b, const char *name);
|
||||
# else
|
||||
# define BIO_read_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \
|
||||
BIO_CLOSE|BIO_FP_READ,(char *)(name))
|
||||
# endif
|
||||
# define BIO_write_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \
|
||||
BIO_CLOSE|BIO_FP_WRITE,name)
|
||||
# define BIO_append_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \
|
||||
BIO_CLOSE|BIO_FP_APPEND,name)
|
||||
# define BIO_rw_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \
|
||||
BIO_CLOSE|BIO_FP_READ|BIO_FP_WRITE,name)
|
||||
|
||||
/*
|
||||
* WARNING WARNING, this ups the reference count on the read bio of the SSL
|
||||
* structure. This is because the ssl read BIO is now pointed to by the
|
||||
* next_bio field in the bio. So when you free the BIO, make sure you are
|
||||
* doing a BIO_free_all() to catch the underlying BIO.
|
||||
*/
|
||||
# define BIO_set_ssl(b,ssl,c) BIO_ctrl(b,BIO_C_SET_SSL,c,(char *)(ssl))
|
||||
# define BIO_get_ssl(b,sslp) BIO_ctrl(b,BIO_C_GET_SSL,0,(char *)(sslp))
|
||||
# define BIO_set_ssl_mode(b,client) BIO_ctrl(b,BIO_C_SSL_MODE,client,NULL)
|
||||
# define BIO_set_ssl_renegotiate_bytes(b,num) \
|
||||
BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_BYTES,num,NULL)
|
||||
# define BIO_get_num_renegotiates(b) \
|
||||
BIO_ctrl(b,BIO_C_GET_SSL_NUM_RENEGOTIATES,0,NULL)
|
||||
# define BIO_set_ssl_renegotiate_timeout(b,seconds) \
|
||||
BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT,seconds,NULL)
|
||||
|
||||
/* defined in evp.h */
|
||||
/* #define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,1,(char *)(md)) */
|
||||
|
||||
# define BIO_get_mem_data(b,pp) BIO_ctrl(b,BIO_CTRL_INFO,0,(char *)(pp))
|
||||
# define BIO_set_mem_buf(b,bm,c) BIO_ctrl(b,BIO_C_SET_BUF_MEM,c,(char *)(bm))
|
||||
# define BIO_get_mem_ptr(b,pp) BIO_ctrl(b,BIO_C_GET_BUF_MEM_PTR,0, \
|
||||
(char *)(pp))
|
||||
# define BIO_set_mem_eof_return(b,v) \
|
||||
BIO_ctrl(b,BIO_C_SET_BUF_MEM_EOF_RETURN,v,NULL)
|
||||
|
||||
/* For the BIO_f_buffer() type */
|
||||
# define BIO_get_buffer_num_lines(b) BIO_ctrl(b,BIO_C_GET_BUFF_NUM_LINES,0,NULL)
|
||||
# define BIO_set_buffer_size(b,size) BIO_ctrl(b,BIO_C_SET_BUFF_SIZE,size,NULL)
|
||||
# define BIO_set_read_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,0)
|
||||
# define BIO_set_write_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,1)
|
||||
# define BIO_set_buffer_read_data(b,buf,num) BIO_ctrl(b,BIO_C_SET_BUFF_READ_DATA,num,buf)
|
||||
|
||||
/* Don't use the next one unless you know what you are doing :-) */
|
||||
# define BIO_dup_state(b,ret) BIO_ctrl(b,BIO_CTRL_DUP,0,(char *)(ret))
|
||||
|
||||
# define BIO_reset(b) (int)BIO_ctrl(b,BIO_CTRL_RESET,0,NULL)
|
||||
# define BIO_eof(b) (int)BIO_ctrl(b,BIO_CTRL_EOF,0,NULL)
|
||||
# define BIO_set_close(b,c) (int)BIO_ctrl(b,BIO_CTRL_SET_CLOSE,(c),NULL)
|
||||
# define BIO_get_close(b) (int)BIO_ctrl(b,BIO_CTRL_GET_CLOSE,0,NULL)
|
||||
# define BIO_pending(b) (int)BIO_ctrl(b,BIO_CTRL_PENDING,0,NULL)
|
||||
# define BIO_wpending(b) (int)BIO_ctrl(b,BIO_CTRL_WPENDING,0,NULL)
|
||||
/* ...pending macros have inappropriate return type */
|
||||
size_t BIO_ctrl_pending(BIO *b);
|
||||
size_t BIO_ctrl_wpending(BIO *b);
|
||||
# define BIO_flush(b) (int)BIO_ctrl(b,BIO_CTRL_FLUSH,0,NULL)
|
||||
# define BIO_get_info_callback(b,cbp) (int)BIO_ctrl(b,BIO_CTRL_GET_CALLBACK,0, \
|
||||
cbp)
|
||||
# define BIO_set_info_callback(b,cb) (int)BIO_callback_ctrl(b,BIO_CTRL_SET_CALLBACK,cb)
|
||||
|
||||
/* For the BIO_f_buffer() type */
|
||||
# define BIO_buffer_get_num_lines(b) BIO_ctrl(b,BIO_CTRL_GET,0,NULL)
|
||||
# define BIO_buffer_peek(b,s,l) BIO_ctrl(b,BIO_CTRL_PEEK,(l),(s))
|
||||
|
||||
/* For BIO_s_bio() */
|
||||
# define BIO_set_write_buf_size(b,size) (int)BIO_ctrl(b,BIO_C_SET_WRITE_BUF_SIZE,size,NULL)
|
||||
# define BIO_get_write_buf_size(b,size) (size_t)BIO_ctrl(b,BIO_C_GET_WRITE_BUF_SIZE,size,NULL)
|
||||
# define BIO_make_bio_pair(b1,b2) (int)BIO_ctrl(b1,BIO_C_MAKE_BIO_PAIR,0,b2)
|
||||
# define BIO_destroy_bio_pair(b) (int)BIO_ctrl(b,BIO_C_DESTROY_BIO_PAIR,0,NULL)
|
||||
# define BIO_shutdown_wr(b) (int)BIO_ctrl(b, BIO_C_SHUTDOWN_WR, 0, NULL)
|
||||
/* macros with inappropriate type -- but ...pending macros use int too: */
|
||||
# define BIO_get_write_guarantee(b) (int)BIO_ctrl(b,BIO_C_GET_WRITE_GUARANTEE,0,NULL)
|
||||
# define BIO_get_read_request(b) (int)BIO_ctrl(b,BIO_C_GET_READ_REQUEST,0,NULL)
|
||||
size_t BIO_ctrl_get_write_guarantee(BIO *b);
|
||||
size_t BIO_ctrl_get_read_request(BIO *b);
|
||||
int BIO_ctrl_reset_read_request(BIO *b);
|
||||
|
||||
/* ctrl macros for dgram */
|
||||
# define BIO_ctrl_dgram_connect(b,peer) \
|
||||
(int)BIO_ctrl(b,BIO_CTRL_DGRAM_CONNECT,0, (char *)(peer))
|
||||
# define BIO_ctrl_set_connected(b,peer) \
|
||||
(int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_CONNECTED, 0, (char *)(peer))
|
||||
# define BIO_dgram_recv_timedout(b) \
|
||||
(int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP, 0, NULL)
|
||||
# define BIO_dgram_send_timedout(b) \
|
||||
(int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP, 0, NULL)
|
||||
# define BIO_dgram_get_peer(b,peer) \
|
||||
(int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)(peer))
|
||||
# define BIO_dgram_set_peer(b,peer) \
|
||||
(int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)(peer))
|
||||
# define BIO_dgram_get_mtu_overhead(b) \
|
||||
(unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL)
|
||||
|
||||
/* ctrl macros for BIO_f_prefix */
|
||||
# define BIO_set_prefix(b,p) BIO_ctrl((b), BIO_CTRL_SET_PREFIX, 0, (void *)(p))
|
||||
# define BIO_set_indent(b,i) BIO_ctrl((b), BIO_CTRL_SET_INDENT, (i), NULL)
|
||||
# define BIO_get_indent(b) BIO_ctrl((b), BIO_CTRL_GET_INDENT, 0, NULL)
|
||||
|
||||
#define BIO_get_ex_new_index(l, p, newf, dupf, freef) \
|
||||
CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_BIO, l, p, newf, dupf, freef)
|
||||
int BIO_set_ex_data(BIO *bio, int idx, void *data);
|
||||
void *BIO_get_ex_data(const BIO *bio, int idx);
|
||||
uint64_t BIO_number_read(BIO *bio);
|
||||
uint64_t BIO_number_written(BIO *bio);
|
||||
|
||||
/* For BIO_f_asn1() */
|
||||
int BIO_asn1_set_prefix(BIO *b, asn1_ps_func *prefix,
|
||||
asn1_ps_func *prefix_free);
|
||||
int BIO_asn1_get_prefix(BIO *b, asn1_ps_func **pprefix,
|
||||
asn1_ps_func **pprefix_free);
|
||||
int BIO_asn1_set_suffix(BIO *b, asn1_ps_func *suffix,
|
||||
asn1_ps_func *suffix_free);
|
||||
int BIO_asn1_get_suffix(BIO *b, asn1_ps_func **psuffix,
|
||||
asn1_ps_func **psuffix_free);
|
||||
|
||||
const BIO_METHOD *BIO_s_file(void);
|
||||
BIO *BIO_new_file(const char *filename, const char *mode);
|
||||
BIO *BIO_new_from_core_bio(OSSL_LIB_CTX *libctx, OSSL_CORE_BIO *corebio);
|
||||
# ifndef OPENSSL_NO_STDIO
|
||||
BIO *BIO_new_fp(FILE *stream, int close_flag);
|
||||
# endif
|
||||
BIO *BIO_new_ex(OSSL_LIB_CTX *libctx, const BIO_METHOD *method);
|
||||
BIO *BIO_new(const BIO_METHOD *type);
|
||||
int BIO_free(BIO *a);
|
||||
void BIO_set_data(BIO *a, void *ptr);
|
||||
void *BIO_get_data(BIO *a);
|
||||
void BIO_set_init(BIO *a, int init);
|
||||
int BIO_get_init(BIO *a);
|
||||
void BIO_set_shutdown(BIO *a, int shut);
|
||||
int BIO_get_shutdown(BIO *a);
|
||||
void BIO_vfree(BIO *a);
|
||||
int BIO_up_ref(BIO *a);
|
||||
int BIO_read(BIO *b, void *data, int dlen);
|
||||
int BIO_read_ex(BIO *b, void *data, size_t dlen, size_t *readbytes);
|
||||
int BIO_gets(BIO *bp, char *buf, int size);
|
||||
int BIO_get_line(BIO *bio, char *buf, int size);
|
||||
int BIO_write(BIO *b, const void *data, int dlen);
|
||||
int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written);
|
||||
int BIO_puts(BIO *bp, const char *buf);
|
||||
int BIO_indent(BIO *b, int indent, int max);
|
||||
long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg);
|
||||
long BIO_callback_ctrl(BIO *b, int cmd, BIO_info_cb *fp);
|
||||
void *BIO_ptr_ctrl(BIO *bp, int cmd, long larg);
|
||||
long BIO_int_ctrl(BIO *bp, int cmd, long larg, int iarg);
|
||||
BIO *BIO_push(BIO *b, BIO *append);
|
||||
BIO *BIO_pop(BIO *b);
|
||||
void BIO_free_all(BIO *a);
|
||||
BIO *BIO_find_type(BIO *b, int bio_type);
|
||||
BIO *BIO_next(BIO *b);
|
||||
void BIO_set_next(BIO *b, BIO *next);
|
||||
BIO *BIO_get_retry_BIO(BIO *bio, int *reason);
|
||||
int BIO_get_retry_reason(BIO *bio);
|
||||
void BIO_set_retry_reason(BIO *bio, int reason);
|
||||
BIO *BIO_dup_chain(BIO *in);
|
||||
|
||||
int BIO_nread0(BIO *bio, char **buf);
|
||||
int BIO_nread(BIO *bio, char **buf, int num);
|
||||
int BIO_nwrite0(BIO *bio, char **buf);
|
||||
int BIO_nwrite(BIO *bio, char **buf, int num);
|
||||
|
||||
const BIO_METHOD *BIO_s_mem(void);
|
||||
const BIO_METHOD *BIO_s_secmem(void);
|
||||
BIO *BIO_new_mem_buf(const void *buf, int len);
|
||||
# ifndef OPENSSL_NO_SOCK
|
||||
const BIO_METHOD *BIO_s_socket(void);
|
||||
const BIO_METHOD *BIO_s_connect(void);
|
||||
const BIO_METHOD *BIO_s_accept(void);
|
||||
# endif
|
||||
const BIO_METHOD *BIO_s_fd(void);
|
||||
const BIO_METHOD *BIO_s_log(void);
|
||||
const BIO_METHOD *BIO_s_bio(void);
|
||||
const BIO_METHOD *BIO_s_null(void);
|
||||
const BIO_METHOD *BIO_f_null(void);
|
||||
const BIO_METHOD *BIO_f_buffer(void);
|
||||
const BIO_METHOD *BIO_f_readbuffer(void);
|
||||
const BIO_METHOD *BIO_f_linebuffer(void);
|
||||
const BIO_METHOD *BIO_f_nbio_test(void);
|
||||
const BIO_METHOD *BIO_f_prefix(void);
|
||||
const BIO_METHOD *BIO_s_core(void);
|
||||
# ifndef OPENSSL_NO_DGRAM
|
||||
const BIO_METHOD *BIO_s_datagram(void);
|
||||
int BIO_dgram_non_fatal_error(int error);
|
||||
BIO *BIO_new_dgram(int fd, int close_flag);
|
||||
# ifndef OPENSSL_NO_SCTP
|
||||
const BIO_METHOD *BIO_s_datagram_sctp(void);
|
||||
BIO *BIO_new_dgram_sctp(int fd, int close_flag);
|
||||
int BIO_dgram_is_sctp(BIO *bio);
|
||||
int BIO_dgram_sctp_notification_cb(BIO *b,
|
||||
BIO_dgram_sctp_notification_handler_fn handle_notifications,
|
||||
void *context);
|
||||
int BIO_dgram_sctp_wait_for_dry(BIO *b);
|
||||
int BIO_dgram_sctp_msg_waiting(BIO *b);
|
||||
# endif
|
||||
# endif
|
||||
|
||||
# ifndef OPENSSL_NO_SOCK
|
||||
int BIO_sock_should_retry(int i);
|
||||
int BIO_sock_non_fatal_error(int error);
|
||||
int BIO_socket_wait(int fd, int for_read, time_t max_time);
|
||||
# endif
|
||||
int BIO_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds);
|
||||
int BIO_do_connect_retry(BIO *bio, int timeout, int nap_milliseconds);
|
||||
|
||||
int BIO_fd_should_retry(int i);
|
||||
int BIO_fd_non_fatal_error(int error);
|
||||
int BIO_dump_cb(int (*cb) (const void *data, size_t len, void *u),
|
||||
void *u, const void *s, int len);
|
||||
int BIO_dump_indent_cb(int (*cb) (const void *data, size_t len, void *u),
|
||||
void *u, const void *s, int len, int indent);
|
||||
int BIO_dump(BIO *b, const void *bytes, int len);
|
||||
int BIO_dump_indent(BIO *b, const void *bytes, int len, int indent);
|
||||
# ifndef OPENSSL_NO_STDIO
|
||||
int BIO_dump_fp(FILE *fp, const void *s, int len);
|
||||
int BIO_dump_indent_fp(FILE *fp, const void *s, int len, int indent);
|
||||
# endif
|
||||
int BIO_hex_string(BIO *out, int indent, int width, const void *data,
|
||||
int datalen);
|
||||
|
||||
# ifndef OPENSSL_NO_SOCK
|
||||
BIO_ADDR *BIO_ADDR_new(void);
|
||||
int BIO_ADDR_rawmake(BIO_ADDR *ap, int family,
|
||||
const void *where, size_t wherelen, unsigned short port);
|
||||
void BIO_ADDR_free(BIO_ADDR *);
|
||||
void BIO_ADDR_clear(BIO_ADDR *ap);
|
||||
int BIO_ADDR_family(const BIO_ADDR *ap);
|
||||
int BIO_ADDR_rawaddress(const BIO_ADDR *ap, void *p, size_t *l);
|
||||
unsigned short BIO_ADDR_rawport(const BIO_ADDR *ap);
|
||||
char *BIO_ADDR_hostname_string(const BIO_ADDR *ap, int numeric);
|
||||
char *BIO_ADDR_service_string(const BIO_ADDR *ap, int numeric);
|
||||
char *BIO_ADDR_path_string(const BIO_ADDR *ap);
|
||||
|
||||
const BIO_ADDRINFO *BIO_ADDRINFO_next(const BIO_ADDRINFO *bai);
|
||||
int BIO_ADDRINFO_family(const BIO_ADDRINFO *bai);
|
||||
int BIO_ADDRINFO_socktype(const BIO_ADDRINFO *bai);
|
||||
int BIO_ADDRINFO_protocol(const BIO_ADDRINFO *bai);
|
||||
const BIO_ADDR *BIO_ADDRINFO_address(const BIO_ADDRINFO *bai);
|
||||
void BIO_ADDRINFO_free(BIO_ADDRINFO *bai);
|
||||
|
||||
enum BIO_hostserv_priorities {
|
||||
BIO_PARSE_PRIO_HOST, BIO_PARSE_PRIO_SERV
|
||||
};
|
||||
int BIO_parse_hostserv(const char *hostserv, char **host, char **service,
|
||||
enum BIO_hostserv_priorities hostserv_prio);
|
||||
enum BIO_lookup_type {
|
||||
BIO_LOOKUP_CLIENT, BIO_LOOKUP_SERVER
|
||||
};
|
||||
int BIO_lookup(const char *host, const char *service,
|
||||
enum BIO_lookup_type lookup_type,
|
||||
int family, int socktype, BIO_ADDRINFO **res);
|
||||
int BIO_lookup_ex(const char *host, const char *service,
|
||||
int lookup_type, int family, int socktype, int protocol,
|
||||
BIO_ADDRINFO **res);
|
||||
int BIO_sock_error(int sock);
|
||||
int BIO_socket_ioctl(int fd, long type, void *arg);
|
||||
int BIO_socket_nbio(int fd, int mode);
|
||||
int BIO_sock_init(void);
|
||||
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||
# define BIO_sock_cleanup() while(0) continue
|
||||
# endif
|
||||
int BIO_set_tcp_ndelay(int sock, int turn_on);
|
||||
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||
OSSL_DEPRECATEDIN_1_1_0 struct hostent *BIO_gethostbyname(const char *name);
|
||||
OSSL_DEPRECATEDIN_1_1_0 int BIO_get_port(const char *str, unsigned short *port_ptr);
|
||||
OSSL_DEPRECATEDIN_1_1_0 int BIO_get_host_ip(const char *str, unsigned char *ip);
|
||||
OSSL_DEPRECATEDIN_1_1_0 int BIO_get_accept_socket(char *host_port, int mode);
|
||||
OSSL_DEPRECATEDIN_1_1_0 int BIO_accept(int sock, char **ip_port);
|
||||
# endif
|
||||
|
||||
union BIO_sock_info_u {
|
||||
BIO_ADDR *addr;
|
||||
};
|
||||
enum BIO_sock_info_type {
|
||||
BIO_SOCK_INFO_ADDRESS
|
||||
};
|
||||
int BIO_sock_info(int sock,
|
||||
enum BIO_sock_info_type type, union BIO_sock_info_u *info);
|
||||
|
||||
# define BIO_SOCK_REUSEADDR 0x01
|
||||
# define BIO_SOCK_V6_ONLY 0x02
|
||||
# define BIO_SOCK_KEEPALIVE 0x04
|
||||
# define BIO_SOCK_NONBLOCK 0x08
|
||||
# define BIO_SOCK_NODELAY 0x10
|
||||
|
||||
int BIO_socket(int domain, int socktype, int protocol, int options);
|
||||
int BIO_connect(int sock, const BIO_ADDR *addr, int options);
|
||||
int BIO_bind(int sock, const BIO_ADDR *addr, int options);
|
||||
int BIO_listen(int sock, const BIO_ADDR *addr, int options);
|
||||
int BIO_accept_ex(int accept_sock, BIO_ADDR *addr, int options);
|
||||
int BIO_closesocket(int sock);
|
||||
|
||||
BIO *BIO_new_socket(int sock, int close_flag);
|
||||
BIO *BIO_new_connect(const char *host_port);
|
||||
BIO *BIO_new_accept(const char *host_port);
|
||||
# endif /* OPENSSL_NO_SOCK*/
|
||||
|
||||
BIO *BIO_new_fd(int fd, int close_flag);
|
||||
|
||||
int BIO_new_bio_pair(BIO **bio1, size_t writebuf1,
|
||||
BIO **bio2, size_t writebuf2);
|
||||
/*
|
||||
* If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints.
|
||||
* Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default
|
||||
* value.
|
||||
*/
|
||||
|
||||
void BIO_copy_next_retry(BIO *b);
|
||||
|
||||
/*
|
||||
* long BIO_ghbn_ctrl(int cmd,int iarg,char *parg);
|
||||
*/
|
||||
|
||||
# define ossl_bio__attr__(x)
|
||||
# if defined(__GNUC__) && defined(__STDC_VERSION__) \
|
||||
&& !defined(__MINGW32__) && !defined(__MINGW64__) \
|
||||
&& !defined(__APPLE__)
|
||||
/*
|
||||
* Because we support the 'z' modifier, which made its appearance in C99,
|
||||
* we can't use __attribute__ with pre C99 dialects.
|
||||
*/
|
||||
# if __STDC_VERSION__ >= 199901L
|
||||
# undef ossl_bio__attr__
|
||||
# define ossl_bio__attr__ __attribute__
|
||||
# if __GNUC__*10 + __GNUC_MINOR__ >= 44
|
||||
# define ossl_bio__printf__ __gnu_printf__
|
||||
# else
|
||||
# define ossl_bio__printf__ __printf__
|
||||
# endif
|
||||
# endif
|
||||
# endif
|
||||
int BIO_printf(BIO *bio, const char *format, ...)
|
||||
ossl_bio__attr__((__format__(ossl_bio__printf__, 2, 3)));
|
||||
int BIO_vprintf(BIO *bio, const char *format, va_list args)
|
||||
ossl_bio__attr__((__format__(ossl_bio__printf__, 2, 0)));
|
||||
int BIO_snprintf(char *buf, size_t n, const char *format, ...)
|
||||
ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 4)));
|
||||
int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args)
|
||||
ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 0)));
|
||||
# undef ossl_bio__attr__
|
||||
# undef ossl_bio__printf__
|
||||
|
||||
|
||||
BIO_METHOD *BIO_meth_new(int type, const char *name);
|
||||
void BIO_meth_free(BIO_METHOD *biom);
|
||||
int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, int);
|
||||
int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, size_t,
|
||||
size_t *);
|
||||
int BIO_meth_set_write(BIO_METHOD *biom,
|
||||
int (*write) (BIO *, const char *, int));
|
||||
int BIO_meth_set_write_ex(BIO_METHOD *biom,
|
||||
int (*bwrite) (BIO *, const char *, size_t, size_t *));
|
||||
int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int);
|
||||
int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, size_t, size_t *);
|
||||
int BIO_meth_set_read(BIO_METHOD *biom,
|
||||
int (*read) (BIO *, char *, int));
|
||||
int BIO_meth_set_read_ex(BIO_METHOD *biom,
|
||||
int (*bread) (BIO *, char *, size_t, size_t *));
|
||||
int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *);
|
||||
int BIO_meth_set_puts(BIO_METHOD *biom,
|
||||
int (*puts) (BIO *, const char *));
|
||||
int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int);
|
||||
int BIO_meth_set_gets(BIO_METHOD *biom,
|
||||
int (*gets) (BIO *, char *, int));
|
||||
long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, long, void *);
|
||||
int BIO_meth_set_ctrl(BIO_METHOD *biom,
|
||||
long (*ctrl) (BIO *, int, long, void *));
|
||||
int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *);
|
||||
int BIO_meth_set_create(BIO_METHOD *biom, int (*create) (BIO *));
|
||||
int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *);
|
||||
int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy) (BIO *));
|
||||
long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom))
|
||||
(BIO *, int, BIO_info_cb *);
|
||||
int BIO_meth_set_callback_ctrl(BIO_METHOD *biom,
|
||||
long (*callback_ctrl) (BIO *, int,
|
||||
BIO_info_cb *));
|
||||
|
||||
# ifdef __cplusplus
|
||||
}
|
||||
# endif
|
||||
#endif
|
||||
65
.CondaPkg/env/include/openssl/bioerr.h
vendored
Normal file
65
.CondaPkg/env/include/openssl/bioerr.h
vendored
Normal file
@@ -0,0 +1,65 @@
|
||||
/*
|
||||
* Generated by util/mkerr.pl DO NOT EDIT
|
||||
* Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
* in the file LICENSE in the source distribution or at
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#ifndef OPENSSL_BIOERR_H
|
||||
# define OPENSSL_BIOERR_H
|
||||
# pragma once
|
||||
|
||||
# include <openssl/opensslconf.h>
|
||||
# include <openssl/symhacks.h>
|
||||
# include <openssl/cryptoerr_legacy.h>
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* BIO reason codes.
|
||||
*/
|
||||
# define BIO_R_ACCEPT_ERROR 100
|
||||
# define BIO_R_ADDRINFO_ADDR_IS_NOT_AF_INET 141
|
||||
# define BIO_R_AMBIGUOUS_HOST_OR_SERVICE 129
|
||||
# define BIO_R_BAD_FOPEN_MODE 101
|
||||
# define BIO_R_BROKEN_PIPE 124
|
||||
# define BIO_R_CONNECT_ERROR 103
|
||||
# define BIO_R_CONNECT_TIMEOUT 147
|
||||
# define BIO_R_GETHOSTBYNAME_ADDR_IS_NOT_AF_INET 107
|
||||
# define BIO_R_GETSOCKNAME_ERROR 132
|
||||
# define BIO_R_GETSOCKNAME_TRUNCATED_ADDRESS 133
|
||||
# define BIO_R_GETTING_SOCKTYPE 134
|
||||
# define BIO_R_INVALID_ARGUMENT 125
|
||||
# define BIO_R_INVALID_SOCKET 135
|
||||
# define BIO_R_IN_USE 123
|
||||
# define BIO_R_LENGTH_TOO_LONG 102
|
||||
# define BIO_R_LISTEN_V6_ONLY 136
|
||||
# define BIO_R_LOOKUP_RETURNED_NOTHING 142
|
||||
# define BIO_R_MALFORMED_HOST_OR_SERVICE 130
|
||||
# define BIO_R_NBIO_CONNECT_ERROR 110
|
||||
# define BIO_R_NO_ACCEPT_ADDR_OR_SERVICE_SPECIFIED 143
|
||||
# define BIO_R_NO_HOSTNAME_OR_SERVICE_SPECIFIED 144
|
||||
# define BIO_R_NO_PORT_DEFINED 113
|
||||
# define BIO_R_NO_SUCH_FILE 128
|
||||
# define BIO_R_NULL_PARAMETER 115 /* unused */
|
||||
# define BIO_R_TRANSFER_ERROR 104
|
||||
# define BIO_R_TRANSFER_TIMEOUT 105
|
||||
# define BIO_R_UNABLE_TO_BIND_SOCKET 117
|
||||
# define BIO_R_UNABLE_TO_CREATE_SOCKET 118
|
||||
# define BIO_R_UNABLE_TO_KEEPALIVE 137
|
||||
# define BIO_R_UNABLE_TO_LISTEN_SOCKET 119
|
||||
# define BIO_R_UNABLE_TO_NODELAY 138
|
||||
# define BIO_R_UNABLE_TO_REUSEADDR 139
|
||||
# define BIO_R_UNAVAILABLE_IP_FAMILY 145
|
||||
# define BIO_R_UNINITIALIZED 120
|
||||
# define BIO_R_UNKNOWN_INFO_TYPE 140
|
||||
# define BIO_R_UNSUPPORTED_IP_FAMILY 146
|
||||
# define BIO_R_UNSUPPORTED_METHOD 121
|
||||
# define BIO_R_UNSUPPORTED_PROTOCOL_FAMILY 131
|
||||
# define BIO_R_WRITE_TO_READ_ONLY_BIO 126
|
||||
# define BIO_R_WSASTARTUP 122
|
||||
|
||||
#endif
|
||||
78
.CondaPkg/env/include/openssl/blowfish.h
vendored
Normal file
78
.CondaPkg/env/include/openssl/blowfish.h
vendored
Normal file
@@ -0,0 +1,78 @@
|
||||
/*
|
||||
* Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
* in the file LICENSE in the source distribution or at
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#ifndef OPENSSL_BLOWFISH_H
|
||||
# define OPENSSL_BLOWFISH_H
|
||||
# pragma once
|
||||
|
||||
# include <openssl/macros.h>
|
||||
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
# define HEADER_BLOWFISH_H
|
||||
# endif
|
||||
|
||||
# include <openssl/opensslconf.h>
|
||||
|
||||
# ifndef OPENSSL_NO_BF
|
||||
# include <openssl/e_os2.h>
|
||||
# ifdef __cplusplus
|
||||
extern "C" {
|
||||
# endif
|
||||
|
||||
# define BF_BLOCK 8
|
||||
|
||||
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
|
||||
# define BF_ENCRYPT 1
|
||||
# define BF_DECRYPT 0
|
||||
|
||||
/*-
|
||||
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
* ! BF_LONG has to be at least 32 bits wide. !
|
||||
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
*/
|
||||
# define BF_LONG unsigned int
|
||||
|
||||
# define BF_ROUNDS 16
|
||||
|
||||
typedef struct bf_key_st {
|
||||
BF_LONG P[BF_ROUNDS + 2];
|
||||
BF_LONG S[4 * 256];
|
||||
} BF_KEY;
|
||||
|
||||
# endif /* OPENSSL_NO_DEPRECATED_3_0 */
|
||||
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
OSSL_DEPRECATEDIN_3_0 void BF_set_key(BF_KEY *key, int len,
|
||||
const unsigned char *data);
|
||||
OSSL_DEPRECATEDIN_3_0 void BF_encrypt(BF_LONG *data, const BF_KEY *key);
|
||||
OSSL_DEPRECATEDIN_3_0 void BF_decrypt(BF_LONG *data, const BF_KEY *key);
|
||||
OSSL_DEPRECATEDIN_3_0 void BF_ecb_encrypt(const unsigned char *in,
|
||||
unsigned char *out, const BF_KEY *key,
|
||||
int enc);
|
||||
OSSL_DEPRECATEDIN_3_0 void BF_cbc_encrypt(const unsigned char *in,
|
||||
unsigned char *out, long length,
|
||||
const BF_KEY *schedule,
|
||||
unsigned char *ivec, int enc);
|
||||
OSSL_DEPRECATEDIN_3_0 void BF_cfb64_encrypt(const unsigned char *in,
|
||||
unsigned char *out,
|
||||
long length, const BF_KEY *schedule,
|
||||
unsigned char *ivec, int *num,
|
||||
int enc);
|
||||
OSSL_DEPRECATEDIN_3_0 void BF_ofb64_encrypt(const unsigned char *in,
|
||||
unsigned char *out,
|
||||
long length, const BF_KEY *schedule,
|
||||
unsigned char *ivec, int *num);
|
||||
OSSL_DEPRECATEDIN_3_0 const char *BF_options(void);
|
||||
# endif
|
||||
|
||||
# ifdef __cplusplus
|
||||
}
|
||||
# endif
|
||||
# endif
|
||||
|
||||
#endif
|
||||
584
.CondaPkg/env/include/openssl/bn.h
vendored
Normal file
584
.CondaPkg/env/include/openssl/bn.h
vendored
Normal file
@@ -0,0 +1,584 @@
|
||||
/*
|
||||
* Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
* in the file LICENSE in the source distribution or at
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#ifndef OPENSSL_BN_H
|
||||
# define OPENSSL_BN_H
|
||||
# pragma once
|
||||
|
||||
# include <openssl/macros.h>
|
||||
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
# define HEADER_BN_H
|
||||
# endif
|
||||
|
||||
# include <openssl/e_os2.h>
|
||||
# ifndef OPENSSL_NO_STDIO
|
||||
# include <stdio.h>
|
||||
# endif
|
||||
# include <openssl/opensslconf.h>
|
||||
# include <openssl/types.h>
|
||||
# include <openssl/crypto.h>
|
||||
# include <openssl/bnerr.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* 64-bit processor with LP64 ABI
|
||||
*/
|
||||
# ifdef SIXTY_FOUR_BIT_LONG
|
||||
# define BN_ULONG unsigned long
|
||||
# define BN_BYTES 8
|
||||
# endif
|
||||
|
||||
/*
|
||||
* 64-bit processor other than LP64 ABI
|
||||
*/
|
||||
# ifdef SIXTY_FOUR_BIT
|
||||
# define BN_ULONG unsigned long long
|
||||
# define BN_BYTES 8
|
||||
# endif
|
||||
|
||||
# ifdef THIRTY_TWO_BIT
|
||||
# define BN_ULONG unsigned int
|
||||
# define BN_BYTES 4
|
||||
# endif
|
||||
|
||||
# define BN_BITS2 (BN_BYTES * 8)
|
||||
# define BN_BITS (BN_BITS2 * 2)
|
||||
# define BN_TBIT ((BN_ULONG)1 << (BN_BITS2 - 1))
|
||||
|
||||
# define BN_FLG_MALLOCED 0x01
|
||||
# define BN_FLG_STATIC_DATA 0x02
|
||||
|
||||
/*
|
||||
* avoid leaking exponent information through timing,
|
||||
* BN_mod_exp_mont() will call BN_mod_exp_mont_consttime,
|
||||
* BN_div() will call BN_div_no_branch,
|
||||
* BN_mod_inverse() will call bn_mod_inverse_no_branch.
|
||||
*/
|
||||
# define BN_FLG_CONSTTIME 0x04
|
||||
# define BN_FLG_SECURE 0x08
|
||||
|
||||
# ifndef OPENSSL_NO_DEPRECATED_0_9_8
|
||||
/* deprecated name for the flag */
|
||||
# define BN_FLG_EXP_CONSTTIME BN_FLG_CONSTTIME
|
||||
# define BN_FLG_FREE 0x8000 /* used for debugging */
|
||||
# endif
|
||||
|
||||
void BN_set_flags(BIGNUM *b, int n);
|
||||
int BN_get_flags(const BIGNUM *b, int n);
|
||||
|
||||
/* Values for |top| in BN_rand() */
|
||||
#define BN_RAND_TOP_ANY -1
|
||||
#define BN_RAND_TOP_ONE 0
|
||||
#define BN_RAND_TOP_TWO 1
|
||||
|
||||
/* Values for |bottom| in BN_rand() */
|
||||
#define BN_RAND_BOTTOM_ANY 0
|
||||
#define BN_RAND_BOTTOM_ODD 1
|
||||
|
||||
/*
|
||||
* get a clone of a BIGNUM with changed flags, for *temporary* use only (the
|
||||
* two BIGNUMs cannot be used in parallel!). Also only for *read only* use. The
|
||||
* value |dest| should be a newly allocated BIGNUM obtained via BN_new() that
|
||||
* has not been otherwise initialised or used.
|
||||
*/
|
||||
void BN_with_flags(BIGNUM *dest, const BIGNUM *b, int flags);
|
||||
|
||||
/* Wrapper function to make using BN_GENCB easier */
|
||||
int BN_GENCB_call(BN_GENCB *cb, int a, int b);
|
||||
|
||||
BN_GENCB *BN_GENCB_new(void);
|
||||
void BN_GENCB_free(BN_GENCB *cb);
|
||||
|
||||
/* Populate a BN_GENCB structure with an "old"-style callback */
|
||||
void BN_GENCB_set_old(BN_GENCB *gencb, void (*callback) (int, int, void *),
|
||||
void *cb_arg);
|
||||
|
||||
/* Populate a BN_GENCB structure with a "new"-style callback */
|
||||
void BN_GENCB_set(BN_GENCB *gencb, int (*callback) (int, int, BN_GENCB *),
|
||||
void *cb_arg);
|
||||
|
||||
void *BN_GENCB_get_arg(BN_GENCB *cb);
|
||||
|
||||
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
# define BN_prime_checks 0 /* default: select number of iterations based
|
||||
* on the size of the number */
|
||||
|
||||
/*
|
||||
* BN_prime_checks_for_size() returns the number of Miller-Rabin iterations
|
||||
* that will be done for checking that a random number is probably prime. The
|
||||
* error rate for accepting a composite number as prime depends on the size of
|
||||
* the prime |b|. The error rates used are for calculating an RSA key with 2 primes,
|
||||
* and so the level is what you would expect for a key of double the size of the
|
||||
* prime.
|
||||
*
|
||||
* This table is generated using the algorithm of FIPS PUB 186-4
|
||||
* Digital Signature Standard (DSS), section F.1, page 117.
|
||||
* (https://dx.doi.org/10.6028/NIST.FIPS.186-4)
|
||||
*
|
||||
* The following magma script was used to generate the output:
|
||||
* securitybits:=125;
|
||||
* k:=1024;
|
||||
* for t:=1 to 65 do
|
||||
* for M:=3 to Floor(2*Sqrt(k-1)-1) do
|
||||
* S:=0;
|
||||
* // Sum over m
|
||||
* for m:=3 to M do
|
||||
* s:=0;
|
||||
* // Sum over j
|
||||
* for j:=2 to m do
|
||||
* s+:=(RealField(32)!2)^-(j+(k-1)/j);
|
||||
* end for;
|
||||
* S+:=2^(m-(m-1)*t)*s;
|
||||
* end for;
|
||||
* A:=2^(k-2-M*t);
|
||||
* B:=8*(Pi(RealField(32))^2-6)/3*2^(k-2)*S;
|
||||
* pkt:=2.00743*Log(2)*k*2^-k*(A+B);
|
||||
* seclevel:=Floor(-Log(2,pkt));
|
||||
* if seclevel ge securitybits then
|
||||
* printf "k: %5o, security: %o bits (t: %o, M: %o)\n",k,seclevel,t,M;
|
||||
* break;
|
||||
* end if;
|
||||
* end for;
|
||||
* if seclevel ge securitybits then break; end if;
|
||||
* end for;
|
||||
*
|
||||
* It can be run online at:
|
||||
* http://magma.maths.usyd.edu.au/calc
|
||||
*
|
||||
* And will output:
|
||||
* k: 1024, security: 129 bits (t: 6, M: 23)
|
||||
*
|
||||
* k is the number of bits of the prime, securitybits is the level we want to
|
||||
* reach.
|
||||
*
|
||||
* prime length | RSA key size | # MR tests | security level
|
||||
* -------------+--------------|------------+---------------
|
||||
* (b) >= 6394 | >= 12788 | 3 | 256 bit
|
||||
* (b) >= 3747 | >= 7494 | 3 | 192 bit
|
||||
* (b) >= 1345 | >= 2690 | 4 | 128 bit
|
||||
* (b) >= 1080 | >= 2160 | 5 | 128 bit
|
||||
* (b) >= 852 | >= 1704 | 5 | 112 bit
|
||||
* (b) >= 476 | >= 952 | 5 | 80 bit
|
||||
* (b) >= 400 | >= 800 | 6 | 80 bit
|
||||
* (b) >= 347 | >= 694 | 7 | 80 bit
|
||||
* (b) >= 308 | >= 616 | 8 | 80 bit
|
||||
* (b) >= 55 | >= 110 | 27 | 64 bit
|
||||
* (b) >= 6 | >= 12 | 34 | 64 bit
|
||||
*/
|
||||
|
||||
# define BN_prime_checks_for_size(b) ((b) >= 3747 ? 3 : \
|
||||
(b) >= 1345 ? 4 : \
|
||||
(b) >= 476 ? 5 : \
|
||||
(b) >= 400 ? 6 : \
|
||||
(b) >= 347 ? 7 : \
|
||||
(b) >= 308 ? 8 : \
|
||||
(b) >= 55 ? 27 : \
|
||||
/* b >= 6 */ 34)
|
||||
# endif
|
||||
|
||||
# define BN_num_bytes(a) ((BN_num_bits(a)+7)/8)
|
||||
|
||||
int BN_abs_is_word(const BIGNUM *a, const BN_ULONG w);
|
||||
int BN_is_zero(const BIGNUM *a);
|
||||
int BN_is_one(const BIGNUM *a);
|
||||
int BN_is_word(const BIGNUM *a, const BN_ULONG w);
|
||||
int BN_is_odd(const BIGNUM *a);
|
||||
|
||||
# define BN_one(a) (BN_set_word((a),1))
|
||||
|
||||
void BN_zero_ex(BIGNUM *a);
|
||||
|
||||
# if OPENSSL_API_LEVEL > 908
|
||||
# define BN_zero(a) BN_zero_ex(a)
|
||||
# else
|
||||
# define BN_zero(a) (BN_set_word((a),0))
|
||||
# endif
|
||||
|
||||
const BIGNUM *BN_value_one(void);
|
||||
char *BN_options(void);
|
||||
BN_CTX *BN_CTX_new_ex(OSSL_LIB_CTX *ctx);
|
||||
BN_CTX *BN_CTX_new(void);
|
||||
BN_CTX *BN_CTX_secure_new_ex(OSSL_LIB_CTX *ctx);
|
||||
BN_CTX *BN_CTX_secure_new(void);
|
||||
void BN_CTX_free(BN_CTX *c);
|
||||
void BN_CTX_start(BN_CTX *ctx);
|
||||
BIGNUM *BN_CTX_get(BN_CTX *ctx);
|
||||
void BN_CTX_end(BN_CTX *ctx);
|
||||
int BN_rand_ex(BIGNUM *rnd, int bits, int top, int bottom,
|
||||
unsigned int strength, BN_CTX *ctx);
|
||||
int BN_rand(BIGNUM *rnd, int bits, int top, int bottom);
|
||||
int BN_priv_rand_ex(BIGNUM *rnd, int bits, int top, int bottom,
|
||||
unsigned int strength, BN_CTX *ctx);
|
||||
int BN_priv_rand(BIGNUM *rnd, int bits, int top, int bottom);
|
||||
int BN_rand_range_ex(BIGNUM *r, const BIGNUM *range, unsigned int strength,
|
||||
BN_CTX *ctx);
|
||||
int BN_rand_range(BIGNUM *rnd, const BIGNUM *range);
|
||||
int BN_priv_rand_range_ex(BIGNUM *r, const BIGNUM *range,
|
||||
unsigned int strength, BN_CTX *ctx);
|
||||
int BN_priv_rand_range(BIGNUM *rnd, const BIGNUM *range);
|
||||
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
int BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom);
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
int BN_pseudo_rand_range(BIGNUM *rnd, const BIGNUM *range);
|
||||
# endif
|
||||
int BN_num_bits(const BIGNUM *a);
|
||||
int BN_num_bits_word(BN_ULONG l);
|
||||
int BN_security_bits(int L, int N);
|
||||
BIGNUM *BN_new(void);
|
||||
BIGNUM *BN_secure_new(void);
|
||||
void BN_clear_free(BIGNUM *a);
|
||||
BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b);
|
||||
void BN_swap(BIGNUM *a, BIGNUM *b);
|
||||
BIGNUM *BN_bin2bn(const unsigned char *s, int len, BIGNUM *ret);
|
||||
int BN_bn2bin(const BIGNUM *a, unsigned char *to);
|
||||
int BN_bn2binpad(const BIGNUM *a, unsigned char *to, int tolen);
|
||||
BIGNUM *BN_lebin2bn(const unsigned char *s, int len, BIGNUM *ret);
|
||||
int BN_bn2lebinpad(const BIGNUM *a, unsigned char *to, int tolen);
|
||||
BIGNUM *BN_native2bn(const unsigned char *s, int len, BIGNUM *ret);
|
||||
int BN_bn2nativepad(const BIGNUM *a, unsigned char *to, int tolen);
|
||||
BIGNUM *BN_mpi2bn(const unsigned char *s, int len, BIGNUM *ret);
|
||||
int BN_bn2mpi(const BIGNUM *a, unsigned char *to);
|
||||
int BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
|
||||
int BN_usub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
|
||||
int BN_uadd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
|
||||
int BN_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
|
||||
int BN_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
|
||||
int BN_sqr(BIGNUM *r, const BIGNUM *a, BN_CTX *ctx);
|
||||
/** BN_set_negative sets sign of a BIGNUM
|
||||
* \param b pointer to the BIGNUM object
|
||||
* \param n 0 if the BIGNUM b should be positive and a value != 0 otherwise
|
||||
*/
|
||||
void BN_set_negative(BIGNUM *b, int n);
|
||||
/** BN_is_negative returns 1 if the BIGNUM is negative
|
||||
* \param b pointer to the BIGNUM object
|
||||
* \return 1 if a < 0 and 0 otherwise
|
||||
*/
|
||||
int BN_is_negative(const BIGNUM *b);
|
||||
|
||||
int BN_div(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, const BIGNUM *d,
|
||||
BN_CTX *ctx);
|
||||
# define BN_mod(rem,m,d,ctx) BN_div(NULL,(rem),(m),(d),(ctx))
|
||||
int BN_nnmod(BIGNUM *r, const BIGNUM *m, const BIGNUM *d, BN_CTX *ctx);
|
||||
int BN_mod_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m,
|
||||
BN_CTX *ctx);
|
||||
int BN_mod_add_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
|
||||
const BIGNUM *m);
|
||||
int BN_mod_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m,
|
||||
BN_CTX *ctx);
|
||||
int BN_mod_sub_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
|
||||
const BIGNUM *m);
|
||||
int BN_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m,
|
||||
BN_CTX *ctx);
|
||||
int BN_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx);
|
||||
int BN_mod_lshift1(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx);
|
||||
int BN_mod_lshift1_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *m);
|
||||
int BN_mod_lshift(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m,
|
||||
BN_CTX *ctx);
|
||||
int BN_mod_lshift_quick(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m);
|
||||
|
||||
BN_ULONG BN_mod_word(const BIGNUM *a, BN_ULONG w);
|
||||
BN_ULONG BN_div_word(BIGNUM *a, BN_ULONG w);
|
||||
int BN_mul_word(BIGNUM *a, BN_ULONG w);
|
||||
int BN_add_word(BIGNUM *a, BN_ULONG w);
|
||||
int BN_sub_word(BIGNUM *a, BN_ULONG w);
|
||||
int BN_set_word(BIGNUM *a, BN_ULONG w);
|
||||
BN_ULONG BN_get_word(const BIGNUM *a);
|
||||
|
||||
int BN_cmp(const BIGNUM *a, const BIGNUM *b);
|
||||
void BN_free(BIGNUM *a);
|
||||
int BN_is_bit_set(const BIGNUM *a, int n);
|
||||
int BN_lshift(BIGNUM *r, const BIGNUM *a, int n);
|
||||
int BN_lshift1(BIGNUM *r, const BIGNUM *a);
|
||||
int BN_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
|
||||
|
||||
int BN_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
|
||||
const BIGNUM *m, BN_CTX *ctx);
|
||||
int BN_mod_exp_mont(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
|
||||
const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
|
||||
int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
|
||||
const BIGNUM *m, BN_CTX *ctx,
|
||||
BN_MONT_CTX *in_mont);
|
||||
int BN_mod_exp_mont_word(BIGNUM *r, BN_ULONG a, const BIGNUM *p,
|
||||
const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
|
||||
int BN_mod_exp2_mont(BIGNUM *r, const BIGNUM *a1, const BIGNUM *p1,
|
||||
const BIGNUM *a2, const BIGNUM *p2, const BIGNUM *m,
|
||||
BN_CTX *ctx, BN_MONT_CTX *m_ctx);
|
||||
int BN_mod_exp_simple(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
|
||||
const BIGNUM *m, BN_CTX *ctx);
|
||||
int BN_mod_exp_mont_consttime_x2(BIGNUM *rr1, const BIGNUM *a1, const BIGNUM *p1,
|
||||
const BIGNUM *m1, BN_MONT_CTX *in_mont1,
|
||||
BIGNUM *rr2, const BIGNUM *a2, const BIGNUM *p2,
|
||||
const BIGNUM *m2, BN_MONT_CTX *in_mont2,
|
||||
BN_CTX *ctx);
|
||||
|
||||
int BN_mask_bits(BIGNUM *a, int n);
|
||||
# ifndef OPENSSL_NO_STDIO
|
||||
int BN_print_fp(FILE *fp, const BIGNUM *a);
|
||||
# endif
|
||||
int BN_print(BIO *bio, const BIGNUM *a);
|
||||
int BN_reciprocal(BIGNUM *r, const BIGNUM *m, int len, BN_CTX *ctx);
|
||||
int BN_rshift(BIGNUM *r, const BIGNUM *a, int n);
|
||||
int BN_rshift1(BIGNUM *r, const BIGNUM *a);
|
||||
void BN_clear(BIGNUM *a);
|
||||
BIGNUM *BN_dup(const BIGNUM *a);
|
||||
int BN_ucmp(const BIGNUM *a, const BIGNUM *b);
|
||||
int BN_set_bit(BIGNUM *a, int n);
|
||||
int BN_clear_bit(BIGNUM *a, int n);
|
||||
char *BN_bn2hex(const BIGNUM *a);
|
||||
char *BN_bn2dec(const BIGNUM *a);
|
||||
int BN_hex2bn(BIGNUM **a, const char *str);
|
||||
int BN_dec2bn(BIGNUM **a, const char *str);
|
||||
int BN_asc2bn(BIGNUM **a, const char *str);
|
||||
int BN_gcd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
|
||||
int BN_kronecker(const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); /* returns
|
||||
* -2 for
|
||||
* error */
|
||||
int BN_are_coprime(BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
|
||||
BIGNUM *BN_mod_inverse(BIGNUM *ret,
|
||||
const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx);
|
||||
BIGNUM *BN_mod_sqrt(BIGNUM *ret,
|
||||
const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx);
|
||||
|
||||
void BN_consttime_swap(BN_ULONG swap, BIGNUM *a, BIGNUM *b, int nwords);
|
||||
|
||||
/* Deprecated versions */
|
||||
# ifndef OPENSSL_NO_DEPRECATED_0_9_8
|
||||
OSSL_DEPRECATEDIN_0_9_8
|
||||
BIGNUM *BN_generate_prime(BIGNUM *ret, int bits, int safe,
|
||||
const BIGNUM *add, const BIGNUM *rem,
|
||||
void (*callback) (int, int, void *),
|
||||
void *cb_arg);
|
||||
OSSL_DEPRECATEDIN_0_9_8
|
||||
int BN_is_prime(const BIGNUM *p, int nchecks,
|
||||
void (*callback) (int, int, void *),
|
||||
BN_CTX *ctx, void *cb_arg);
|
||||
OSSL_DEPRECATEDIN_0_9_8
|
||||
int BN_is_prime_fasttest(const BIGNUM *p, int nchecks,
|
||||
void (*callback) (int, int, void *),
|
||||
BN_CTX *ctx, void *cb_arg,
|
||||
int do_trial_division);
|
||||
# endif
|
||||
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
int BN_is_prime_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx, BN_GENCB *cb);
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
int BN_is_prime_fasttest_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx,
|
||||
int do_trial_division, BN_GENCB *cb);
|
||||
# endif
|
||||
/* Newer versions */
|
||||
int BN_generate_prime_ex2(BIGNUM *ret, int bits, int safe,
|
||||
const BIGNUM *add, const BIGNUM *rem, BN_GENCB *cb,
|
||||
BN_CTX *ctx);
|
||||
int BN_generate_prime_ex(BIGNUM *ret, int bits, int safe, const BIGNUM *add,
|
||||
const BIGNUM *rem, BN_GENCB *cb);
|
||||
int BN_check_prime(const BIGNUM *p, BN_CTX *ctx, BN_GENCB *cb);
|
||||
|
||||
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
int BN_X931_generate_Xpq(BIGNUM *Xp, BIGNUM *Xq, int nbits, BN_CTX *ctx);
|
||||
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
int BN_X931_derive_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2,
|
||||
const BIGNUM *Xp, const BIGNUM *Xp1,
|
||||
const BIGNUM *Xp2, const BIGNUM *e, BN_CTX *ctx,
|
||||
BN_GENCB *cb);
|
||||
OSSL_DEPRECATEDIN_3_0
|
||||
int BN_X931_generate_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2, BIGNUM *Xp1,
|
||||
BIGNUM *Xp2, const BIGNUM *Xp, const BIGNUM *e,
|
||||
BN_CTX *ctx, BN_GENCB *cb);
|
||||
# endif
|
||||
|
||||
BN_MONT_CTX *BN_MONT_CTX_new(void);
|
||||
int BN_mod_mul_montgomery(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
|
||||
BN_MONT_CTX *mont, BN_CTX *ctx);
|
||||
int BN_to_montgomery(BIGNUM *r, const BIGNUM *a, BN_MONT_CTX *mont,
|
||||
BN_CTX *ctx);
|
||||
int BN_from_montgomery(BIGNUM *r, const BIGNUM *a, BN_MONT_CTX *mont,
|
||||
BN_CTX *ctx);
|
||||
void BN_MONT_CTX_free(BN_MONT_CTX *mont);
|
||||
int BN_MONT_CTX_set(BN_MONT_CTX *mont, const BIGNUM *mod, BN_CTX *ctx);
|
||||
BN_MONT_CTX *BN_MONT_CTX_copy(BN_MONT_CTX *to, BN_MONT_CTX *from);
|
||||
BN_MONT_CTX *BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, CRYPTO_RWLOCK *lock,
|
||||
const BIGNUM *mod, BN_CTX *ctx);
|
||||
|
||||
/* BN_BLINDING flags */
|
||||
# define BN_BLINDING_NO_UPDATE 0x00000001
|
||||
# define BN_BLINDING_NO_RECREATE 0x00000002
|
||||
|
||||
BN_BLINDING *BN_BLINDING_new(const BIGNUM *A, const BIGNUM *Ai, BIGNUM *mod);
|
||||
void BN_BLINDING_free(BN_BLINDING *b);
|
||||
int BN_BLINDING_update(BN_BLINDING *b, BN_CTX *ctx);
|
||||
int BN_BLINDING_convert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx);
|
||||
int BN_BLINDING_invert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx);
|
||||
int BN_BLINDING_convert_ex(BIGNUM *n, BIGNUM *r, BN_BLINDING *b, BN_CTX *);
|
||||
int BN_BLINDING_invert_ex(BIGNUM *n, const BIGNUM *r, BN_BLINDING *b,
|
||||
BN_CTX *);
|
||||
|
||||
int BN_BLINDING_is_current_thread(BN_BLINDING *b);
|
||||
void BN_BLINDING_set_current_thread(BN_BLINDING *b);
|
||||
int BN_BLINDING_lock(BN_BLINDING *b);
|
||||
int BN_BLINDING_unlock(BN_BLINDING *b);
|
||||
|
||||
unsigned long BN_BLINDING_get_flags(const BN_BLINDING *);
|
||||
void BN_BLINDING_set_flags(BN_BLINDING *, unsigned long);
|
||||
BN_BLINDING *BN_BLINDING_create_param(BN_BLINDING *b,
|
||||
const BIGNUM *e, BIGNUM *m, BN_CTX *ctx,
|
||||
int (*bn_mod_exp) (BIGNUM *r,
|
||||
const BIGNUM *a,
|
||||
const BIGNUM *p,
|
||||
const BIGNUM *m,
|
||||
BN_CTX *ctx,
|
||||
BN_MONT_CTX *m_ctx),
|
||||
BN_MONT_CTX *m_ctx);
|
||||
# ifndef OPENSSL_NO_DEPRECATED_0_9_8
|
||||
OSSL_DEPRECATEDIN_0_9_8
|
||||
void BN_set_params(int mul, int high, int low, int mont);
|
||||
OSSL_DEPRECATEDIN_0_9_8
|
||||
int BN_get_params(int which); /* 0, mul, 1 high, 2 low, 3 mont */
|
||||
# endif
|
||||
|
||||
BN_RECP_CTX *BN_RECP_CTX_new(void);
|
||||
void BN_RECP_CTX_free(BN_RECP_CTX *recp);
|
||||
int BN_RECP_CTX_set(BN_RECP_CTX *recp, const BIGNUM *rdiv, BN_CTX *ctx);
|
||||
int BN_mod_mul_reciprocal(BIGNUM *r, const BIGNUM *x, const BIGNUM *y,
|
||||
BN_RECP_CTX *recp, BN_CTX *ctx);
|
||||
int BN_mod_exp_recp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
|
||||
const BIGNUM *m, BN_CTX *ctx);
|
||||
int BN_div_recp(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m,
|
||||
BN_RECP_CTX *recp, BN_CTX *ctx);
|
||||
|
||||
# ifndef OPENSSL_NO_EC2M
|
||||
|
||||
/*
|
||||
* Functions for arithmetic over binary polynomials represented by BIGNUMs.
|
||||
* The BIGNUM::neg property of BIGNUMs representing binary polynomials is
|
||||
* ignored. Note that input arguments are not const so that their bit arrays
|
||||
* can be expanded to the appropriate size if needed.
|
||||
*/
|
||||
|
||||
/*
|
||||
* r = a + b
|
||||
*/
|
||||
int BN_GF2m_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
|
||||
# define BN_GF2m_sub(r, a, b) BN_GF2m_add(r, a, b)
|
||||
/*
|
||||
* r=a mod p
|
||||
*/
|
||||
int BN_GF2m_mod(BIGNUM *r, const BIGNUM *a, const BIGNUM *p);
|
||||
/* r = (a * b) mod p */
|
||||
int BN_GF2m_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
|
||||
const BIGNUM *p, BN_CTX *ctx);
|
||||
/* r = (a * a) mod p */
|
||||
int BN_GF2m_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
|
||||
/* r = (1 / b) mod p */
|
||||
int BN_GF2m_mod_inv(BIGNUM *r, const BIGNUM *b, const BIGNUM *p, BN_CTX *ctx);
|
||||
/* r = (a / b) mod p */
|
||||
int BN_GF2m_mod_div(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
|
||||
const BIGNUM *p, BN_CTX *ctx);
|
||||
/* r = (a ^ b) mod p */
|
||||
int BN_GF2m_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
|
||||
const BIGNUM *p, BN_CTX *ctx);
|
||||
/* r = sqrt(a) mod p */
|
||||
int BN_GF2m_mod_sqrt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
|
||||
BN_CTX *ctx);
|
||||
/* r^2 + r = a mod p */
|
||||
int BN_GF2m_mod_solve_quad(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
|
||||
BN_CTX *ctx);
|
||||
# define BN_GF2m_cmp(a, b) BN_ucmp((a), (b))
|
||||
/*-
|
||||
* Some functions allow for representation of the irreducible polynomials
|
||||
* as an unsigned int[], say p. The irreducible f(t) is then of the form:
|
||||
* t^p[0] + t^p[1] + ... + t^p[k]
|
||||
* where m = p[0] > p[1] > ... > p[k] = 0.
|
||||
*/
|
||||
/* r = a mod p */
|
||||
int BN_GF2m_mod_arr(BIGNUM *r, const BIGNUM *a, const int p[]);
|
||||
/* r = (a * b) mod p */
|
||||
int BN_GF2m_mod_mul_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
|
||||
const int p[], BN_CTX *ctx);
|
||||
/* r = (a * a) mod p */
|
||||
int BN_GF2m_mod_sqr_arr(BIGNUM *r, const BIGNUM *a, const int p[],
|
||||
BN_CTX *ctx);
|
||||
/* r = (1 / b) mod p */
|
||||
int BN_GF2m_mod_inv_arr(BIGNUM *r, const BIGNUM *b, const int p[],
|
||||
BN_CTX *ctx);
|
||||
/* r = (a / b) mod p */
|
||||
int BN_GF2m_mod_div_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
|
||||
const int p[], BN_CTX *ctx);
|
||||
/* r = (a ^ b) mod p */
|
||||
int BN_GF2m_mod_exp_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
|
||||
const int p[], BN_CTX *ctx);
|
||||
/* r = sqrt(a) mod p */
|
||||
int BN_GF2m_mod_sqrt_arr(BIGNUM *r, const BIGNUM *a,
|
||||
const int p[], BN_CTX *ctx);
|
||||
/* r^2 + r = a mod p */
|
||||
int BN_GF2m_mod_solve_quad_arr(BIGNUM *r, const BIGNUM *a,
|
||||
const int p[], BN_CTX *ctx);
|
||||
int BN_GF2m_poly2arr(const BIGNUM *a, int p[], int max);
|
||||
int BN_GF2m_arr2poly(const int p[], BIGNUM *a);
|
||||
|
||||
# endif
|
||||
|
||||
/*
|
||||
* faster mod functions for the 'NIST primes' 0 <= a < p^2
|
||||
*/
|
||||
int BN_nist_mod_192(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
|
||||
int BN_nist_mod_224(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
|
||||
int BN_nist_mod_256(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
|
||||
int BN_nist_mod_384(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
|
||||
int BN_nist_mod_521(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
|
||||
|
||||
const BIGNUM *BN_get0_nist_prime_192(void);
|
||||
const BIGNUM *BN_get0_nist_prime_224(void);
|
||||
const BIGNUM *BN_get0_nist_prime_256(void);
|
||||
const BIGNUM *BN_get0_nist_prime_384(void);
|
||||
const BIGNUM *BN_get0_nist_prime_521(void);
|
||||
|
||||
int (*BN_nist_mod_func(const BIGNUM *p)) (BIGNUM *r, const BIGNUM *a,
|
||||
const BIGNUM *field, BN_CTX *ctx);
|
||||
|
||||
int BN_generate_dsa_nonce(BIGNUM *out, const BIGNUM *range,
|
||||
const BIGNUM *priv, const unsigned char *message,
|
||||
size_t message_len, BN_CTX *ctx);
|
||||
|
||||
/* Primes from RFC 2409 */
|
||||
BIGNUM *BN_get_rfc2409_prime_768(BIGNUM *bn);
|
||||
BIGNUM *BN_get_rfc2409_prime_1024(BIGNUM *bn);
|
||||
|
||||
/* Primes from RFC 3526 */
|
||||
BIGNUM *BN_get_rfc3526_prime_1536(BIGNUM *bn);
|
||||
BIGNUM *BN_get_rfc3526_prime_2048(BIGNUM *bn);
|
||||
BIGNUM *BN_get_rfc3526_prime_3072(BIGNUM *bn);
|
||||
BIGNUM *BN_get_rfc3526_prime_4096(BIGNUM *bn);
|
||||
BIGNUM *BN_get_rfc3526_prime_6144(BIGNUM *bn);
|
||||
BIGNUM *BN_get_rfc3526_prime_8192(BIGNUM *bn);
|
||||
|
||||
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||
# define get_rfc2409_prime_768 BN_get_rfc2409_prime_768
|
||||
# define get_rfc2409_prime_1024 BN_get_rfc2409_prime_1024
|
||||
# define get_rfc3526_prime_1536 BN_get_rfc3526_prime_1536
|
||||
# define get_rfc3526_prime_2048 BN_get_rfc3526_prime_2048
|
||||
# define get_rfc3526_prime_3072 BN_get_rfc3526_prime_3072
|
||||
# define get_rfc3526_prime_4096 BN_get_rfc3526_prime_4096
|
||||
# define get_rfc3526_prime_6144 BN_get_rfc3526_prime_6144
|
||||
# define get_rfc3526_prime_8192 BN_get_rfc3526_prime_8192
|
||||
# endif
|
||||
|
||||
int BN_bntest_rand(BIGNUM *rnd, int bits, int top, int bottom);
|
||||
|
||||
|
||||
# ifdef __cplusplus
|
||||
}
|
||||
# endif
|
||||
#endif
|
||||
47
.CondaPkg/env/include/openssl/bnerr.h
vendored
Normal file
47
.CondaPkg/env/include/openssl/bnerr.h
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Generated by util/mkerr.pl DO NOT EDIT
|
||||
* Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
* in the file LICENSE in the source distribution or at
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#ifndef OPENSSL_BNERR_H
|
||||
# define OPENSSL_BNERR_H
|
||||
# pragma once
|
||||
|
||||
# include <openssl/opensslconf.h>
|
||||
# include <openssl/symhacks.h>
|
||||
# include <openssl/cryptoerr_legacy.h>
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* BN reason codes.
|
||||
*/
|
||||
# define BN_R_ARG2_LT_ARG3 100
|
||||
# define BN_R_BAD_RECIPROCAL 101
|
||||
# define BN_R_BIGNUM_TOO_LONG 114
|
||||
# define BN_R_BITS_TOO_SMALL 118
|
||||
# define BN_R_CALLED_WITH_EVEN_MODULUS 102
|
||||
# define BN_R_DIV_BY_ZERO 103
|
||||
# define BN_R_ENCODING_ERROR 104
|
||||
# define BN_R_EXPAND_ON_STATIC_BIGNUM_DATA 105
|
||||
# define BN_R_INPUT_NOT_REDUCED 110
|
||||
# define BN_R_INVALID_LENGTH 106
|
||||
# define BN_R_INVALID_RANGE 115
|
||||
# define BN_R_INVALID_SHIFT 119
|
||||
# define BN_R_NOT_A_SQUARE 111
|
||||
# define BN_R_NOT_INITIALIZED 107
|
||||
# define BN_R_NO_INVERSE 108
|
||||
# define BN_R_NO_PRIME_CANDIDATE 121
|
||||
# define BN_R_NO_SOLUTION 116
|
||||
# define BN_R_NO_SUITABLE_DIGEST 120
|
||||
# define BN_R_PRIVATE_KEY_TOO_LARGE 117
|
||||
# define BN_R_P_IS_NOT_PRIME 112
|
||||
# define BN_R_TOO_MANY_ITERATIONS 113
|
||||
# define BN_R_TOO_MANY_TEMPORARY_VARIABLES 109
|
||||
|
||||
#endif
|
||||
62
.CondaPkg/env/include/openssl/buffer.h
vendored
Normal file
62
.CondaPkg/env/include/openssl/buffer.h
vendored
Normal file
@@ -0,0 +1,62 @@
|
||||
/*
|
||||
* Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
* in the file LICENSE in the source distribution or at
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#ifndef OPENSSL_BUFFER_H
|
||||
# define OPENSSL_BUFFER_H
|
||||
# pragma once
|
||||
|
||||
# include <openssl/macros.h>
|
||||
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
# define HEADER_BUFFER_H
|
||||
# endif
|
||||
|
||||
# include <openssl/types.h>
|
||||
# ifndef OPENSSL_CRYPTO_H
|
||||
# include <openssl/crypto.h>
|
||||
# endif
|
||||
# include <openssl/buffererr.h>
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
# include <stddef.h>
|
||||
# include <sys/types.h>
|
||||
|
||||
# ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
# define BUF_strdup(s) OPENSSL_strdup(s)
|
||||
# define BUF_strndup(s, size) OPENSSL_strndup(s, size)
|
||||
# define BUF_memdup(data, size) OPENSSL_memdup(data, size)
|
||||
# define BUF_strlcpy(dst, src, size) OPENSSL_strlcpy(dst, src, size)
|
||||
# define BUF_strlcat(dst, src, size) OPENSSL_strlcat(dst, src, size)
|
||||
# define BUF_strnlen(str, maxlen) OPENSSL_strnlen(str, maxlen)
|
||||
# endif
|
||||
|
||||
struct buf_mem_st {
|
||||
size_t length; /* current number of bytes */
|
||||
char *data;
|
||||
size_t max; /* size of buffer */
|
||||
unsigned long flags;
|
||||
};
|
||||
|
||||
# define BUF_MEM_FLAG_SECURE 0x01
|
||||
|
||||
BUF_MEM *BUF_MEM_new(void);
|
||||
BUF_MEM *BUF_MEM_new_ex(unsigned long flags);
|
||||
void BUF_MEM_free(BUF_MEM *a);
|
||||
size_t BUF_MEM_grow(BUF_MEM *str, size_t len);
|
||||
size_t BUF_MEM_grow_clean(BUF_MEM *str, size_t len);
|
||||
void BUF_reverse(unsigned char *out, const unsigned char *in, size_t siz);
|
||||
|
||||
|
||||
# ifdef __cplusplus
|
||||
}
|
||||
# endif
|
||||
#endif
|
||||
25
.CondaPkg/env/include/openssl/buffererr.h
vendored
Normal file
25
.CondaPkg/env/include/openssl/buffererr.h
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
/*
|
||||
* Generated by util/mkerr.pl DO NOT EDIT
|
||||
* Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License 2.0 (the "License"). You may not use
|
||||
* this file except in compliance with the License. You can obtain a copy
|
||||
* in the file LICENSE in the source distribution or at
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#ifndef OPENSSL_BUFFERERR_H
|
||||
# define OPENSSL_BUFFERERR_H
|
||||
# pragma once
|
||||
|
||||
# include <openssl/opensslconf.h>
|
||||
# include <openssl/symhacks.h>
|
||||
# include <openssl/cryptoerr_legacy.h>
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* BUF reason codes.
|
||||
*/
|
||||
|
||||
#endif
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user