Пример #1
0
void objc_register_all_classes(struct objc_abi_symtab* symtab) {
    uint_fast32_t i;

    for (i = 0; i < symtab->cls_def_cnt; i++) {
        struct objc_abi_class* cls = (struct objc_abi_class*)symtab->defs[i];

        register_class(cls);
        register_selectors(cls);
        register_selectors((struct objc_abi_class*)object_getClass((id)cls));
    }

    for (i = 0; i < symtab->cls_def_cnt; i++) {
        Class cls = (Class)symtab->defs[i];

        if (has_load(cls)) {
            setup_class(cls);

            if (cls->info & OBJC_CLASS_INFO_SETUP)
                call_load(cls);
            else {
                if (load_queue == NULL)
                    load_queue = malloc(sizeof(Class));
                else
                    load_queue = realloc(load_queue, sizeof(Class) * (load_queue_cnt + 1));

                if (load_queue == NULL)
                    OBJC_ERROR(
                        "Not enough memory for load "
                        "queue!");

                load_queue[load_queue_cnt++] = cls;
            }
        } else
            cls->info |= OBJC_CLASS_INFO_LOADED;
    }

    /* Process load queue */
    for (i = 0; i < load_queue_cnt; i++) {
        setup_class(load_queue[i]);

        if (load_queue[i]->info & OBJC_CLASS_INFO_SETUP) {
            call_load(load_queue[i]);

            load_queue_cnt--;

            if (load_queue_cnt == 0) {
                free(load_queue);
                load_queue = NULL;
                continue;
            }

            load_queue[i] = load_queue[load_queue_cnt];

            load_queue = realloc(load_queue, sizeof(Class) * load_queue_cnt);

            if (load_queue == NULL)
                OBJC_ERROR("Not enough memory for load queue!");
        }
    }
}
Пример #2
0
bool legacy_image_device_base::finish_load()
{
    bool err = IMAGE_INIT_PASS;

    if (m_is_loading)
    {
		image_checkhash();

        if (has_been_created() && m_config.get_legacy_config_fct(DEVINFO_FCT_IMAGE_CREATE)!=NULL)
        {
            err = call_create(m_create_format, m_create_args);
            if (err)
            {
                if (!m_err)
                    m_err = IMAGE_ERROR_UNSPECIFIED;
            }
        }
        else
        {
            /* using device load */
            err = call_load();
            if (err)
            {
                if (!m_err)
                    m_err = IMAGE_ERROR_UNSPECIFIED;
            }
        }
    }
    m_is_loading = FALSE;
    m_create_format = 0;
    m_create_args = NULL;
	m_init_phase = FALSE;
    return err;
}
Пример #3
0
image_init_result device_image_interface::finish_load()
{
	image_init_result err = image_init_result::PASS;

	if (m_is_loading)
	{
		image_checkhash();

		if (m_created)
		{
			err = call_create(m_create_format, m_create_args);
			if (err != image_init_result::PASS)
			{
				if (!m_err)
					m_err = IMAGE_ERROR_UNSPECIFIED;
			}
		}
		else
		{
			// using device load
			err = call_load();
			if (err != image_init_result::PASS)
			{
				if (!m_err)
					m_err = IMAGE_ERROR_UNSPECIFIED;
			}
		}
	}
	m_is_loading = false;
	m_create_format = 0;
	m_create_args = nullptr;
	m_init_phase = false;
	return err;
}
Пример #4
0
bool device_image_interface::finish_load()
{
	bool err = IMAGE_INIT_PASS;

	if (m_is_loading)
	{
		image_checkhash();

		if (has_been_created())
		{
			err = call_create(m_create_format, m_create_args);
			if (err)
			{
				if (!m_err)
					m_err = IMAGE_ERROR_UNSPECIFIED;
			}
		}
		else
		{
			/* using device load */
			err = call_load();
			if (err)
			{
				if (!m_err)
					m_err = IMAGE_ERROR_UNSPECIFIED;
			}
		}
	}
	m_is_loading = FALSE;
	m_create_format = 0;
	m_create_args = NULL;
	m_init_phase = FALSE;
	return err;
}
Пример #5
0
/* Load the main library */
void load_main(interp_core_type *interp) {
    object_type *result=0;
    
    result=call_load(interp, "lib/main.scm");

    /* this is not a good test */
    if(result!=true) {
	fail("There was a problem loading system libraries");
    }
}
Пример #6
0
static void call_load(Class cls) {
    if (cls->info & OBJC_CLASS_INFO_LOADED)
        return;

    if (cls->superclass != Nil)
        call_load(cls->superclass);

    call_method(cls, "load");

    cls->info |= OBJC_CLASS_INFO_LOADED;
}
Пример #7
0
/* execution of a top-level program */
void top_level_program(interp_core_type *interp, char* filename) {
    object_type *result=0;
    
    load_main(interp);
    
    result=call_load(interp, filename);
    
    if(interp->error==1) {
	fprintf(stderr, "There was an error executing script\n");
	exit(-1);
    }
}
Пример #8
0
void main(void)
{

    if (!file_walk(CALL_L0, "/bin/fudge"))
        return;

    if (!file_walk(CALL_L1, "/mod/"))
        return;

    file_open(CALL_PI);
    file_open(CALL_L0);

    if (resolve(CALL_PI))
        call_load(CALL_PI);

    file_close(CALL_L0);
    file_close(CALL_PI);

}
Пример #9
0
bool device_image_interface::finish_load()
{
    bool err = IMAGE_INIT_PASS;

    if (m_is_loading)
    {
		image_checkhash();

		if (m_from_swlist)
			call_display_info();

		if (has_been_created() )// && get_legacy_fct(DEVINFO_FCT_IMAGE_CREATE) != NULL)
        {
            err = call_create(m_create_format, m_create_args);
            if (err)
            {
                if (!m_err)
                    m_err = IMAGE_ERROR_UNSPECIFIED;
            }
        }
        else
        {
            /* using device load */
            err = call_load();
            if (err)
            {
                if (!m_err)
                    m_err = IMAGE_ERROR_UNSPECIFIED;
            }
        }
    }
    m_is_loading = FALSE;
    m_create_format = 0;
    m_create_args = NULL;
	m_init_phase = FALSE;
    return err;
}
Пример #10
0
bool cassette_image_device::call_create(int format_type, option_resolution *format_options)
{
	return call_load();
}
Пример #11
0
image_init_result printer_image_device::call_create(int format_type, util::option_resolution *format_options)
{
	return call_load();
}