1 /* -*- Mode: C; indent-tabs-mode: t; tab-width: 4 -*-
2 // ---------------------------------------------------------------------------
4 // Copyright (C) Stephanie Gawroriski <xer@multiphasicapps.net>
5 // ---------------------------------------------------------------------------
6 // SquirrelJME is under the Mozilla Public License Version 2.0.
7 // See license.mkd for licensing and copyright information.
8 // -------------------------------------------------------------------------*/
16 #ifndef SQUIRRELJME_TASK_H
17 #define SQUIRRELJME_TASK_H
25 #ifndef SJME_CXX_IS_EXTERNED
26 #define SJME_CXX_IS_EXTERNED
27 #define SJME_CXX_SQUIRRELJME_TASK_H
29 #endif /* #ifdef SJME_CXX_IS_EXTERNED */
30 #endif /* #ifdef __cplusplus */
32 /*--------------------------------------------------------------------------*/
35 * The type of redirection to use for pipes.
39 typedef enum sjme_task_pipeRedirectType
41 /** Discard everything. */
42 SJME_TASK_PIPE_REDIRECT_TYPE_DISCARD
= 0,
44 /** Store everything into a buffer. */
45 SJME_TASK_PIPE_REDIRECT_TYPE_BUFFER
= 1,
47 /** Send everything to the terminal. */
48 SJME_TASK_PIPE_REDIRECT_TYPE_TERMINAL
= 2,
50 /** The number of redirect types. */
51 SJME_NUM_TASK_PIPE_REDIRECT_TYPES
52 } sjme_task_pipeRedirectType
;
55 * The configuration that stores the information needed for starting the task.
59 typedef struct sjme_task_startConfig
61 /** Redirection for standard output. */
62 sjme_task_pipeRedirectType stdOut
;
64 /** Redirection for standard error. */
65 sjme_task_pipeRedirectType stdErr
;
67 /** The class path to use. */
68 sjme_list_sjme_rom_library
* classPath
;
70 /** Main class to start in. */
71 sjme_lpcstr mainClass
;
73 /** Main arguments. */
74 sjme_list_sjme_lpcstr
* mainArgs
;
76 /** System properties. */
77 sjme_list_sjme_lpcstr
* sysProps
;
78 } sjme_task_startConfig
;
83 * @param inState The input state.
84 * @param startConfig The start configuration for this task.
85 * @param outTask The resultant task.
86 * @return Any error state.
89 sjme_errorCode
sjme_task_start(
90 sjme_attrInNotNull sjme_nvm inState
,
91 sjme_attrInNotNull
const sjme_task_startConfig
* startConfig
,
92 sjme_attrOutNullable sjme_nvm_task
* outTask
);
94 /*--------------------------------------------------------------------------*/
98 #ifdef SJME_CXX_SQUIRRELJME_TASK_H
100 #undef SJME_CXX_SQUIRRELJME_TASK_H
101 #undef SJME_CXX_IS_EXTERNED
102 #endif /* #ifdef SJME_CXX_SQUIRRELJME_TASK_H */
103 #endif /* #ifdef __cplusplus */
105 #endif /* SQUIRRELJME_TASK_H */