diff options
Diffstat (limited to 'mdk-stage1/slang/slnspace.c')
-rw-r--r-- | mdk-stage1/slang/slnspace.c | 242 |
1 files changed, 0 insertions, 242 deletions
diff --git a/mdk-stage1/slang/slnspace.c b/mdk-stage1/slang/slnspace.c deleted file mode 100644 index 174ba7c81..000000000 --- a/mdk-stage1/slang/slnspace.c +++ /dev/null @@ -1,242 +0,0 @@ -/* -*- mode: C; mode: fold; -*- */ -/* slnspace.c --- Name Space implementation */ -/* Copyright (c) 1992, 1999, 2001 John E. Davis - * This file is part of the S-Lang library. - * - * You may distribute under the terms of either the GNU General Public - * License or the Perl Artistic License. - */ - -#include "slinclud.h" - -#include "slang.h" -#include "_slang.h" - -static SLang_NameSpace_Type *Namespace_Tables; - -static SLang_NameSpace_Type *find_name_table (char *name) -{ - SLang_NameSpace_Type *table_list; - - table_list = Namespace_Tables; - while (table_list != NULL) - { - if (0 == strcmp (table_list->name, name)) - break; - table_list = table_list->next; - } - return table_list; -} - -SLang_NameSpace_Type *_SLns_find_namespace (char *name) -{ - SLang_NameSpace_Type *table_list; - - table_list = Namespace_Tables; - while (table_list != NULL) - { - if ((table_list->namespace_name != NULL) - && (0 == strcmp (table_list->namespace_name, name))) - break; - table_list = table_list->next; - } - return table_list; -} - -SLang_NameSpace_Type *_SLns_allocate_namespace (char *name, unsigned int size) -{ - SLang_NameSpace_Type *table_list; - SLang_Name_Type **nt; - - if (NULL != (table_list = find_name_table (name))) - return table_list; - - if (NULL == (name = SLang_create_slstring (name))) - return NULL; - - if (NULL == (table_list = (SLang_NameSpace_Type *) - SLmalloc (sizeof (SLang_NameSpace_Type)))) - { - SLang_free_slstring (name); - return NULL; - } - - if (NULL == (nt = (SLang_Name_Type **) SLmalloc (sizeof (SLang_Name_Type *) * size))) - { - SLang_free_slstring (name); - SLfree ((char *)table_list); - return NULL; - } - - memset ((char *)nt, 0, size * sizeof (SLang_Name_Type *)); - memset ((char *) table_list, 0, sizeof (SLang_NameSpace_Type)); - - table_list->name = name; - table_list->table = nt; - table_list->table_size = size; - - table_list->next = Namespace_Tables; - Namespace_Tables = table_list; - - return table_list; -} - -int _SLns_set_namespace_name (SLang_NameSpace_Type *t, char *name) -{ - SLang_NameSpace_Type *t1; - - t1 = _SLns_find_namespace (name); - if (t1 == NULL) - t1 = t; - - if ((t != t1) || (*name == 0)) - { - SLang_verror (SL_INTRINSIC_ERROR, "Namespace \"%s\" already exists", - name); - return -1; - } - - if (NULL == (name = SLang_create_slstring (name))) - return -1; - - SLang_free_slstring (t->namespace_name); /* NULL ok */ - t->namespace_name = name; - - return 0; -} - -SLang_Array_Type *_SLnspace_apropos (SLang_NameSpace_Type *ns, char *pat, unsigned int what) -{ - SLang_Array_Type *at; - unsigned int table_size; - SLang_Name_Type *t, **table; - int num_matches; - unsigned int i; - SLRegexp_Type rexp; - unsigned char rbuf[512]; - unsigned int two; - - at = NULL; - - if ((ns == NULL) - || ((table = ns->table) == NULL)) - return NULL; - - memset ((char *) &rexp, 0, sizeof (SLRegexp_Type)); - rexp.case_sensitive = 1; - rexp.buf = rbuf; - rexp.buf_len = sizeof (rbuf); - rexp.pat = (unsigned char *)pat; - - if (0 != SLang_regexp_compile (&rexp)) - { - SLang_verror (SL_INVALID_PARM, "Invalid regular expression: %s", pat); - return NULL; - } - - table_size = ns->table_size; - - two = 2; - while (two != 0) - { - two--; - - num_matches = 0; - for (i = 0; i < table_size; i++) - { - t = table[i]; - while (t != NULL) - { - unsigned int flags; - char *name = t->name; - - switch (t->name_type) - { - case SLANG_GVARIABLE: - flags = 8; - break; - - case SLANG_ICONSTANT: - case SLANG_DCONSTANT: - case SLANG_RVARIABLE: - case SLANG_IVARIABLE: - flags = 4; - break; - - case SLANG_INTRINSIC: - case SLANG_MATH_UNARY: - case SLANG_APP_UNARY: - flags = 1; - break; - - case SLANG_FUNCTION: - flags = 2; - break; - - default: - flags = 0; - break; - } - - if ((flags & what) - && (NULL != SLang_regexp_match ((unsigned char *)name, strlen (name), &rexp))) - { - if (at != NULL) - { - if (-1 == SLang_set_array_element (at, &num_matches, (VOID_STAR)&name)) - goto return_error; - } - num_matches++; - } - t = t->next; - } - } - - if (at == NULL) - { - at = SLang_create_array (SLANG_STRING_TYPE, 0, NULL, &num_matches, 1); - if (at == NULL) - goto return_error; - } - } - - return at; - - return_error: - SLang_free_array (at); - return NULL; -} - -SLang_NameSpace_Type *SLns_create_namespace (char *namespace_name) -{ - SLang_NameSpace_Type *ns; - static int num; - char name[64]; - - if (namespace_name == NULL) - namespace_name = "Global"; - - ns = _SLns_find_namespace (namespace_name); - if (ns != NULL) - return ns; - - sprintf (name, " *** internal ns <%d> *** ", num); - - if (NULL == (ns = _SLns_allocate_namespace (name, SLSTATIC_HASH_TABLE_SIZE))) - return NULL; - - num++; - if (-1 == _SLns_set_namespace_name (ns, namespace_name)) - { - SLns_delete_namespace (ns); - return NULL; - } - - return ns; -} - -void SLns_delete_namespace (SLang_NameSpace_Type *ns) -{ - (void) ns; - /* V2.0 */ -} |