summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBill Spitzak <spitzak@gmail.com>2000-02-05 09:20:46 +0000
committerBill Spitzak <spitzak@gmail.com>2000-02-05 09:20:46 +0000
commit7482800177743f80d790e74e0baea49192eb6be4 (patch)
tree2ba6b205d520c4da6d07adade22ba14150c7277b
parent1e5596293b39e64adcffe45a0bb4b6fcd4a1df13 (diff)
Produces correct destructor for nested classes, patch from Alexandr Shevtsow
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.0@999 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
-rw-r--r--fluid/Fl_Function_Type.cxx13
-rw-r--r--fluid/Fl_Menu_Type.cxx16
-rw-r--r--fluid/Fl_Type.h6
-rw-r--r--fluid/Fl_Widget_Type.cxx18
4 files changed, 27 insertions, 26 deletions
diff --git a/fluid/Fl_Function_Type.cxx b/fluid/Fl_Function_Type.cxx
index a3225a076..290f7389b 100644
--- a/fluid/Fl_Function_Type.cxx
+++ b/fluid/Fl_Function_Type.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Function_Type.cxx,v 1.15.2.11 2000/01/05 03:17:26 bill Exp $"
+// "$Id: Fl_Function_Type.cxx,v 1.15.2.12 2000/02/05 09:20:44 bill Exp $"
//
// C function type code for the Fast Light Tool Kit (FLTK).
//
@@ -216,7 +216,7 @@ void Fl_Function_Type::write_code1() {
} else rtype = "void";
}
- const char* k = class_name();
+ const char* k = class_name(0);
if (k) {
write_public(public_);
if (name()[0] == '~')
@@ -468,7 +468,7 @@ void Fl_Decl_Type::write_code1() {
// lose all trailing semicolons so I can add one:
const char* e = c+strlen(c);
while (e>c && e[-1]==';') e--;
- if (class_name()) {
+ if (class_name(1)) {
write_public(public_);
write_h(" %.*s;\n", e-c, c);
} else {
@@ -554,13 +554,14 @@ void Fl_DeclBlock_Type::write_code2() {
////////////////////////////////////////////////////////////////
-const char* Fl_Type::class_name() const {
+const char* Fl_Type::class_name(const int need_nest) const {
Fl_Type* p = parent;
while (p) {
if (p->is_class()) {
// see if we are nested in another class, we must fully-qualify name:
// this is lame but works...
- const char* q = p->class_name();
+ const char* q = 0;
+ if(need_nest) q=p->class_name(need_nest);
if (q) {
static char buffer[256];
if (q != buffer) strcpy(buffer, q);
@@ -664,5 +665,5 @@ void Fl_Class_Type::write_code2() {
}
//
-// End of "$Id: Fl_Function_Type.cxx,v 1.15.2.11 2000/01/05 03:17:26 bill Exp $".
+// End of "$Id: Fl_Function_Type.cxx,v 1.15.2.12 2000/02/05 09:20:44 bill Exp $".
//
diff --git a/fluid/Fl_Menu_Type.cxx b/fluid/Fl_Menu_Type.cxx
index fe71853ac..cdf4c4946 100644
--- a/fluid/Fl_Menu_Type.cxx
+++ b/fluid/Fl_Menu_Type.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Menu_Type.cxx,v 1.16.2.4 1999/08/09 13:53:54 mike Exp $"
+// "$Id: Fl_Menu_Type.cxx,v 1.16.2.5 2000/02/05 09:20:45 bill Exp $"
//
// Menu item code for the Fast Light Tool Kit (FLTK).
//
@@ -132,7 +132,7 @@ void Fl_Menu_Item_Type::write_static() {
while (*d && !is_id(*d)) d++;
}
const char* cn = callback_name();
- const char* k = class_name();
+ const char* k = class_name(1);
if (k) {
write_c("\ninline void %s::%s_i(Fl_Menu_*", k, cn);
} else {
@@ -163,7 +163,7 @@ void Fl_Menu_Item_Type::write_static() {
// okay, when we hit last item in the menu we have to write the
// entire array out:
int level;
- const char* k = class_name();
+ const char* k = class_name(1);
if (k) {
write_c("\nFl_Menu_Item %s::%s[] = {\n", k, menu_name(level));
} else
@@ -216,7 +216,7 @@ void Fl_Menu_Item_Type::write_item() {
else
write_c(", 0, ");
if (callback()) {
- const char* k = is_name(callback()) ? 0 : class_name();
+ const char* k = is_name(callback()) ? 0 : class_name(1);
if (k) {
write_c(" (Fl_Callback*)%s::%s,", k, callback_name());
} else {
@@ -237,7 +237,7 @@ void Fl_Menu_Item_Type::write_code1() {
int i; const char* name = menu_name(i);
if (!prev->is_menu_item()) {
// for first menu item, declare the array
- if (class_name())
+ if (class_name(1))
write_h(" static Fl_Menu_Item %s[];\n", name);
else
write_h("extern Fl_Menu_Item %s[];\n", name);
@@ -245,7 +245,7 @@ void Fl_Menu_Item_Type::write_code1() {
const char *c = array_name(this);
if (c) {
- if (class_name()) {
+ if (class_name(1)) {
write_public(public_);
write_h(" static Fl_Menu_Item *%s;\n", c);
} else
@@ -253,7 +253,7 @@ void Fl_Menu_Item_Type::write_code1() {
}
if (callback()) {
- if (!is_name(callback()) && class_name()) {
+ if (!is_name(callback()) && class_name(1)) {
const char* cn = callback_name();
const char* ut = user_data_type() ? user_data_type() : "void*";
write_public(0);
@@ -439,5 +439,5 @@ void shortcut_in_cb(Shortcut_Button* i, void* v) {
}
//
-// End of "$Id: Fl_Menu_Type.cxx,v 1.16.2.4 1999/08/09 13:53:54 mike Exp $".
+// End of "$Id: Fl_Menu_Type.cxx,v 1.16.2.5 2000/02/05 09:20:45 bill Exp $".
//
diff --git a/fluid/Fl_Type.h b/fluid/Fl_Type.h
index ca3df08b1..1aa63951f 100644
--- a/fluid/Fl_Type.h
+++ b/fluid/Fl_Type.h
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Type.h,v 1.5.2.5 1999/09/10 16:40:17 bill Exp $"
+// "$Id: Fl_Type.h,v 1.5.2.6 2000/02/05 09:20:46 bill Exp $"
//
// Widget type header file for the Fast Light Tool Kit (FLTK).
//
@@ -123,7 +123,7 @@ public:
virtual int is_decl_block() const;
virtual int is_class() const;
- const char* class_name() const;
+ const char* class_name(const int need_nest) const;
};
class Fl_Function_Type : public Fl_Type {
@@ -528,5 +528,5 @@ int storestring(const char *n, const char * & p, int nostrip=0);
extern int include_H_from_C;
//
-// End of "$Id: Fl_Type.h,v 1.5.2.5 1999/09/10 16:40:17 bill Exp $".
+// End of "$Id: Fl_Type.h,v 1.5.2.6 2000/02/05 09:20:46 bill Exp $".
//
diff --git a/fluid/Fl_Widget_Type.cxx b/fluid/Fl_Widget_Type.cxx
index 121f1a222..128b2ca6f 100644
--- a/fluid/Fl_Widget_Type.cxx
+++ b/fluid/Fl_Widget_Type.cxx
@@ -1,5 +1,5 @@
//
-// "$Id: Fl_Widget_Type.cxx,v 1.15.2.8 1999/12/17 18:34:56 bill Exp $"
+// "$Id: Fl_Widget_Type.cxx,v 1.15.2.9 2000/02/05 09:20:46 bill Exp $"
//
// Widget type code for the Fast Light Tool Kit (FLTK).
//
@@ -1198,9 +1198,9 @@ const char *array_name(Fl_Widget_Type *o) {
int sawthis = 0;
Fl_Type *t = o->prev;
Fl_Type *tp = o;
- const char *cn = o->class_name();
- for (; t && t->class_name() == cn; tp = t, t = t->prev);
- for (t = tp; t && t->class_name() == cn; t = t->next) {
+ const char *cn = o->class_name(1);
+ for (; t && t->class_name(1) == cn; tp = t, t = t->prev);
+ for (t = tp; t && t->class_name(1) == cn; t = t->next) {
if (t == o) {sawthis=1; continue;}
const char *e = t->name();
if (!e) continue;
@@ -1234,7 +1234,7 @@ void Fl_Widget_Type::write_static() {
write_declare("extern void %s(%s*, %s);", callback(), t,
user_data_type() ? user_data_type() : "void*");
const char* c = array_name(this);
- const char* k = class_name();
+ const char* k = class_name(1);
if (c && !k) {
write_c("\n");
if (!public_) write_c("static ");
@@ -1293,12 +1293,12 @@ void Fl_Widget_Type::write_code1() {
const char* t = subclassname(this);
const char *c = array_name(this);
if (c) {
- if (class_name()) {
+ if (class_name(1)) {
write_public(public_);
write_h(" %s *%s;\n", t, c);
}
}
- if (class_name() && callback() && !is_name(callback())) {
+ if (class_name(1) && callback() && !is_name(callback())) {
const char* cn = callback_name();
const char* ut = user_data_type() ? user_data_type() : "void*";
write_public(0);
@@ -1399,7 +1399,7 @@ void Fl_Widget_Type::write_widget_code() {
if (c != fc) write_c("%so->textcolor(%d);\n",indent(), c);
}}
const char* ud = user_data();
- if (class_name() && !parent->is_widget()) ud = "this";
+ if (class_name(1) && !parent->is_widget()) ud = "this";
if (callback()) {
write_c("%so->callback((Fl_Callback*)%s", indent(), callback_name());
if (ud)
@@ -1746,5 +1746,5 @@ int Fl_Widget_Type::read_fdesign(const char* name, const char* value) {
}
//
-// End of "$Id: Fl_Widget_Type.cxx,v 1.15.2.8 1999/12/17 18:34:56 bill Exp $".
+// End of "$Id: Fl_Widget_Type.cxx,v 1.15.2.9 2000/02/05 09:20:46 bill Exp $".
//