File: modulemd-module-private.h

package info (click to toggle)
libmodulemd 2.15.0-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 5,152 kB
  • sloc: ansic: 37,845; python: 3,236; xml: 1,739; sh: 377; makefile: 42
file content (178 lines) | stat: -rw-r--r-- 6,218 bytes parent folder | download | duplicates (3)
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
/*
 * This file is part of libmodulemd
 * Copyright (C) 2018 Red Hat, Inc.
 *
 * Fedora-License-Identifier: MIT
 * SPDX-2.0-License-Identifier: MIT
 * SPDX-3.0-License-Identifier: MIT
 *
 * This program is free software.
 * For more information on the license, see COPYING.
 * For more information on free software, see <https://www.gnu.org/philosophy/free-sw.en.html>.
 */

#pragma once

#include <glib-object.h>
#include <yaml.h>

#include "modulemd-module.h"
#include "modulemd-translation.h"
#include "modulemd-obsoletes.h"


G_BEGIN_DECLS

/**
 * SECTION: modulemd-module-private
 * @title: Modulemd.Module (Private)
 * @stability: Private
 * @short_description: #ModulemdModule methods that should be used only
 * by internal consumers.
 */


/**
 * modulemd_module_new:
 * @module_name: (in) (not nullable): The name of the module.
 *
 * Returns: (transfer full): A newly-allocated #ModulemdModule object.
 *
 * Since: 2.0
 */
ModulemdModule *
modulemd_module_new (const gchar *module_name);


/**
 * modulemd_module_set_defaults:
 * @self: (in): This #ModulemdModule object.
 * @defaults: (in) (nullable): A #ModulemdDefaults object whose copy to
 * associate with this #ModulemdModule. A module name in @defaults should
 * match a name in the @self module. Pass %NULL to unset the defaults.
 * @index_mdversion: (in): A minimal #ModulemdDefaultsVersionEnum version to
 * upgrade @defaults before adding them.
 * @error: (out): A #GError containing information about why this function
 * failed.
 *
 * This function takes a #ModulemdDefaults object, upgrades it to
 * @index_mdversion if its version is lower and adds it to the #ModulemdModule
 * object. If @defaults cannot be upgraded safely or the @defaults are not for @self
 * module, it will return an appropriate error.
 *
 * (A use case is upgrading defaults of modules in a #ModulemdModuleIndex to
 * the highest defaults version added so far in the #ModulemdModuleIndex.)
 *
 * Returns: The upgraded version of the defaults that were added. Or
 * %MD_DEFAULTS_VERSION_UNSET if @defaults was %NULL. Returns
 * %MD_DEFAULTS_VERSION_ERROR and sets @error if the defaults name didn't
 * match or the defaults object couldn't be upgraded successfully to
 * the @index_mdversion.
 *
 * Since: 2.0
 */
ModulemdDefaultsVersionEnum
modulemd_module_set_defaults (ModulemdModule *self,
                              ModulemdDefaults *defaults,
                              ModulemdDefaultsVersionEnum index_mdversion,
                              GError **error);


/**
 * modulemd_module_add_translation:
 * @self: This #ModulemdModule object.
 * @translation: (in): A #ModulemdTranslation object which is copied into the
 * #ModulemdModule object.
 *
 * Since: 2.0
 */
void
modulemd_module_add_translation (ModulemdModule *self,
                                 ModulemdTranslation *translation);


/**
 * modulemd_module_get_translated_streams:
 * @self: This #ModulemdModule object.
 *
 * Returns: (transfer container): A list of streams for which translations have
 * been added, sorted by stream name.
 *
 * Since: 2.0
 */
GPtrArray *
modulemd_module_get_translated_streams (ModulemdModule *self);


/**
 * modulemd_module_add_obsoletes:
 * @self: This #ModulemdModule object.
 * @obsoletes: (in): A #ModulemdObsoletes object which is copied into the
 * #ModulemdModule object.
 *
 * This function copies the @obsoletes object into @self. In addition if @obsoletes is
 * the newest active obsoletes for existing #ModulemdModuleStream in @self, the stream is
 * upgraded to at least version two and @obsoletes is associated with it.
 *
 * Since: 2.10
 */
void
modulemd_module_add_obsoletes (ModulemdModule *self,
                               ModulemdObsoletes *obsoletes);


/**
 * modulemd_module_add_stream:
 * @self: This #ModulemdModule object.
 * @stream: A #ModulemdModuleStream object to associate with this
 * #ModulemdModule. A stream added to a #ModulemdModule must have a module
 * name and stream name set on it or it will be rejected. If the module name
 * does not match this module, it will also be rejected.
 * @index_mdversion: (in): The #ModulemdModuleStreamVersionEnum stream_mdversion
 * of the #ModulemdModuleIndex to which @stream is being added. If the version
 * of @stream is less than @index_mdversion, an upgrade to this version will be
 * performed while adding @stream to @self. If @stream already has the same
 * version, it is just copied. When obsoletes is present for @stream it must be
 * set to at least version two.
 * @error: (out): A #GError containing information about why this function
 * failed.
 *
 * This function takes a stream object, upgrades it to index_mdversion if
 * needed (if the module contains active obsoletes for this @stream it is upgraded
 * to at least version two) and then adds it to the #ModulemdModule. If it cannot upgrade it
 * safely or the defaults are not for this module, it will return an
 * appropriate error.
 *
 * Returns: The mdversion of the stream that was added, which will be
 * @index_mdversion unless an error occurred. Returns
 * %MD_MODULESTREAM_VERSION_ERROR and sets @error if the module name didn't
 * match, the module and stream names were unset or the stream object couldn't
 * be upgraded successfully to the @index_mdversion. Returns
 * %MD_MODULESTREAM_VERSION_UNSET if @stream was NULL.
 *
 * Since: 2.0
 */
ModulemdModuleStreamVersionEnum
modulemd_module_add_stream (ModulemdModule *self,
                            ModulemdModuleStream *stream,
                            ModulemdModuleStreamVersionEnum index_mdversion,
                            GError **error);


/**
 * modulemd_module_upgrade_streams:
 * @self: This #ModulemdModule object.
 * @mdversion: The metadata version to upgrade to.
 * @error: (out): A #GError containing the reason a stream failed to upgrade.
 *
 * Returns: TRUE if all upgrades completed successfully. FALSE and sets @error
 * if an upgrade error occurs, including attempts to downgrade a stream.
 *
 * Since: 2.0
 */
gboolean
modulemd_module_upgrade_streams (ModulemdModule *self,
                                 ModulemdModuleStreamVersionEnum mdversion,
                                 GError **error);

G_END_DECLS