# geordi - C++ eval bot

**Category:** Standalone_Bot
**Original Author:** Eelis

## Description
Geordi is a standalone IRC bot written in C++, designed to evaluate C++ code snippets received via IRC, providing feedback on their correctness and behavior.

## Key Features
- Evaluates C++ code snippets sent over IRC.
- Tracks variables and messages for debugging purposes.
- Provides detailed error messages and output from evaluated code.
- Supports multiple C++ standards (C++98, C++03, C++11, etc.).

## File Analysis
- **bark.cpp** — Implements a function to handle formatted logging of errors or warnings.
- **compile.sh** — Script for compiling various C++ files with different standards.
- **more_ostreaming.cpp** — Provides additional stream manipulations and output formatting.
- **preload.cpp** — Preloads necessary libraries and sets up runtime environment for evaluating code.
- **prelude.cpp** — Contains common prelude code used by the bot, including type definitions and utility functions.
- **tracked.cpp** — Manages tracking of variables and messages to provide detailed debugging information.
- **diagnose_sigsys.c** — Diagnostics tool for handling system calls in a controlled environment.
- **lockdown.cpp** — Implements security measures to restrict system calls made by the bot.
- **LICENSE** — Public Domain license for all contributions.
- **README.html** — HTML documentation for the bot, including usage and configuration details.
- **install-clang** — Script for installing Clang compiler from SVN repository.
- **install-gcc-trunk** — Script for installing GCC trunk version from SVN repository.
- **install-haskell** — Script for installing Haskell platform.
- **install-klee** — Scripts for setting up KLEE and related tools.
- **.dockerignore** — File listing files to be ignored by Docker.
- **.gitignore** — Git ignore file for project.
- **Dockerfile** — Defines a Docker image for building the bot's environment.
- **compile-config** — Configuration settings for compiler flags.
- **irc-config** — IRC bot configuration, including server details and channel information.
- **xmpp-config** — XMPP bot configuration.
- **bark.hpp** — Header file defining bark function for logging.
- **bin_iomanip.hpp** — Implements binary integral output manipulator.
- **delimited_ostream.hpp** — Provides a delimited stream operator for better formatting of output.
- **libstdcxx_demangle_typeinfo_name.patch** — Patches to demangle C++ type names.
- **evil_casts.hpp** — Implements evil casts for demonstration purposes.
- **geordi.hpp** — Main header file defining bot's namespace and utility functions.
- **libcxx_demangle_typeinfo_name.patch** — Additional patch for demangling C++ type names.
- **literal_escape.hpp** — Provides literal escape functionality.
- **lvalue_rvalue.hpp** — Implements lvalue/rvalue detection.
- **more_ostreaming.hpp** — Header file defining more stream operations.
- **prelude.hpp** — Includes various utility headers and defines common types.
- **show.hpp** — Provides show functionality for debugging.
- **tlists.hpp** — Template library for working with lists.
- **tracked.hpp** — Manages tracking of variables and messages.
- **type_strings.hpp** — Defines type string utilities.
- **CompileConfig.hs** — Haskell script for compiling configuration settings.
- **ErrorFilters.hs** — Filters and cleans up error output.
- **EvalCxx.hsc** — Secure compilation setup for C++ code evaluation.
- **Gcc.hs** — Haskell module for GCC diagnostics.
- **HttpBot.hs** — HTTP bot implementation.
- **IRC.hs** — IRC bot implementation.
- **IrcBot.hs** — Main IRC bot logic.
- **Local.hs** — Local bot configuration and command handling.
- **MemoTrie.hs** — Memoization trie implementation.
- **Parsers.hs** — Parsing utilities for C++ code.
- **Request.hs** — Request handling and evaluation.
- **RequestEval.hs** — Evaluation of requests.
- **Setup.hs** — Setup script for building the project.
- **Sys.hsc** — System API wrapping.
- **Testsuite.hs** — Test suite implementation.
- **Util.hs** — Utility functions and modules.
- **XmppBot.hs** — XMPP bot implementation.