String ErrorSubSystem::get_location(const SuifObject *obj) const {
  if (obj == NULL) return emptyString;
  LString style = get_default_location_module();
  if (style == emptyLString) {
    return(obj->getClassName());
  }

  ModuleSubSystem *ms = get_suif_env()->get_module_subsystem();
  Module *module = ms->retrieve_module(style);
  LString location_iface = "get_object_location";
  if (!module->supports_interface(location_iface))
    {
      return(obj->getClassName());
    }
  LocationDispatch pfunc = 
    (LocationDispatch)module->get_interface(location_iface);
  //TODO:
#ifdef MSVC
  if((int)pfunc==0x1)pfunc=NULL;
#endif
  if (pfunc)
    {
      return ((*pfunc)(obj).print_to_string());
    }
  else
    {
      //      cerr << "installed location style" 
      //      	     << style.c_str() << "has no valid print function" << endl;
      return(obj->getClassName());
    }
}
Exemple #2
0
String to_cstring(const SuifObject *obj) {
	if (obj == NULL) return("(nil)");
	SuifEnv* suif_env = obj->get_suif_env();
	ModuleSubSystem *ms = suif_env->get_module_subsystem();
    CPrintStyleModule* cprint = (CPrintStyleModule*)
        ms->retrieve_module("cprint");
	suif_assert_message(cprint, ("CPrintStyleModule is not loaded"));
    return cprint->print_to_string(obj);
}
Exemple #3
0
extern "C" void EXPORT init_print_styles(SuifEnv* suif)
{
  suif->require_module("basicnodes");
  suif->require_module("suifnodes");

  ModuleSubSystem* mSubSystem = suif->get_module_subsystem();
  if (!mSubSystem->retrieve_module(CPrintStyleModule::get_class_name())) {
    Module *m = new CPrintStyleModule(suif);
    mSubSystem -> register_module(m);
    //suif->get_print_subsystem()->set_default_print_style(m->get_module_name());
  }
}
Exemple #4
0
extern "C" void init_s2c(SuifEnv *suif_env) {
  suif_env->require_module("suifnodes");
  suif_env->require_module("cfenodes");
  suif_env->require_module("suifpasses");

  ModuleSubSystem* mSubSystem = suif_env->get_module_subsystem();
  if (!mSubSystem->retrieve_module("s2c")) {
    mSubSystem -> register_module( new S2CPass( suif_env ) );
    }

  
}
Exemple #5
0
extern "C" void init_vtblpass( SuifEnv* suif )
{
    initialize_libraries( suif );

    ModuleSubSystem *mss = suif->get_module_subsystem();

    if ( !mss->retrieve_module("build_single_inheritance_vtbl") ) {
        mss->register_module(new VtblPass( suif ) );
        mss->register_module(new VtblAnnotePass( suif ) );
        mss->register_module(new VtblSlotAnnotePass( suif ) );
        mss->register_module(new VtblSlotCountAnnotePass( suif ) );
        mss->register_module(new InstanceMethodCallStatementLoweringPass( suif ) );
        mss->register_module(new InstanceMethodCallExpressionLoweringPass( suif ) );
    }
}
Exemple #6
0
//----------------------------------------------------------------------------
extern "C" void EXPORT init_suifprinter(SuifEnv* suif)
{
  suif->require_module("suifpasses");
  // These are needed by the cprint style
  suif->require_module("basicnodes");
  suif->require_module("suifnodes");

  ModuleSubSystem* mSubSystem = suif->get_module_subsystem();
  if (!mSubSystem->retrieve_module(SuifPrinterModule::ClassName)) {
    Module *m = new SuifPrinterModule(suif);
    mSubSystem -> register_module(m);
    suif->get_print_subsystem()->set_default_print_style(m->get_module_name());

    m = new CPrintStyleModule(suif);
    mSubSystem -> register_module(m);
    init_suifprinter_extras(suif);

    m = new IdPrinter(suif);
    mSubSystem -> register_module(m);

    m = new MCPrintStyleModule(suif);
    mSubSystem -> register_module(m);
  }
}