definition:
|
analyzeGenericWithOptions :: (Eq a, Read a, Show a, ReadWrite a) =>
CConfig -> Analysis a -> String -> IO (Either (ProgInfo a) String)
analyzeGenericWithOptions cconfig analysis moduleName = do
let (mdir,mname) = splitFileName moduleName
getDefaultPath cconfig >>= setEnv "CURRYPATH"
curdir <- getCurrentDirectory
unless (mdir==".") $ setCurrentDirectory mdir
let numworkers = numberOfWorkers cconfig
aresult <-
if numworkers > 0
then do
serveraddress <- getServerAddress
(port,socket) <- listenOnFresh
handles <- startWorkers cconfig numworkers socket serveraddress port []
result <- analyzeMain cconfig analysis mname handles False True
stopWorkers handles
close socket
return result
else
analyzeMain cconfig analysis mname [] False True
setCurrentDirectory curdir
return aresult
|
demand:
|
no demanded arguments
|
deterministic:
|
deterministic operation
|
documentation:
|
--- Start the analysis system with a particular analysis and
--- some options of CASS (first argument).
--- The analysis must be a registered one if workers are used.
--- If it is a combined analysis, the base analysis must be also
--- a registered one. The options are read from the rc file.
--- Returns either the analysis information or an error message.
|
indeterministic:
|
might be indeterministic
|
infix:
|
no fixity defined
|
name:
|
analyzeGenericWithOptions
|
precedence:
|
no precedence defined
|
result-values:
|
_
|
signature:
|
(Prelude.Eq a, Prelude.Read a, Prelude.Show a, RW.Base.ReadWrite a) => CASS.Configuration.CConfig
-> Analysis.Types.Analysis a -> String
-> Prelude.IO (Prelude.Either (Analysis.ProgInfo.ProgInfo a) String)
|
solution-complete:
|
operation might suspend on free variables
|
terminating:
|
possibly non-terminating
|
totally-defined:
|
possibly non-reducible on same data term
|