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
19 #include "sjme/list.h"
20 #include "sjme/nvm/nvm.h"
21 #include "sjme/nvm/rom.h"
22 #include "sjme/nvm/classyVm.h"
26 #ifndef SJME_CXX_IS_EXTERNED
27 #define SJME_CXX_IS_EXTERNED
28 #define SJME_CXX_SQUIRRELJME_TASK_H
30 #endif /* #ifdef SJME_CXX_IS_EXTERNED */
31 #endif /* #ifdef __cplusplus */
33 /*--------------------------------------------------------------------------*/
36 * The type of redirection to use for pipes.
40 typedef enum sjme_task_pipeRedirectType
42 /** Discard everything. */
43 SJME_TASK_PIPE_REDIRECT_TYPE_DISCARD
= 0,
45 /** Store everything into a buffer. */
46 SJME_TASK_PIPE_REDIRECT_TYPE_BUFFER
= 1,
48 /** Send everything to the terminal. */
49 SJME_TASK_PIPE_REDIRECT_TYPE_TERMINAL
= 2,
51 /** The number of redirect types. */
52 SJME_NUM_TASK_PIPE_REDIRECT_TYPES
53 } sjme_task_pipeRedirectType
;
56 * The configuration that stores the information needed for starting the task.
60 typedef struct sjme_task_startConfig
62 /** Redirection for standard output. */
63 sjme_task_pipeRedirectType stdOut
;
65 /** Redirection for standard error. */
66 sjme_task_pipeRedirectType stdErr
;
68 /** The class path to use. */
69 sjme_list_sjme_rom_library
* classPath
;
71 /** Main class to start in. */
72 sjme_lpcstr mainClass
;
74 /** Main arguments. */
75 sjme_list_sjme_lpcstr
* mainArgs
;
77 /** System properties. */
78 sjme_list_sjme_lpcstr
* sysProps
;
80 /** The class loader for this task. */
81 sjme_vmClass_loader classLoader
;
82 } sjme_task_startConfig
;
87 * @param inState The input state.
88 * @param startConfig The start configuration for this task.
89 * @param outTask The resultant task.
90 * @return Any error state.
93 sjme_errorCode
sjme_task_start(
94 sjme_attrInNotNull sjme_nvm inState
,
95 sjme_attrInNotNull
const sjme_task_startConfig
* startConfig
,
96 sjme_attrOutNullable sjme_nvm_task
* outTask
);
98 /*--------------------------------------------------------------------------*/
102 #ifdef SJME_CXX_SQUIRRELJME_TASK_H
104 #undef SJME_CXX_SQUIRRELJME_TASK_H
105 #undef SJME_CXX_IS_EXTERNED
106 #endif /* #ifdef SJME_CXX_SQUIRRELJME_TASK_H */
107 #endif /* #ifdef __cplusplus */
109 #endif /* SQUIRRELJME_TASK_H */