add nomatch option

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@8190 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Marcelo Matus 2006-01-02 17:44:31 +00:00
commit a8afed097f
4 changed files with 24 additions and 11 deletions

View file

@ -993,12 +993,13 @@ static void Swig_name_object_attach_keys(const char *keys[], Hash *nameobj)
char *ckey = kname ? Char(kname) : 0;
if (ckey) {
const char **rkey;
if (strncmp(ckey,"match",5) == 0) {
if ((strncmp(ckey,"match",5) == 0) || (strncmp(ckey,"notmatch",8) == 0)) {
Hash *mi = NewHash();
List *attrlist = Swig_make_attrlist(ckey);
if (!matchlist) matchlist = NewList();
Setattr(mi,k_value,Getattr(kw,k_value));
Setattr(mi,k_attrlist,attrlist);
if (strncmp(ckey,"not",3) == 0) SetFlag(mi,k_notmatch);
Delete(attrlist);
Append(matchlist,mi);
Delete(mi);
@ -1077,11 +1078,13 @@ int Swig_name_match_nameobj(Hash *rn, Node *n) {
Node *kw = Getitem(matchlist,i);
List *lattr = Getattr(kw,k_attrlist);
String *nval = Swig_get_lattr(n,lattr);
int notmatch = GetFlag(kw,k_notmatch);
match = 0;
if (nval) {
String *kwval = Getattr(kw,k_value);
match = Equal(nval, kwval);
}
if (!notmatch) match = !match;
}
}
return match;

View file

@ -44,6 +44,7 @@ String *k_member = 0;
String *k_name = 0;
String *k_namespace = 0;
String *k_nodetype = 0;
String *k_notmatch = 0;
String *k_parent = 0;
String *k_parentnode = 0;
String *k_parm = 0;
@ -90,9 +91,9 @@ String *k_uname = 0;
String *k_using = 0;
String *k_value = 0;
String *k_virtual = 0;
String *k_wrapper = 0;
String *k_wrapaction = 0;
String *k_wrapdisown = 0;
String *k_wrapper = 0;
void Swig_keys_init() {
empty_string = NewString("");
@ -107,8 +108,8 @@ void Swig_keys_init() {
k_bases = NewString("bases");
k_cdecl = NewString("cdecl");
k_class = NewString("class");
k_classname = NewString("classname");
k_classforward = NewString("classforward");
k_classname = NewString("classname");
k_code = NewString("code");
k_coloncolon = NewString("::");
k_compactdefargs = NewString("compactdefargs");
@ -138,6 +139,7 @@ void Swig_keys_init() {
k_name = NewString("name");
k_namespace = NewString("namespace");
k_nodetype = NewString("nodeType");
k_notmatch = NewString("notmatch");
k_parent = NewString("parent");
k_parentnode = NewString("parentNode");
k_parm = NewString("parm");
@ -150,8 +152,8 @@ void Swig_keys_init() {
k_public = NewString("public");
k_qname = NewString("qname");
k_qualifier = NewString("qualifier");
k_result = NewString("result");
k_rename = NewString("rename");
k_result = NewString("result");
k_scope = NewString("scope");
k_self = NewString("self");
k_set = NewString("set");
@ -184,7 +186,7 @@ void Swig_keys_init() {
k_using = NewString("using");
k_value = NewString("value");
k_virtual = NewString("virtual");
k_wrapper = NewString("wrapper");
k_wrapaction = NewString("wrap:action");
k_wrapdisown = NewString("wrap:disown");
k_wrapper = NewString("wrapper");
}

View file

@ -49,6 +49,7 @@ extern String *k_member;
extern String *k_name;
extern String *k_namespace;
extern String *k_nodetype;
extern String *k_notmatch;
extern String *k_parent;
extern String *k_parentnode;
extern String *k_parm;
@ -60,8 +61,9 @@ extern String *k_privatebaselist;
extern String *k_protectedbaselist;
extern String *k_public;
extern String *k_qname;
extern String *k_result;
extern String *k_qualifier;
extern String *k_rename;
extern String *k_result;
extern String *k_scope;
extern String *k_self;
extern String *k_set;
@ -94,9 +96,8 @@ extern String *k_uname;
extern String *k_using;
extern String *k_value;
extern String *k_virtual;
extern String *k_wrapper;
extern String *k_wrapaction;
extern String *k_wrapdisown;
extern String *k_qualifier;
extern String *k_wrapper;
#endif /* __Swig_swigkeys_h__ */