Edit

kc3-lang/SDL/visualtest/include/SDL_visualtest_process.h

Branch :

  • Show log

    Commit

  • Author : Ozkan Sezer
    Date : 2021-12-21 14:50:00
    Hash : 71c497a3
    Message : visualtest windows build fixes

  • visualtest/include/SDL_visualtest_process.h
  • /* See LICENSE.txt for the full license governing this code. */
    /**
     * \file SDL_visualtest_process.h
     *
     * Provides cross-platfrom process launching and termination functionality.
     */
    
    #include <SDL_platform.h>
    
    #if defined(__WIN32__)
    #include <windows.h>
    #include <shlwapi.h>
    #elif defined(__LINUX__)
    #include <unistd.h>
    #else
    #error "Unsupported platform."
    #endif
    
    #ifndef SDL_visualtest_process_h_
    #define SDL_visualtest_process_h_
    
    /* Set up for C function definitions, even when using C++ */
    #ifdef __cplusplus
    extern "C" {
    #endif
    
    /**
     * Struct to store a platform specific handle to a process.
     */
    typedef struct SDL_ProcessInfo
    {
    //#if defined(_WIN32) || defined(__WIN32__)
    #if defined(__WIN32__)
        PROCESS_INFORMATION pi;
    //#elif defined(__linux__)
    #elif defined(__LINUX__)
        int pid;
    #endif
    } SDL_ProcessInfo;
    
    /**
     * This structure stores the exit status (value returned by main()) and
     * whether the process exited sucessfully or not.
     */
    typedef struct SDL_ProcessExitStatus
    {
        int exit_success;   /*!< Zero if the process exited successfully */
        int exit_status;    /*!< The exit status of the process. 8-bit value. */
    } SDL_ProcessExitStatus;
    
    /**
     * Launches a process with the given commandline arguments.
     *
     * \param file  The path to the executable to be launched.
     * \param args  The command line arguments to be passed to the process.
     * \param pinfo Pointer to an SDL_ProcessInfo object to be populated with
     *              platform specific information about the launched process.
     *
     * \return Non-zero on success, zero on failure.
     */
    int SDL_LaunchProcess(char* file, char* args, SDL_ProcessInfo* pinfo);
    
    /**
     * Checks if a process is running or not.
     *
     * \param pinfo Pointer to SDL_ProcessInfo object of the process that needs to be
     *              checked.
     *
     * \return 1 if the process is still running; zero if it is not and -1 if the
     *         status could not be retrieved.
     */
    int SDL_IsProcessRunning(SDL_ProcessInfo* pinfo);
    
    /**
     * Kills a currently running process.
     *
     * \param pinfo Pointer to a SDL_ProcessInfo object of the process to be terminated.
     * \param ps Pointer to a SDL_ProcessExitStatus object which will be populated
     *           with the exit status.
     *
     * \return 1 on success, 0 on failure.
     */
    int SDL_KillProcess(SDL_ProcessInfo* pinfo, SDL_ProcessExitStatus* ps);
    
    /**
     * Cleanly exits the process represented by \c pinfo and stores the exit status
     * in the exit status object pointed to by \c ps.
     *
     * \return 1 on success, 0 on failure.
     */
    int SDL_QuitProcess(SDL_ProcessInfo* pinfo, SDL_ProcessExitStatus* ps);
    
    /**
     * Gets the exit status of a process. If the exit status is -1, the process is
     * still running.
     *
     * \param pinfo Pointer to a SDL_ProcessInfo object of the process to be checked.
     * \param ps Pointer to a SDL_ProcessExitStatus object which will be populated
     *           with the exit status.
     *
     * \return 1 on success, 0 on failure.
     */
    int SDL_GetProcessExitStatus(SDL_ProcessInfo* pinfo, SDL_ProcessExitStatus* ps);
    
    /* Ends C function definitions when using C++ */
    #ifdef __cplusplus
    }
    #endif
    
    #endif /* SDL_visualtest_process_h_ */
    
    /* vi: set ts=4 sw=4 expandtab: */