gawk-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gawk-diffs] [SCM] gawk branch, xgawk-build, updated. 96d7539b12aa96f852


From: Andrew J. Schorr
Subject: [gawk-diffs] [SCM] gawk branch, xgawk-build, updated. 96d7539b12aa96f85280be1ebbb933e951046cff
Date: Tue, 08 May 2012 03:45:03 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".

The branch, xgawk-build has been updated
       via  96d7539b12aa96f85280be1ebbb933e951046cff (commit)
      from  7e83cf5fd642b233a8d7af72b092e0c9bab29647 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=96d7539b12aa96f85280be1ebbb933e951046cff

commit 96d7539b12aa96f85280be1ebbb933e951046cff
Author: Andrew J. Schorr <address@hidden>
Date:   Mon May 7 23:44:31 2012 -0400

    Copy new gawkapi.h from xgawk branch.

diff --git a/gawkapi.h b/gawkapi.h
new file mode 100644
index 0000000..e51dcce
--- /dev/null
+++ b/gawkapi.h
@@ -0,0 +1,216 @@
+/*
+ * gawkpi.h -- Definitions for use by extension functions calling into gawk.
+ */
+
+/* 
+ * Copyright (C) 2012, the Free Software Foundation, Inc.
+ * 
+ * This file is part of GAWK, the GNU implementation of the
+ * AWK Programming Language.
+ * 
+ * GAWK is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * GAWK is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, 
USA
+ */
+
+/*
+ * N.B. You must include <sys/types.h> and <sys/stat.h>
+ * before including this file!
+ */
+
+#ifndef _GAWK_API_H
+#define _GAWK_API_H
+
+       /* Allow the use in C++ code.  */
+#ifdef __cplusplus
+       extern "C" {
+#endif
+
+       typedef struct iobuf {
+               const char *name;       /* filename */
+               int fd;                 /* file descriptor */
+               struct stat sbuf;       /* stat buf */
+               char *buf;              /* start data buffer */
+               char *off;              /* start of current record in buffer */
+               char *dataend;          /* first byte in buffer to hold new 
data,
+                                          NULL if not read yet */
+               char *end;              /* end of buffer */
+               size_t readsize;        /* set from fstat call */
+               size_t size;            /* buffer size */
+               ssize_t count;          /* amount read last time */
+               size_t scanoff;         /* where we were in the buffer when we 
had
+                                          to regrow/refill */
+               /*
+                * No argument prototype on read_func. See get_src_buf()
+                * in awkgram.y.
+                */
+               ssize_t (*read_func)();
+
+               void *opaque;           /* private data for open hooks */
+               int (*get_record)(char **out, struct iobuf *, int *errcode);
+               void (*close_func)(struct iobuf *);             /* open and 
close hooks */
+               
+               int errcode;
+
+               int flag;
+#              define  IOP_IS_TTY      1
+#              define  IOP_NOFREE_OBJ  2
+#              define  IOP_AT_EOF      4
+#              define  IOP_CLOSED      8
+#              define  IOP_AT_START    16
+       } IOBUF;
+
+#define GAWK_API_MAJOR_VERSION 0
+#define GAWK_API_MINOR_VERSION 0
+
+#define DO_FLAGS_SIZE  6
+
+       typedef enum {
+               AWK_UNDEFINED,
+               AWK_NUMBER,
+               AWK_CONST_STRING,
+               AWK_STRING,
+               AWK_ARRAY
+       } awk_valtype_t;
+
+       typedef struct {
+               const char *const str;
+               const size_t len;
+       } awk_const_string_t;
+
+       typedef struct {
+               char *str;
+               size_t len;
+       } awk_string_t;
+
+       typedef struct {
+               awk_valtype_t   val_type;
+               union {
+                       awk_const_string        cs;
+                       awk_string              s;
+                       double                  d;
+                       void*                   a;
+               } u;
+#define const_str_val  u.cs
+#define str_val                u.s
+#define num_val                u.d
+#define array_cookie   u.a
+       } awk_value_t;
+
+
+       typedef struct {
+               const char *name;
+               size_t num_args;
+               void (*function)(int num_args);
+       } awk_ext_func_t;
+
+       typedef struct gawk_api {
+               int major_version;
+               int minor_version;
+
+               int do_flags[DO_FLAGS_SIZE];
+       /* Use these as indices into do_flags[] array to check the values */
+#define gawk_do_lint           0
+#define gawk_do_traditional    1
+#define gawk_do_profile                2
+#define gawk_do_sandbox                3
+#define gawk_do_debug          4
+#define gawk_do_mpfr           5
+
+               /* get the number of arguments passed in function call */
+               /* FIXME: Needed? Won't we pass the count in the real call? */
+               size_t (*get_curfunc_arg_count)(void *ext_id);
+               awk_value_t *(*get_curfunc_param)(void *ext_id, size_t count);
+
+               /* functions to print messages */
+               void (*fatal)(void *ext_id, const char *format, ...);
+               void (*warning)(void *ext_id, const char *format, ...);
+               void (*lintwarn)(void *ext_id, const char *format, ...);
+
+               /* register an open hook; for opening files read-only */
+               int (*register_open_hook)(void *ext_id,
+                               void* (*open_func)(IOBUF *));
+
+               /* functions to update ERRNO */
+               void (*update_ERRNO_int)(void *ext_id, int);
+               void (*update_ERRNO_string)(void *ext_id, const char *string,
+                               int translate);
+               void (*unset_ERRNO)(void *ext_id);
+
+               /* check if a value received from gawk is the null string */
+               int (*is_null_string)(void *ext_id, void *value);
+
+               /* add a function to the interpreter */
+               int *(add_ext_func)(void *ext_id, const awk_ext_func_t *func);
+
+               /* add an exit call back */
+               void (*awk_atexit)(void *ext_id, void (*funcp)(void *data, int 
exit_status), void *arg0);
+
+               /* Symbol table access */
+               awk_value_t *(*sym_lookup)(void *ext_id, const char *name);
+               int (*sym_update)(void *ext_id, const char *name, awk_value_t 
*value);
+               int (*sym_remove)(void *ext_id, const char *name);
+
+               /* Array management */
+               awk_value_t *(*get_array_element)(void *ext_id, void *a_cookie, 
const awk_value_t* const index);
+               awk_value_t *(*set_array_element)(void *ext_id, void *a_cookie,
+                               const awk_value_t* const index, const 
awk_value_t* const value);
+               awk_value_t *(*del_array_element)(void *ext_id, void *a_cookie, 
const awk_value_t* const index);
+               size_t (*get_element_count)(void *ext_id, void *a_cookie);
+
+       } gawk_api_t;
+
+#ifndef GAWK   /* these are not for the gawk code itself */
+       /*
+        * Use these if you want to define a "global" variable named api
+        * to make the code a little easier to read.
+        */
+#define do_lint                api->do_flags[gawk_do_lint]
+#define do_traditional api->do_flags[gawk_do_traditional]
+#define do_profile     api->do_flags[gawk_do_profile]
+#define do_sandbox     api->do_flags[gawk_do_sandbox]
+#define do_debug       api->do_flags[gawk_do_debug]
+
+#define get_curfunc_arg_count  api->get_curfunc_arg_count
+#define get_curfunc_param      api->get_curfunc_param
+
+#define fatal          api->fatal
+#define warning                api->warning
+#define lintwarn       api->lintwarn
+
+#define register_open_hook     api->register_open_hook
+
+#define update_ERRNO_int       api->update_ERRNO_int
+#define update_ERRNO_string    api->update_ERRNO_string
+#define unset_ERRNO    api->unset_ERRNO
+
+#define is_null_string api->is_null_string
+
+#define add_ext_func   api->add_ext_func
+#define awk_atexit     api->awk_atexit
+
+#define sym_lookup     api->sym_lookup
+#define sym_update     api->sym_update
+#define sym_remove     api->sym_remove
+
+#define get_array_element      api->get_array_element
+#define set_array_element      api->set_array_element
+#define del_array_element      api->del_array_element
+#define get_element_count      api->get_element_count
+#endif /* GAWK */
+
+#ifdef __cplusplus
+}
+#endif /* C++ */
+
+#endif /* _GAWK_API_H */

-----------------------------------------------------------------------

Summary of changes:
 gawkapi.h |  216 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 216 insertions(+), 0 deletions(-)
 create mode 100644 gawkapi.h


hooks/post-receive
-- 
gawk



reply via email to

[Prev in Thread] Current Thread [Next in Thread]