sdl

FORK: Simple Directmedia Layer
git clone https://git.neptards.moe/neptards/sdl.git
Log | Files | Refs

SDL_visualtest_action_configparser.h (4217B)


      1 /* See COPYING.txt for the full license governing this code. */
      2 /**
      3  * \file SDL_visualtest_action_configparser.h
      4  *
      5  * Header file for the parser for action config files.
      6  */
      7 
      8 #ifndef SDL_visualtest_action_configparser_h_
      9 #define SDL_visualtest_action_configparser_h_
     10 
     11 /** The maximum length of one line in the actions file */
     12 #define MAX_ACTION_LINE_LENGTH 300
     13 
     14 /* Set up for C function definitions, even when using C++ */
     15 #ifdef __cplusplus
     16 extern "C" {
     17 #endif
     18 
     19 /**
     20  * Type of the action.
     21  */
     22 typedef enum
     23 {
     24     /*! Launch an application with some given arguments */
     25     SDL_ACTION_LAUNCH = 0,
     26     /*! Kill the SUT process */
     27     SDL_ACTION_KILL,
     28     /*! Quit (Gracefully exit) the SUT process */
     29     SDL_ACTION_QUIT,
     30     /*! Take a screenshot of the SUT window */
     31     SDL_ACTION_SCREENSHOT,
     32     /*! Verify a previously taken screenshot */
     33     SDL_ACTION_VERIFY
     34 } SDLVisualTest_ActionType;
     35 
     36 /**
     37  * Struct that defines an action that will be performed on the SUT process at
     38  * a specific time.
     39  */
     40 typedef struct SDLVisualTest_Action
     41 {
     42     /*! The type of action to be performed */
     43     SDLVisualTest_ActionType type;
     44     /*! The time, in milliseconds from the launch of the SUT, when the action
     45         will be performed */
     46     int time;
     47     /*! Any additional information needed to perform the action. */
     48     union
     49     {
     50         /*! The path and arguments to the process to be launched */
     51         struct
     52         {
     53             char* path;
     54             char* args;
     55         } process;
     56     } extra;
     57 } SDLVisualTest_Action;
     58 
     59 /**
     60  * Struct for a node in the action queue. 
     61  */
     62 typedef struct SDLVisualTest_ActionNode
     63 {
     64     /*! The action in this node */
     65     SDLVisualTest_Action action;
     66     /*! Pointer to the next element in the queue */
     67     struct SDLVisualTest_ActionNode* next;
     68 } SDLVisualTest_ActionNode;
     69 
     70 /**
     71  * Queue structure for actions loaded from the actions config file. 
     72  */
     73 typedef struct SDLVisualTest_ActionQueue
     74 {
     75     /*! Pointer to the front of the queue */
     76     SDLVisualTest_ActionNode* front;
     77     /*! Pointer to the rear of the queue */
     78     SDLVisualTest_ActionNode* rear;
     79     /*! Number of nodes in the queue */
     80     int size;
     81 } SDLVisualTest_ActionQueue;
     82 
     83 /**
     84  * Add an action pointed to by \c action to the rear of the action queue pointed
     85  * to by \c queue.
     86  *
     87  * \return 1 on success, 0 on failure.
     88  */
     89 int SDLVisualTest_EnqueueAction(SDLVisualTest_ActionQueue* queue,
     90                                 SDLVisualTest_Action action);
     91 
     92 /**
     93  * Remove an action from the front of the action queue pointed to by \c queue.
     94  *
     95  * \return 1 on success, 0 on failure.
     96  */
     97 int SDLVisualTest_DequeueAction(SDLVisualTest_ActionQueue* queue);
     98 
     99 /**
    100  * Initialize the action queue pointed to by \c queue.
    101  */
    102 void SDLVisualTest_InitActionQueue(SDLVisualTest_ActionQueue* queue);
    103 
    104 /**
    105  * Get the action at the front of the action queue pointed to by \c queue.
    106  * The returned action pointer may become invalid after subsequent dequeues.
    107  *
    108  * \return pointer to the action on success, NULL on failure.
    109  */
    110 SDLVisualTest_Action* SDLVisualTest_GetQueueFront(SDLVisualTest_ActionQueue* queue);
    111 
    112 /**
    113  * Check if the queue pointed to by \c queue is empty or not.
    114  *
    115  * \return 1 if the queue is empty, 0 otherwise.
    116  */
    117 int SDLVisualTest_IsActionQueueEmpty(SDLVisualTest_ActionQueue* queue);
    118 
    119 /**
    120  * Dequeues all the elements in the queque pointed to by \c queue.
    121  */
    122 void SDLVisualTest_EmptyActionQueue(SDLVisualTest_ActionQueue* queue);
    123 
    124 /**
    125  * Inserts an action \c action into the queue pointed to by \c queue such that
    126  * the times of actions in the queue increase as we move from the front to the
    127  * rear.
    128  *
    129  * \return 1 on success, 0 on failure.
    130  */
    131 int SDLVisualTest_InsertIntoActionQueue(SDLVisualTest_ActionQueue* queue,
    132                                         SDLVisualTest_Action action);
    133 
    134 /**
    135  * Parses an action config file with path \c file and populates an action queue
    136  * pointed to by \c queue with actions.
    137  *
    138  * \return 1 on success, 0 on failure.
    139  */
    140 int SDLVisualTest_ParseActionConfig(char* file, SDLVisualTest_ActionQueue* queue);
    141 
    142 /* Ends C function definitions when using C++ */
    143 #ifdef __cplusplus
    144 }
    145 #endif
    146 
    147 #endif /* SDL_visualtest_action_configparser_h_ */
    148 
    149 /* vi: set ts=4 sw=4 expandtab: */