Module CASS.Server

This is the main module of the analysis server. It provides operations to initialize the server system, start the server on a socket, or use the analysis server by other Curry applications.

Author: Heiko Hoffmann, Michael Hanus

Version: December 2018

Summary of exported operations:

initializeAnalysisSystem :: IO ()   
Initializations to be done when the system is started.
mainServer :: Maybe Int -> IO ()   
Start the analysis server on a socket.
analyzeModuleAsText :: String -> String -> Bool -> Bool -> IO String   
Run the analysis system and show the analysis results in standard textual representation.
analyzeModuleForBrowser :: String -> String -> AOutFormat -> IO [((String,String),String)]   
Run the analysis system to show the analysis results in the BrowserGUI.
analyzeFunctionForBrowser :: String -> (String,String) -> AOutFormat -> IO String   
Run the analysis system to show the analysis result of a single function in the BrowserGUI.
analyzeGeneric :: Analysis a -> String -> IO (Either (ProgInfo a) String)   
Start the analysis system with a particular analysis.
analyzePublic :: Analysis a -> String -> IO (Either (ProgInfo a) String)   
Start the analysis system with a given analysis to compute properties of a module interface.
analyzeInterface :: Analysis a -> String -> IO (Either [((String,String),a)] String)   
Start the analysis system with a given analysis to compute properties of a module interface.

Exported operations:

initializeAnalysisSystem :: IO ()   

Initializations to be done when the system is started.

mainServer :: Maybe Int -> IO ()   

Start the analysis server on a socket.

analyzeModuleAsText :: String -> String -> Bool -> Bool -> IO String   

Run the analysis system and show the analysis results in standard textual representation. If the third argument is true, all operations are shown, otherwise only the interface operations. The fourth argument is a flag indicating whether the (re-)analysis should be enforced. Note that, before its first use, the analysis system must be initialized by initializeAnalysisSystem.

analyzeModuleForBrowser :: String -> String -> AOutFormat -> IO [((String,String),String)]   

Run the analysis system to show the analysis results in the BrowserGUI. Note that, before its first use, the analysis system must be initialized by initializeAnalysisSystem.

analyzeFunctionForBrowser :: String -> (String,String) -> AOutFormat -> IO String   

Run the analysis system to show the analysis result of a single function in the BrowserGUI. Note that before its first use, the analysis system must be initialized by initializeAnalysisSystem.

analyzeGeneric :: Analysis a -> String -> IO (Either (ProgInfo a) String)   

Start the analysis system with a particular analysis. 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. Returns either the analysis information or an error message.

analyzePublic :: Analysis a -> String -> IO (Either (ProgInfo a) String)   

Start the analysis system with a given analysis to compute properties of a module interface. 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. Returns either the analysis information or an error message.

analyzeInterface :: Analysis a -> String -> IO (Either [((String,String),a)] String)   

Start the analysis system with a given analysis to compute properties of a module interface. 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.