blob: 69449cf2624157ea9187725f145a449484764e26 [file] [log] [blame]
/*************************************************************************
*
* PathFinder: finding a series of labeled nodes within a
* two-layer directed, cyclic graph.
* Copyright (2013) Sandia Corporation
*
* Copyright (2013) Sandia Corporation. Under the terms of Contract
* DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government
* retains certain rights in this software.
*
* This file is part of PathFinder.
*
* PathFinder is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* PathFinder is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PathFinder. If not, see <http://www.gnu.org/licenses/>.
*
* Questions? Contact J. Brian Rigdon (jbrigdo@sandia.gov)
*
*/
/*
* configuration.h
*
* Created on: October 1, 2013
* Author: Brian "Rig" Rigdon
*/
#ifndef CONFIGURATION_H_
#define CONFIGURATION_H_
#include <stdbool.h>
#include "graph.h"
#include "graphGen.h"
/* I was hoping to avoid this - however because we are dealing with
* pointers to arrays of pointers, passing the address of an such
* a beast becomes really confusing: Graph *(**pointer)[]
* Ergo, I am building a structure to contain all the information
* necessary for a given running of this software. For lack of
* a better name, we are calling it the "configuration".
*/
/* A simple enum to define which search is to be done */
typedef enum { treeSearch, diagramSearch } SearchType;
typedef struct SearchOptionsStruct SearchOptions;
struct SearchOptionsStruct
{
SearchType searchType;
bool multiThreaded;
bool doStatistics;
bool writeOutputFile;
char *outputFile;
BuildType buildType;
};
SearchOptions * SearchOptions_new();
typedef struct ConfigurationStruct Configuration;
struct ConfigurationStruct
{
Graph **graphs; /* a pointer to a NULL terminated array of pointers */
Signature *signatures; /* a pointer to a NULL terminated array of Signatures */
SearchOptions *searchOptions;
int qThreadCount; /* recursion depth to STOP spawning new tasks */
};
Configuration* Configuration_new();
#endif /* CONFIGURATION_H_ */