git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@7698 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Marcelo Matus 2005-10-20 15:42:48 +00:00
commit a2ee7e332d
2 changed files with 26 additions and 10 deletions

View file

@ -51,4 +51,17 @@
// declaration: // declaration:
// using A::get_a; // using A::get_a;
}; };
class IndexReader{
public:
virtual void norms() = 0;
};
class MultiReader : public IndexReader {
protected:
MultiReader();
};
%} %}

View file

@ -310,7 +310,9 @@ class Allocate : public Dispatcher {
} }
List *abstract = Getattr(base,"abstract"); List *abstract = Getattr(base,"abstract");
if (abstract) { if (abstract) {
for (int i = 0; i < Len(abstract); i++) { int dabstract = 0;
int len = Len(abstract);
for (int i = 0; i < len; i++) {
Node *nn = Getitem(abstract,i); Node *nn = Getitem(abstract,i);
String *name = Getattr(nn,"name"); String *name = Getattr(nn,"name");
if (!name) continue; if (!name) continue;
@ -326,17 +328,19 @@ class Allocate : public Dispatcher {
Delete(base_decl); Delete(base_decl);
if (!dn) { if (!dn) {
List *abstract = Getattr(n,"abstract"); List *nabstract = Getattr(n,"abstract");
if (!abstract) { if (!nabstract) {
abstract = NewList(); nabstract = NewList();
Setattr(n,"abstract",abstract); Setattr(n,"abstract",nabstract);
} else {
if (!Getattr(n,"abstract:firstnode"))
Setattr(n,"abstract:firstnode",nn);
} }
Append(abstract,nn); Append(nabstract,nn);
if (!Getattr(n,"abstract:firstnode")) {
Setattr(n,"abstract:firstnode",nn);
}
dabstract = base != n;
} }
} }
if (dabstract) return 1;
} }
List *bases = Getattr(base,"allbases"); List *bases = Getattr(base,"allbases");
if (!bases) return 0; if (!bases) return 0;
@ -537,7 +541,6 @@ public:
/* Check if the class is abstract via inheritance. This might occur if a class didn't have /* Check if the class is abstract via inheritance. This might occur if a class didn't have
any pure virtual methods of its own, but it didn't implement all of the pure methods in any pure virtual methods of its own, but it didn't implement all of the pure methods in
a base class */ a base class */
if (!Getattr(n,"abstract") && is_abstract_inherit(n)) { if (!Getattr(n,"abstract") && is_abstract_inherit(n)) {
if (((Getattr(n,"allocate:public_constructor") || (!GetFlag(n,"feature:nodefault") && !Getattr(n,"allocate:has_constructor"))))) { if (((Getattr(n,"allocate:public_constructor") || (!GetFlag(n,"feature:nodefault") && !Getattr(n,"allocate:has_constructor"))))) {
if (!GetFlag(n,"feature:notabstract")) { if (!GetFlag(n,"feature:notabstract")) {