# Global Functions Reference This document describes global functions available across all script classes in Detect-It-Easy. ## Table of Contents - [Script Management](#script-management) - [Logging and Debugging](#logging-and-debugging) - [Result Management](#result-management) - [Scan Control](#scan-control) - [Environment Information](#environment-information) ## Script Management ### includeScript() **`includeScript(sScriptName)`** - Include another script into the current one. **Parameters:** * `sScriptName` - The script name. Default path is `$APP/db` **Examples:** ```javascript includeScript("Cab"); // Include script $APP/db/Cab includeScript("PE"); // Include PE format script includeScript("Archive"); // Include archive detection script ``` ## Logging and Debugging ### _log() **`_log(sString)`** - Display a message in the log window or console for debugging signatures. **Parameters:** * `sString` - The message to display (string or number) **Examples:** ```javascript _log("Hello world!"); // Display a string _log(123); // Display a number _log("File size: " + Binary.getSize()); // Display dynamic information ``` ### _encodingList() **`_encodingList()`** - Display all available text codecs in the log. **Usage:** ```javascript _encodingList(); // Shows all supported text encodings ``` ## Result Management ### result() **`result()`** - Get the result string appropriate to the current class context. **Returns:** Formatted result string for the current detection context. ### _setResult() **`_setResult(sType, sName, sVersion, sOptions)`** - Set detection result. **Parameters:** * `sType` - Result type (e.g., "Packer", "Compiler", "Library") * `sName` - Name of the detected item * `sVersion` - Version information * `sOptions` - Additional options or details **Examples:** ```javascript _setResult("Packer", "UPX", "3.95", ""); _setResult("Compiler", "Microsoft Visual C++", "2019", "MSVC 16.0"); _setResult("Library", "Qt", "5.15.2", "GUI framework"); ``` ### _isResultPresent() **`bool _isResultPresent(sType, sName)`** - Check if a specific result already exists. **Parameters:** * `sType` - Result type to check * `sName` - Result name to check **Returns:** `true` if the result exists, `false` otherwise **Examples:** ```javascript if (!_isResultPresent("Packer", "UPX")) { _setResult("Packer", "UPX", version, ""); } ``` ### _getNumberOfResults() **`qint32 _getNumberOfResults(sType)`** - Get the count of results for a specific type. **Parameters:** * `sType` - Result type to count **Returns:** Number of results of the specified type ### _removeResult() **`void _removeResult(sType, sName)`** - Remove a specific result. **Parameters:** * `sType` - Result type to remove * `sName` - Result name to remove ## Scan Control ### _isStop **`bool _isStop`** - Check if the scan has been stopped by the user. **Usage:** ```javascript if (_isStop) { return; // Exit early if scan was cancelled } ``` ### _breakScan() **`void _breakScan()`** - Programmatically stop the current scan operation. **Usage:** ```javascript if (criticalError) { _breakScan(); // Stop scanning due to error } ``` ## Environment Information ### Mode Detection Functions #### _isConsoleMode() **`bool _isConsoleMode()`** - Check if running in console mode. **Returns:** `true` if in console mode, `false` otherwise #### _isLiteMode() **`bool _isLiteMode()`** - Check if running in lite mode (reduced functionality). **Returns:** `true` if in lite mode, `false` otherwise #### _isGuiMode() **`bool _isGuiMode()`** - Check if running with GUI interface. **Returns:** `true` if in GUI mode, `false` otherwise #### _isLibraryMode() **`bool _isLibraryMode()`** - Check if running as a library component. **Returns:** `true` if in library mode, `false` otherwise **Example usage:** ```javascript if (_isGuiMode()) { // Enable GUI-specific features sOptions += ", Interactive mode"; } else if (_isConsoleMode()) { // Console-specific optimizations _log("Running in console mode"); } ``` ### System Information Functions #### _getEngineVersion() **`QString _getEngineVersion()`** - Get the Detect-It-Easy engine version. **Returns:** Engine version string #### _getOS() **`QString _getOS()`** - Get the current operating system name. **Returns:** Operating system identifier #### _getQtVersion() **`QString _getQtVersion()`** - Get the Qt framework version being used. **Returns:** Qt version string **Example usage:** ```javascript var engineVer = _getEngineVersion(); var osName = _getOS(); var qtVer = _getQtVersion(); _log("DIE " + engineVer + " on " + osName + " (Qt " + qtVer + ")"); ```