This repository has been archived on 2025-03-03. You can view files and clone it, but cannot push or open issues or pull requests.
chronozinc/settings/solver.go
2016-12-06 15:37:00 +01:00

40 lines
892 B
Go

package settings
import "github.com/spf13/viper"
// Solver contains all information regarding a FlatZinc solver and its output
type Solver struct {
Name string // Solver name
Binary string // Binary location
Globals string // Globals directory
Flags string // FZN solver flags
Extractors *ExtractionCluster
}
// SolversFromViper extracts all solver information from Viper
func SolversFromViper() []Solver {
var solvers []Solver
for key := range viper.GetStringMap("solvers") {
options := viper.GetStringMapString("solvers." + key)
solver := Solver{
Name: key,
Flags: options["flags"],
Globals: options["globals"],
}
if bin, exists := options["binary"]; exists {
solver.Binary = bin
} else {
solver.Binary = solver.Name
}
solver.Extractors = ExtractorsFromViper("solvers." + key)
solvers = append(solvers, solver)
}
return solvers
}