File: system.h

package info (click to toggle)
lsp-plugins 1.2.5-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 91,856 kB
  • sloc: cpp: 427,831; xml: 57,779; makefile: 9,961; php: 1,005; sh: 18
file content (246 lines) | stat: -rw-r--r-- 8,575 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
/*
 * Copyright (C) 2020 Linux Studio Plugins Project <https://lsp-plug.in/>
 *           (C) 2020 Vladimir Sadovnikov <sadko4u@gmail.com>
 *
 * This file is part of lsp-runtime-lib
 * Created on: 17 мар. 2019 г.
 *
 * lsp-runtime-lib is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * any later version.
 *
 * lsp-runtime-lib is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with lsp-runtime-lib. If not, see <https://www.gnu.org/licenses/>.
 */

#ifndef LSP_PLUG_IN_RUNTIME_SYSTEM_H_
#define LSP_PLUG_IN_RUNTIME_SYSTEM_H_

#include <lsp-plug.in/runtime/version.h>
#include <lsp-plug.in/runtime/LSPString.h>
#include <lsp-plug.in/common/types.h>
#include <lsp-plug.in/common/status.h>
#include <lsp-plug.in/io/Path.h>
#include <lsp-plug.in/lltl/parray.h>

namespace lsp
{
    namespace system
    {
        /**
         * Time information
         */
        typedef struct time_t
        {
            uint64_t     seconds;    /* The value in seconds */
            uint32_t     nanos;      /* The value in nanoseconds between 0 and 10^9-1 */
        } time_t;

        /**
         * System timestamp in milliseconds
         */
        typedef uint64_t time_millis_t;

        /**
         * Local time information
         */
        typedef struct localtime_t
        {
            int32_t     year;       /* Year */
            uint8_t     month;      /* Month, starting with 1 */
            uint8_t     mday;       /* Day of month, starting from 1 */
            uint8_t     wday;       /* Day of week, starting from 1 */
            uint8_t     hour;       /* Hour of a day, 0-23 */
            uint8_t     min;        /* Minute of an hour, 0-59 */
            uint8_t     sec;        /* Second of a minute, 0-59 */
            uint32_t    nanos;      /* Number of nanoseconds */
        } localtime_t;

        enum volume_flags_t
        {
            VF_DUMMY    = 1 << 0,
            VF_REMOTE   = 1 << 1,
            VF_DRIVE    = 1 << 2
        };

        typedef struct volume_info_t
        {
            LSPString   device;     /* Name of associated device */
            LSPString   root;       /* Directory on filesystem of device used (for bind) */
            LSPString   target;     /* Target mount point on the file system */
            LSPString   name;       /* Name of the file system */
            size_t      flags;      /* See volume_flags_t */
        } volume_info_t;

        /**
         * Get environment variable
         * @param name environment variable name
         * @param dst string to store environment variable value, NULL for check-only
         * @return status of operation or STATUS_NOT_FOUND if there is no environment variable
         */
        status_t get_env_var(const LSPString *name, LSPString *dst);

        /**
         * Get environment variable
         * @param name environment variable name in UTF-8
         * @param dst string to store environment variable value, NULL for check-only
         * @return status of operation or STATUS_NOT_FOUND if there is no environment variable
         */
        status_t get_env_var(const char *name, LSPString *dst);

        /**
         * Set environment variable
         * @param name environment variable name
         * @param value environment variable value, NULL value deletes the variable
         * @return status of operation or STATUS_NOT_FOUND if there is no environment variable
         */
        status_t set_env_var(const LSPString *name, const LSPString *value);

        /**
         * Set environment variable
         * @param name environment variable name in UTF-8
         * @param value environment variable value in UTF-8, NULL value deletes the variable
         * @return status of operation or STATUS_NOT_FOUND if there is no environment variable
         */
        status_t set_env_var(const char *name, const char *value);

        /**
         * Set environment variable
         * @param name environment variable name in UTF-8
         * @param value environment variable value, NULL value deletes the variable
         * @return status of operation or STATUS_NOT_FOUND if there is no environment variable
         */
        status_t set_env_var(const char *name, const LSPString *value);

        /**
         * Remove environment variable
         * @param name variable to remove in UTF-8
         * @return status of operation
         */
        status_t remove_env_var(const char *name);

        /**
         * Remove environment variable
         * @param name variable to remove
         * @return status of operation
         */
        status_t remove_env_var(const LSPString *name);

        /**
         * Get current user's home directory
         * @param homedir pointer to string to store home directory path
         * @return status of operation
         */
        status_t get_home_directory(LSPString *homedir);

        /**
         * Get current user's home directory
         * @param homedir pointer to string to store home directory path
         * @return status of operation
         */
        status_t get_home_directory(io::Path *homedir);

        /**
         * Get user's local configuration path
         * @param path string to store user's configuration path
         * @return status of operation
         */
        status_t get_user_config_path(LSPString *path);

        /**
         * Get user's local configuration path
         * @param path string to store user's configuration path
         * @return status of operation
         */
        status_t get_user_config_path(io::Path *path);

        /**
         * Get current high-precision time
         * @param time pointer to structure to store time value
         */
        void get_time(time_t *time);

        /**
         * Get current time in milliseconds
         * @return current time in milliseconds
         */
        time_millis_t get_time_millis();

        /**
         * Convert time structure to the local time
         * @param ltime pointer to store the result
         * @param time time structure to convert, use current time if NULL
         */
        void get_localtime(localtime_t *local, const time_t *time = NULL);

        /**
         * Sleep for a specified amount of milliseconds
         * @param delay the amount of milliseconds to sleep
         */
        status_t sleep_msec(size_t delay);

        /**
         * Get temporary directory
         * @param path pointer to store result
         * @return status of operation
         */
        status_t get_temporary_dir(LSPString *path);

        /**
         * Get temporary directory
         * @param path pointer to store result
         * @return status of operation
         */
        status_t get_temporary_dir(io::Path *path);

        /**
         * Get current directiory
         * @param path path to store current directory
         * @return status of operation
         */
        status_t get_current_dir(LSPString *path);

        /**
         * Get current directiory
         * @param path path to store current directory
         * @return status of operation
         */
        status_t get_current_dir(io::Path *path);

        /**
         * Follow ther URL (open in the matching program)
         * @param url URL to follow
         * @return status of operation
         */
        status_t follow_url(const char *url);

        /**
         * Follow ther URL (open in the matching program)
         * @param url URL to follow
         * @return status of operation
         */
        status_t follow_url(const LSPString *url);

        /**
         * Obtain information about available system volumes
         * @param volumes pointer to array to store volume information
         * @return status of operation
         */
        status_t get_volume_info(lltl::parray<volume_info_t> *volumes);

        /**
         * Free information about available system volumes
         * @param volumes pointer to array that stores volume information
         */
        void free_volume_info(lltl::parray<volume_info_t> *volumes);
    }
}


#endif /* LSP_PLUG_IN_RUNTIME_SYSTEM_H_ */