Properly hide unexposed naming functions in naming.c

This commit is contained in:
William S Fulton 2016-02-29 07:11:05 +00:00
commit 9f0e7885ce
2 changed files with 47 additions and 53 deletions

View file

@ -466,8 +466,7 @@ static DOH *get_object(Hash *n, String *decl) {
return rn; return rn;
} }
static static DOH *name_object_get(Hash *namehash, String *tname, SwigType *decl, SwigType *ncdecl) {
DOH *name_object_get(Hash *namehash, String *tname, SwigType *decl, SwigType *ncdecl) {
DOH *rn = 0; DOH *rn = 0;
Hash *n = Getattr(namehash, tname); Hash *n = Getattr(namehash, tname);
if (n) { if (n) {
@ -646,8 +645,7 @@ static void merge_features(Hash *features, Node *n) {
* the declaration, decl. * the declaration, decl.
* ----------------------------------------------------------------------------- */ * ----------------------------------------------------------------------------- */
static static void features_get(Hash *features, const String *tname, SwigType *decl, SwigType *ncdecl, Node *node) {
void features_get(Hash *features, const String *tname, SwigType *decl, SwigType *ncdecl, Node *node) {
Node *n = Getattr(features, tname); Node *n = Getattr(features, tname);
#ifdef SWIG_DEBUG #ifdef SWIG_DEBUG
Printf(stdout, " features_get: %s\n", tname); Printf(stdout, " features_get: %s\n", tname);
@ -844,41 +842,41 @@ void Swig_feature_set(Hash *features, const_String_or_char_ptr name, SwigType *d
* ----------------------------------------------------------------------------- */ * ----------------------------------------------------------------------------- */
static Hash *namewarn_hash = 0; static Hash *namewarn_hash = 0;
Hash *Swig_name_namewarn_hash() { static Hash *name_namewarn_hash() {
if (!namewarn_hash) if (!namewarn_hash)
namewarn_hash = NewHash(); namewarn_hash = NewHash();
return namewarn_hash; return namewarn_hash;
} }
static Hash *rename_hash = 0; static Hash *rename_hash = 0;
Hash *Swig_name_rename_hash() { static Hash *name_rename_hash() {
if (!rename_hash) if (!rename_hash)
rename_hash = NewHash(); rename_hash = NewHash();
return rename_hash; return rename_hash;
} }
static List *namewarn_list = 0; static List *namewarn_list = 0;
List *Swig_name_namewarn_list() { static List *name_namewarn_list() {
if (!namewarn_list) if (!namewarn_list)
namewarn_list = NewList(); namewarn_list = NewList();
return namewarn_list; return namewarn_list;
} }
static List *rename_list = 0; static List *rename_list = 0;
List *Swig_name_rename_list() { static List *name_rename_list() {
if (!rename_list) if (!rename_list)
rename_list = NewList(); rename_list = NewList();
return rename_list; return rename_list;
} }
/* ----------------------------------------------------------------------------- /* -----------------------------------------------------------------------------
* int Swig_need_name_warning(Node *n) * int need_name_warning(Node *n)
* *
* Detects if a node needs name warnings * Detects if a node needs name warnings
* *
* ----------------------------------------------------------------------------- */ * ----------------------------------------------------------------------------- */
int Swig_need_name_warning(Node *n) { static int need_name_warning(Node *n) {
int need = 1; int need = 1;
/* /*
We don't use name warnings for: We don't use name warnings for:
@ -1061,13 +1059,13 @@ int Swig_need_protected(Node *n) {
} }
/* ----------------------------------------------------------------------------- /* -----------------------------------------------------------------------------
* void Swig_name_nameobj_add() * void name_nameobj_add()
* *
* Add nameobj (rename/namewarn) * Add nameobj (rename/namewarn)
* *
* ----------------------------------------------------------------------------- */ * ----------------------------------------------------------------------------- */
static List *Swig_make_attrlist(const char *ckey) { static List *make_attrlist(const char *ckey) {
List *list = NewList(); List *list = NewList();
const char *cattr = strchr(ckey, '$'); const char *cattr = strchr(ckey, '$');
if (cattr) { if (cattr) {
@ -1089,7 +1087,7 @@ static List *Swig_make_attrlist(const char *ckey) {
return list; return list;
} }
static void Swig_name_object_attach_keys(const char *keys[], Hash *nameobj) { static void name_object_attach_keys(const char *keys[], Hash *nameobj) {
Node *kw = nextSibling(nameobj); Node *kw = nextSibling(nameobj);
List *matchlist = 0; List *matchlist = 0;
while (kw) { while (kw) {
@ -1105,7 +1103,7 @@ static void Swig_name_object_attach_keys(const char *keys[], Hash *nameobj) {
|| (isregexmatch = (strncmp(ckey, "regexmatch", 10) == 0)) || (isregexmatch = (strncmp(ckey, "regexmatch", 10) == 0))
|| (isnotmatch = isregexmatch = (strncmp(ckey, "notregexmatch", 13) == 0))) { || (isnotmatch = isregexmatch = (strncmp(ckey, "notregexmatch", 13) == 0))) {
Hash *mi = NewHash(); Hash *mi = NewHash();
List *attrlist = Swig_make_attrlist(ckey); List *attrlist = make_attrlist(ckey);
if (!matchlist) if (!matchlist)
matchlist = NewList(); matchlist = NewList();
Setattr(mi, "value", Getattr(kw, "value")); Setattr(mi, "value", Getattr(kw, "value"));
@ -1135,7 +1133,7 @@ static void Swig_name_object_attach_keys(const char *keys[], Hash *nameobj) {
} }
} }
void Swig_name_nameobj_add(Hash *name_hash, List *name_list, String *prefix, String *name, SwigType *decl, Hash *nameobj) { static void name_nameobj_add(Hash *name_hash, List *name_list, String *prefix, String *name, SwigType *decl, Hash *nameobj) {
String *nname = 0; String *nname = 0;
if (name && Len(name)) { if (name && Len(name)) {
String *target_fmt = Getattr(nameobj, "targetfmt"); String *target_fmt = Getattr(nameobj, "targetfmt");
@ -1164,13 +1162,13 @@ void Swig_name_nameobj_add(Hash *name_hash, List *name_list, String *prefix, Str
} }
/* ----------------------------------------------------------------------------- /* -----------------------------------------------------------------------------
* int Swig_name_match_nameobj() * int name_match_nameobj()
* *
* Apply and check the nameobj's math list to the node * Apply and check the nameobj's math list to the node
* *
* ----------------------------------------------------------------------------- */ * ----------------------------------------------------------------------------- */
static DOH *Swig_get_lattr(Node *n, List *lattr) { static DOH *get_lattr(Node *n, List *lattr) {
DOH *res = 0; DOH *res = 0;
int ilen = Len(lattr); int ilen = Len(lattr);
int i; int i;
@ -1192,7 +1190,7 @@ static DOH *Swig_get_lattr(Node *n, List *lattr) {
#ifdef HAVE_PCRE #ifdef HAVE_PCRE
#include <pcre.h> #include <pcre.h>
int Swig_name_regexmatch_value(Node *n, String *pattern, String *s) { static int name_regexmatch_value(Node *n, String *pattern, String *s) {
pcre *compiled_pat; pcre *compiled_pat;
const char *err; const char *err;
int errpos; int errpos;
@ -1224,7 +1222,7 @@ int Swig_name_regexmatch_value(Node *n, String *pattern, String *s) {
#else /* !HAVE_PCRE */ #else /* !HAVE_PCRE */
int Swig_name_regexmatch_value(Node *n, String *pattern, String *s) { static int name_regexmatch_value(Node *n, String *pattern, String *s) {
(void)pattern; (void)pattern;
(void)s; (void)s;
Swig_error("SWIG", Getline(n), Swig_error("SWIG", Getline(n),
@ -1234,7 +1232,7 @@ int Swig_name_regexmatch_value(Node *n, String *pattern, String *s) {
#endif /* HAVE_PCRE/!HAVE_PCRE */ #endif /* HAVE_PCRE/!HAVE_PCRE */
int Swig_name_match_value(String *mvalue, String *value) { static int name_match_value(String *mvalue, String *value) {
#if defined(SWIG_USE_SIMPLE_MATCHOR) #if defined(SWIG_USE_SIMPLE_MATCHOR)
int match = 0; int match = 0;
char *cvalue = Char(value); char *cvalue = Char(value);
@ -1260,12 +1258,11 @@ int Swig_name_match_value(String *mvalue, String *value) {
#endif #endif
} }
static int name_match_nameobj(Hash *rn, Node *n) {
int Swig_name_match_nameobj(Hash *rn, Node *n) {
int match = 1; int match = 1;
List *matchlist = Getattr(rn, "matchlist"); List *matchlist = Getattr(rn, "matchlist");
#ifdef SWIG_DEBUG #ifdef SWIG_DEBUG
Printf(stdout, "Swig_name_match_nameobj: %s\n", Getattr(n, "name")); Printf(stdout, "name_match_nameobj: %s\n", Getattr(n, "name"));
#endif #endif
if (matchlist) { if (matchlist) {
int ilen = Len(matchlist); int ilen = Len(matchlist);
@ -1273,14 +1270,14 @@ int Swig_name_match_nameobj(Hash *rn, Node *n) {
for (i = 0; match && (i < ilen); ++i) { for (i = 0; match && (i < ilen); ++i) {
Node *mi = Getitem(matchlist, i); Node *mi = Getitem(matchlist, i);
List *lattr = Getattr(mi, "attrlist"); List *lattr = Getattr(mi, "attrlist");
String *nval = Swig_get_lattr(n, lattr); String *nval = get_lattr(n, lattr);
int notmatch = GetFlag(mi, "notmatch"); int notmatch = GetFlag(mi, "notmatch");
int regexmatch = GetFlag(mi, "regexmatch"); int regexmatch = GetFlag(mi, "regexmatch");
match = 0; match = 0;
if (nval) { if (nval) {
String *kwval = Getattr(mi, "value"); String *kwval = Getattr(mi, "value");
match = regexmatch ? Swig_name_regexmatch_value(n, kwval, nval) match = regexmatch ? name_regexmatch_value(n, kwval, nval)
: Swig_name_match_value(kwval, nval); : name_match_value(kwval, nval);
#ifdef SWIG_DEBUG #ifdef SWIG_DEBUG
Printf(stdout, "val %s %s %d %d \n", nval, kwval, match, ilen); Printf(stdout, "val %s %s %d %d \n", nval, kwval, match, ilen);
#endif #endif
@ -1290,19 +1287,19 @@ int Swig_name_match_nameobj(Hash *rn, Node *n) {
} }
} }
#ifdef SWIG_DEBUG #ifdef SWIG_DEBUG
Printf(stdout, "Swig_name_match_nameobj: %d\n", match); Printf(stdout, "name_match_nameobj: %d\n", match);
#endif #endif
return match; return match;
} }
/* ----------------------------------------------------------------------------- /* -----------------------------------------------------------------------------
* Hash *Swig_name_nameobj_lget() * Hash *name_nameobj_lget()
* *
* Get a nameobj (rename/namewarn) from the list of filters * Get a nameobj (rename/namewarn) from the list of filters
* *
* ----------------------------------------------------------------------------- */ * ----------------------------------------------------------------------------- */
Hash *Swig_name_nameobj_lget(List *namelist, Node *n, String *prefix, String *name, String *decl) { static Hash *name_nameobj_lget(List *namelist, Node *n, String *prefix, String *name, String *decl) {
Hash *res = 0; Hash *res = 0;
if (namelist) { if (namelist) {
int len = Len(namelist); int len = Len(namelist);
@ -1313,7 +1310,7 @@ Hash *Swig_name_nameobj_lget(List *namelist, Node *n, String *prefix, String *na
String *rdecl = Getattr(rn, "decl"); String *rdecl = Getattr(rn, "decl");
if (rdecl && (!decl || !Equal(rdecl, decl))) { if (rdecl && (!decl || !Equal(rdecl, decl))) {
continue; continue;
} else if (Swig_name_match_nameobj(rn, n)) { } else if (name_match_nameobj(rn, n)) {
String *tname = Getattr(rn, "targetname"); String *tname = Getattr(rn, "targetname");
if (tname) { if (tname) {
String *sfmt = Getattr(rn, "sourcefmt"); String *sfmt = Getattr(rn, "sourcefmt");
@ -1336,8 +1333,8 @@ Hash *Swig_name_nameobj_lget(List *namelist, Node *n, String *prefix, String *na
DohIncref(name); DohIncref(name);
} }
} }
match = regextarget ? Swig_name_regexmatch_value(n, tname, sname) match = regextarget ? name_regexmatch_value(n, tname, sname)
: Swig_name_match_value(tname, sname); : name_match_value(tname, sname);
Delete(sname); Delete(sname);
} else { } else {
/* Applying the renaming rule may fail if it contains a %(regex)s expression that doesn't match the given name. */ /* Applying the renaming rule may fail if it contains a %(regex)s expression that doesn't match the given name. */
@ -1367,23 +1364,23 @@ Hash *Swig_name_nameobj_lget(List *namelist, Node *n, String *prefix, String *na
void Swig_name_namewarn_add(String *prefix, String *name, SwigType *decl, Hash *namewrn) { void Swig_name_namewarn_add(String *prefix, String *name, SwigType *decl, Hash *namewrn) {
const char *namewrn_keys[] = { "rename", "error", "fullname", "sourcefmt", "targetfmt", 0 }; const char *namewrn_keys[] = { "rename", "error", "fullname", "sourcefmt", "targetfmt", 0 };
Swig_name_object_attach_keys(namewrn_keys, namewrn); name_object_attach_keys(namewrn_keys, namewrn);
Swig_name_nameobj_add(Swig_name_namewarn_hash(), Swig_name_namewarn_list(), prefix, name, decl, namewrn); name_nameobj_add(name_namewarn_hash(), name_namewarn_list(), prefix, name, decl, namewrn);
} }
/* ----------------------------------------------------------------------------- /* -----------------------------------------------------------------------------
* Hash *Swig_name_namewarn_get() * Hash *name_namewarn_get()
* *
* Return the namewarn object, if there is one. * Return the namewarn object, if there is one.
* *
* ----------------------------------------------------------------------------- */ * ----------------------------------------------------------------------------- */
Hash *Swig_name_namewarn_get(Node *n, String *prefix, String *name, SwigType *decl) { static Hash *name_namewarn_get(Node *n, String *prefix, String *name, SwigType *decl) {
if (!namewarn_hash && !namewarn_list) if (!namewarn_hash && !namewarn_list)
return 0; return 0;
if (n) { if (n) {
/* Return in the obvious cases */ /* Return in the obvious cases */
if (!name || !Swig_need_name_warning(n)) { if (!name || !need_name_warning(n)) {
return 0; return 0;
} else { } else {
String *access = Getattr(n, "access"); String *access = Getattr(n, "access");
@ -1395,11 +1392,11 @@ Hash *Swig_name_namewarn_get(Node *n, String *prefix, String *name, SwigType *de
} }
if (name) { if (name) {
/* Check to see if the name is in the hash */ /* Check to see if the name is in the hash */
Hash *wrn = Swig_name_object_get(Swig_name_namewarn_hash(), prefix, name, decl); Hash *wrn = Swig_name_object_get(name_namewarn_hash(), prefix, name, decl);
if (wrn && !Swig_name_match_nameobj(wrn, n)) if (wrn && !name_match_nameobj(wrn, n))
wrn = 0; wrn = 0;
if (!wrn) { if (!wrn) {
wrn = Swig_name_nameobj_lget(Swig_name_namewarn_list(), n, prefix, name, decl); wrn = name_nameobj_lget(name_namewarn_list(), n, prefix, name, decl);
} }
if (wrn && Getattr(wrn, "error")) { if (wrn && Getattr(wrn, "error")) {
if (n) { if (n) {
@ -1422,7 +1419,7 @@ Hash *Swig_name_namewarn_get(Node *n, String *prefix, String *name, SwigType *de
* ----------------------------------------------------------------------------- */ * ----------------------------------------------------------------------------- */
String *Swig_name_warning(Node *n, String *prefix, String *name, SwigType *decl) { String *Swig_name_warning(Node *n, String *prefix, String *name, SwigType *decl) {
Hash *wrn = Swig_name_namewarn_get(n, prefix, name, decl); Hash *wrn = name_namewarn_get(n, prefix, name, decl);
return (name && wrn) ? Getattr(wrn, "name") : 0; return (name && wrn) ? Getattr(wrn, "name") : 0;
} }
@ -1434,7 +1431,7 @@ String *Swig_name_warning(Node *n, String *prefix, String *name, SwigType *decl)
* ----------------------------------------------------------------------------- */ * ----------------------------------------------------------------------------- */
static void single_rename_add(String *prefix, String *name, SwigType *decl, Hash *newname) { static void single_rename_add(String *prefix, String *name, SwigType *decl, Hash *newname) {
Swig_name_nameobj_add(Swig_name_rename_hash(), Swig_name_rename_list(), prefix, name, decl, newname); name_nameobj_add(name_rename_hash(), name_rename_list(), prefix, name, decl, newname);
} }
/* Add a new rename. Works much like new_feature including default argument handling. */ /* Add a new rename. Works much like new_feature including default argument handling. */
@ -1443,7 +1440,7 @@ void Swig_name_rename_add(String *prefix, String *name, SwigType *decl, Hash *ne
ParmList *declparms = declaratorparms; ParmList *declparms = declaratorparms;
const char *rename_keys[] = { "fullname", "sourcefmt", "targetfmt", "continue", "regextarget", 0 }; const char *rename_keys[] = { "fullname", "sourcefmt", "targetfmt", "continue", "regextarget", 0 };
Swig_name_object_attach_keys(rename_keys, newname); name_object_attach_keys(rename_keys, newname);
/* Add the name */ /* Add the name */
single_rename_add(prefix, name, decl, newname); single_rename_add(prefix, name, decl, newname);
@ -1556,11 +1553,10 @@ String *Swig_name_make(Node *n, String *prefix, const_String_or_char_ptr cname,
} }
} }
if (rename_hash || rename_list || namewarn_hash || namewarn_list) { if (rename_hash || rename_list || namewarn_hash || namewarn_list) {
Hash *rn = Swig_name_object_get(Swig_name_rename_hash(), prefix, name, decl); Hash *rn = Swig_name_object_get(name_rename_hash(), prefix, name, decl);
if (!rn || !Swig_name_match_nameobj(rn, n)) { if (!rn || !name_match_nameobj(rn, n)) {
rn = Swig_name_nameobj_lget(Swig_name_rename_list(), n, prefix, name, decl); rn = name_nameobj_lget(name_rename_list(), n, prefix, name, decl);
if (rn) { if (rn) {
String *sfmt = Getattr(rn, "sourcefmt"); String *sfmt = Getattr(rn, "sourcefmt");
int fullname = GetFlag(rn, "fullname"); int fullname = GetFlag(rn, "fullname");
@ -1596,7 +1592,7 @@ String *Swig_name_make(Node *n, String *prefix, const_String_or_char_ptr cname,
} }
} }
nname = result ? result : name; nname = result ? result : name;
wrn = Swig_name_namewarn_get(n, prefix, nname, decl); wrn = name_namewarn_get(n, prefix, nname, decl);
if (wrn) { if (wrn) {
String *rename = Getattr(wrn, "rename"); String *rename = Getattr(wrn, "rename");
if (rename) { if (rename) {
@ -1641,14 +1637,14 @@ String *Swig_name_make(Node *n, String *prefix, const_String_or_char_ptr cname,
/* ----------------------------------------------------------------------------- /* -----------------------------------------------------------------------------
* void Swig_name_inherit() * void Swig_name_inherit()
* *
* Inherit namewarn,rename, and feature objects * Inherit namewarn, rename, and feature objects
* *
* ----------------------------------------------------------------------------- */ * ----------------------------------------------------------------------------- */
void Swig_name_inherit(String *base, String *derived) { void Swig_name_inherit(String *base, String *derived) {
/* Printf(stdout,"base = '%s', derived = '%s'\n", base, derived); */ /* Printf(stdout,"base = '%s', derived = '%s'\n", base, derived); */
Swig_name_object_inherit(Swig_name_rename_hash(), base, derived); Swig_name_object_inherit(name_rename_hash(), base, derived);
Swig_name_object_inherit(Swig_name_namewarn_hash(), base, derived); Swig_name_object_inherit(name_namewarn_hash(), base, derived);
Swig_name_object_inherit(Swig_cparse_features(), base, derived); Swig_name_object_inherit(Swig_cparse_features(), base, derived);
} }

View file

@ -283,13 +283,11 @@ extern int ParmList_is_compactdefargs(ParmList *p);
extern void Swig_naming_init(void); extern void Swig_naming_init(void);
extern void Swig_name_namewarn_add(String *prefix, String *name, SwigType *decl, Hash *namewrn); extern void Swig_name_namewarn_add(String *prefix, String *name, SwigType *decl, Hash *namewrn);
extern Hash *Swig_name_namewarn_get(Node *n, String *prefix, String *name, SwigType *decl);
extern void Swig_name_rename_add(String *prefix, String *name, SwigType *decl, Hash *namewrn, ParmList *declaratorparms); extern void Swig_name_rename_add(String *prefix, String *name, SwigType *decl, Hash *namewrn, ParmList *declaratorparms);
extern void Swig_name_inherit(String *base, String *derived); extern void Swig_name_inherit(String *base, String *derived);
extern List *Swig_make_inherit_list(String *clsname, List *names, String *Namespaceprefix); extern List *Swig_make_inherit_list(String *clsname, List *names, String *Namespaceprefix);
extern void Swig_inherit_base_symbols(List *bases); extern void Swig_inherit_base_symbols(List *bases);
extern int Swig_need_protected(Node *n); extern int Swig_need_protected(Node *n);
extern int Swig_need_name_warning(Node *n);
extern int Swig_need_redefined_warn(Node *a, Node *b, int InClass); extern int Swig_need_redefined_warn(Node *a, Node *b, int InClass);
extern String *Swig_name_make(Node *n, String *prefix, const_String_or_char_ptr cname, SwigType *decl, String *oldname); extern String *Swig_name_make(Node *n, String *prefix, const_String_or_char_ptr cname, SwigType *decl, String *oldname);