Beispiel #1
0
bool SchurPrecond<TAlgebra>::
preprocess(SmartPtr<MatrixOperator<matrix_type, vector_type> > A)
{
	try{
//	status
	UG_DLOG(SchurDebug, 2, "\n% Initializing SCHUR precond: \n");

	m_pA = A;
	if(check_requirements() == false)
		return false;

//	Determine slicing for SchurComplementOperator
	std::vector<slice_desc_type> skeletonMark;
	get_skeleton_slicing(A, skeletonMark);

//	create & init local Schur complement object

	if(create_and_init_local_schur_complement(A, skeletonMark) == false)
		return false;

//  configure schur complement solver
	init_skeleton_solver();

//	status
	UG_DLOG(SchurDebug, 1, "\n% 'SchurPrecond::init()' done!\n");

//	we're done
	return true;

	}UG_CATCH_THROW("SchurPrecond::" << __FUNCTION__ << " failed");
	return false;
} /* end 'SchurPrecond::preprocess()' */
Beispiel #2
0
//--------------------------------------------------------------------------------------------------
void check_requirements(
    Node *n
) {
    if(n == NIL) {
        return;
    }
    if(n->color == RED) {
        check(n->left->color == BLACK, "check_requirements: n->left->color != BLACK");
        check(n->right->color == BLACK, "check_requirements: n->right->color != BLACK");
        check(n->parent->color == BLACK, "check_requirements: n->parent->color != BLACK");
    }
    check_requirements(n->left);
    check_requirements(n->right);

error:
    return;

}
Beispiel #3
0
int main(int argc, char *argv[])
{
	char *dev, errbuf[PCAP_ERRBUF_SIZE];
	pcap_t *handle;

	print_app_banner();
	check_requirements();
	init_pcap();
	return(0);
}
int create_live_local_session(char **session_path, char **session_name, int print)
{
	int ret;
	char *name;
	int sudo = 0;

	ret = check_requirements(&sudo);

	name = random_session_name();
	if (!name) {
		ret = -1;
		goto end;
	}

	ret = check_session_name(name, sudo);
	if (ret < 0) {
		goto end_free;
	}

	ret = live_local_session(name, sudo);
	if (ret < 0) {
		goto end_free;
	}

	ret = enable_events(name, sudo);
	if (ret < 0) {
		goto end_free;
	}

	ret = add_contexts(name, sudo);
	if (ret < 0) {
		goto end_free;
	}

	ret = start(name, sudo, 0, print);
	if (ret < 0) {
		goto end_free;
	}

	if (session_path)
		*session_path = live_path(name);
	if (session_name) {
		*session_name = name;
		goto end;
	}

end_free:
	free(name);
end:
	return ret;
}
int create_local_session()
{
	int ret;
	char *name;
	int sudo = 0;

	ret = check_requirements(&sudo);

	name = random_session_name();
	if (!name) {
		ret = -1;
		goto end;
	}

	ret = check_session_name(name, sudo);
	if (ret < 0) {
		goto end_free;
	}

	ret = local_session(name, sudo);
	if (ret < 0) {
		goto end_free;
	}

	ret = enable_events(name, sudo);
	if (ret < 0) {
		goto end_free;
	}

	ret = add_contexts(name, sudo);
	if (ret < 0) {
		goto end_free;
	}

	ret = start(name, sudo, 1, 1);
	if (ret < 0) {
		goto end_free;
	}

end_free:
	free(name);
end:
	return ret;
}
Beispiel #6
0
int main (int argc, char *argv[])
{
	setlocale (LC_ALL, "");
	bindtextdomain (PACKAGE, LOCALEDIR);
	textdomain (PACKAGE);

	signal (SIGCHLD, on_sigchld);
	
	gtk_init (&argc, &argv);
	gconf_client = gconf_client_get_default ();

	gconf_client_add_dir (gconf_client, CONF_DIR, GCONF_CLIENT_PRELOAD_NONE, NULL);
	gconf_client_notify_add (gconf_client, CONF_STASHES, on_change_conf_stashes, NULL, NULL, NULL);

	read_config ();

	check_requirements ();

	// festering mount points
	std::vector<CryptPoint>::iterator it;
	for (it = cryptPoints.begin (); it != cryptPoints.end (); ++it) {
		if (!config_keep_mountpoints) rmdir ((*it).GetMountDir ());
	}

	sico = gtk_status_icon_new_from_stock (GTK_STOCK_DIALOG_AUTHENTICATION);

	g_signal_connect(G_OBJECT(sico), "activate", G_CALLBACK(sico_activated), NULL);
	g_signal_connect(G_OBJECT(sico), "popup-menu", G_CALLBACK(sico_right_button_activated), NULL);

	create_stash_wizard = new CreateStashWizard ();
	import_stash_wizard = new ImportStashWizard ();
	config_dialog = new ConfigDialog ();

	gtk_main ();
	
	return 0;
}
Beispiel #7
0
void insert(
    const char *name
) {
    debug("Insert node: %s", name);

    // Is name exceeding MAX_NAME_LENGTH chars?
    unsigned int len = strlen(name);
    // MAX_NAME_LENGTH is 59 bytes+'\0'
    check(len<MAX_NAME_LENGTH, "Insert: Name exceeds maximal length."); 

    // Allocate and initialize a new node
    Node *n = malloc(sizeof(Node));
    check_mem(n);
    n->parent = NULL; n->left = NIL; n->right = NIL; n->color = RED;
    strncpy(n->name, name, len);
    n->name[len] = '\0';
    
    if(root == NULL) {
		ins_count = 0;
		dbl_count = 0;
		del_count = 0;
        root = n;
    } else {
        // if already exsits skip
        if(find_by_name(n->name)) {
            debug("Insert node: %salready exists", n->name);
			dbl_count++;
            free(n);
            return;
        }
        // search for the proper place to include the node
        Node *current = root;
        while (1) {
    //        debug("Cmp %s with %s", n->name, current->name);
            int res = strcmp(n->name, current->name);
            if(res < 0) {
                if(current->left == NIL) {
                    current->left = n;
                    n->parent = current;
                    break;
                } else {
                    current = current->left;
                }
            } else if(res > 0) {
                if(current->right == NIL) {
                    current->right = n;
                    n->parent = current;
                    break;
                } else {
                    current = current->right;
                }
            }
        }	
    }


    // ensure red black tree properties
    fix_rb_tree(n);

	ins_count++;
	debug("Insert Counter: %d\n", ins_count);
    // check for properties
    check_requirements(root);

error:
    return;
}