Fl

 view release on metacpan or  search on metacpan

xs/Fl_ext.cxx  view on Meta::CPAN

#include "include/Fl_pm.h"

#include <FL/Fl_Box.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Chart.H>
#include <FL/Fl_Check_Button.H>
#include <FL/Fl_Group.H>
#include <FL/Fl_Light_Button.H>
#include <FL/Fl_Radio_Button.H>
#include <FL/Fl_Radio_Light_Button.H>
#include <FL/Fl_Radio_Round_Button.H>
#include <FL/Fl_Repeat_Button.H>
#include <FL/Fl_Return_Button.H>
#include <FL/Fl_Round_Button.H>
#include <FL/Fl_Toggle_Button.H>
#include <FL/Fl_Widget.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Input.H>
#include <FL/Fl_Secret_Input.H>
#include <FL/Fl_Float_Input.H>
#include <FL/Fl_Int_Input.H>
#include <FL/Fl_Multiline_Input.H>
#include <FL/Fl_Menu_Item.H>
#include <FL/Fl_Input_Choice.H>
#include <FL/Fl_Menu_Button.H>
#include <FL/Fl_Scrollbar.H>

void         _cache( const char * ptr, const char * cls );
void         _cache( void       * ptr, const char * cls );
const char * _cache( const char * ptr );
const char * _cache( void       * ptr );
void  _delete_cache( void       * ptr );
void  _delete_cache( const char * ptr );

const char * object2package (CTX * w) {
     return object2package(w->cp_ctx);
}

const char * object2package (WidgetSubclass<Fl_Widget> * w) {
     return object2package(w);
}

const char * object2package (Fl_Widget * w) {
     const char * package;
     package = _cache((void *) w);
     if (package != NULL && package[0] != '\0')
          return package;

     /*Remember to add _most_ specific classes first*/
     package = "Fl::Widget";
/*
     const char * user_data = (const char *) w->user_data();

if (user_data != NULL && user_data[0] != '\0') {
     return user_data;
}

     if (dynamic_cast<WidgetSubclass<Fl_Box> *>(w)) {
          return w->user_data(); // See cheat in Fl_pm.h
     }
*/
          if ( dynamic_cast<Fl_Box                  *>(w) ) { package = "Fl::Box";    }
     else if ( dynamic_cast<Fl_Check_Button         *>(w) ) { package = "Fl::CheckButton"; }
     else if ( dynamic_cast<Fl_Radio_Round_Button   *>(w) ) { package = "Fl::RadioRoundButton"; }
     else if ( dynamic_cast<Fl_Round_Button         *>(w) ) { package = "Fl::RoundButton"; }
     else if ( dynamic_cast<Fl_Radio_Light_Button   *>(w) ) { package = "Fl::RadioLightButton"; }
     else if ( dynamic_cast<Fl_Light_Button         *>(w) ) { package = "Fl::LightButton"; }
     else if ( dynamic_cast<Fl_Return_Button        *>(w) ) { package = "Fl::ReturnButton"; }
     else if ( dynamic_cast<Fl_Repeat_Button        *>(w) ) { package = "Fl::RepeatButton"; }
     else if ( dynamic_cast<Fl_Radio_Button         *>(w) ) { package = "Fl::RadioButton"; }
     else if ( dynamic_cast<Fl_Toggle_Button        *>(w) ) { package = "Fl::ToggleButton"; }
     else if ( dynamic_cast<Fl_Button               *>(w) ) { package = "Fl::Button"; }
     else if ( dynamic_cast<Fl_Window               *>(w) ) { package = "Fl::Window"; }
     else if ( dynamic_cast<Fl_Group                *>(w) ) { package = "Fl::Group";  }
     else if ( dynamic_cast<Fl_Chart                *>(w) ) { package = "Fl::Chart";  }

     else if ( dynamic_cast<Fl_Multiline_Input      *>(w) ) { package = "Fl::MultilineInput";  }
     else if ( dynamic_cast<Fl_Int_Input            *>(w) ) { package = "Fl::IntInput";  }
     else if ( dynamic_cast<Fl_Float_Input          *>(w) ) { package = "Fl::FloatInput";  }
     else if ( dynamic_cast<Fl_Secret_Input         *>(w) ) { package = "Fl::SecretInput";  }
     else if ( dynamic_cast<Fl_Input                *>(w) ) { package = "Fl::Input";  }
     else if ( dynamic_cast<      Fl_Menu_Item      *>(w) ||
               dynamic_cast<const Fl_Menu_Item      *>(w) ) { package = "Fl::MenuItem";  }
     else if ( dynamic_cast<Fl_Input_Choice         *>(w) ) { package = "Fl::InputChoice";  }
     else if ( dynamic_cast<Fl_Menu_Button          *>(w) ) { package = "Fl::MenuButton";  }
     else if ( dynamic_cast<Fl_Scrollbar            *>(w) ) { package = "Fl::Scrollbar";  }

     return package;
}



( run in 1.186 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )