2012-01-02 22:03:19 +00:00
|
|
|
/*
|
|
|
|
* virtypedparam.h: managing typed parameters
|
|
|
|
*
|
|
|
|
* Copyright (C) 2011-2012 Red Hat, Inc.
|
|
|
|
*
|
|
|
|
* This library 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 2.1 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This library 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
|
2012-09-20 22:30:55 +00:00
|
|
|
* License along with this library. If not, see
|
2012-07-21 10:06:23 +00:00
|
|
|
* <http://www.gnu.org/licenses/>.
|
2012-01-02 22:03:19 +00:00
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef __VIR_TYPED_PARAM_H_
|
|
|
|
# define __VIR_TYPED_PARAM_H_
|
|
|
|
|
|
|
|
# include "internal.h"
|
2013-06-06 16:54:48 +00:00
|
|
|
# include "virutil.h"
|
2012-01-02 22:03:19 +00:00
|
|
|
|
2015-06-15 22:42:06 +00:00
|
|
|
/**
|
|
|
|
* VIR_TYPED_PARAM_MULTIPLE:
|
|
|
|
*
|
|
|
|
* Flag indicating that the params has multiple occurrences of the parameter.
|
|
|
|
* Only used as a flag for @type argument of the virTypedParamsValidate.
|
|
|
|
*/
|
|
|
|
# define VIR_TYPED_PARAM_MULTIPLE (1 << 31)
|
|
|
|
|
|
|
|
verify(!(VIR_TYPED_PARAM_LAST & VIR_TYPED_PARAM_MULTIPLE));
|
|
|
|
|
2013-05-03 13:34:10 +00:00
|
|
|
int virTypedParamsValidate(virTypedParameterPtr params, int nparams,
|
|
|
|
/* const char *name, int type ... */ ...)
|
2012-03-09 15:20:20 +00:00
|
|
|
ATTRIBUTE_SENTINEL ATTRIBUTE_RETURN_CHECK;
|
2012-01-02 22:03:19 +00:00
|
|
|
|
2013-05-06 10:04:06 +00:00
|
|
|
bool virTypedParamsCheck(virTypedParameterPtr params,
|
|
|
|
int nparams,
|
|
|
|
const char **names,
|
|
|
|
int nnames);
|
|
|
|
|
2015-06-15 22:42:08 +00:00
|
|
|
int
|
|
|
|
virTypedParamsGetStringList(virTypedParameterPtr params,
|
|
|
|
int nparams,
|
|
|
|
const char *name,
|
|
|
|
const char ***values);
|
|
|
|
int
|
|
|
|
virTypedParamsFilter(virTypedParameterPtr params,
|
|
|
|
int nparams,
|
|
|
|
const char *name,
|
|
|
|
virTypedParameterPtr **ret)
|
|
|
|
ATTRIBUTE_RETURN_CHECK ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(3)
|
|
|
|
ATTRIBUTE_NONNULL(4);
|
|
|
|
|
|
|
|
|
2012-01-02 22:03:19 +00:00
|
|
|
int virTypedParameterAssign(virTypedParameterPtr param, const char *name,
|
2012-03-09 15:20:20 +00:00
|
|
|
int type, /* TYPE arg */ ...)
|
|
|
|
ATTRIBUTE_RETURN_CHECK;
|
2012-01-02 22:03:19 +00:00
|
|
|
|
2012-09-06 12:47:40 +00:00
|
|
|
int virTypedParameterAssignFromStr(virTypedParameterPtr param,
|
|
|
|
const char *name,
|
|
|
|
int type,
|
|
|
|
const char *val)
|
|
|
|
ATTRIBUTE_RETURN_CHECK;
|
|
|
|
|
2013-05-21 13:11:56 +00:00
|
|
|
int virTypedParamsReplaceString(virTypedParameterPtr *params,
|
|
|
|
int *nparams,
|
|
|
|
const char *name,
|
|
|
|
const char *value);
|
|
|
|
|
2013-06-07 14:34:13 +00:00
|
|
|
int virTypedParamsCopy(virTypedParameterPtr *dst,
|
|
|
|
virTypedParameterPtr src,
|
|
|
|
int nparams);
|
|
|
|
|
2013-06-06 16:54:48 +00:00
|
|
|
char *virTypedParameterToString(virTypedParameterPtr param);
|
|
|
|
|
|
|
|
VIR_ENUM_DECL(virTypedParameter)
|
|
|
|
|
|
|
|
# define VIR_TYPED_PARAMS_DEBUG(params, nparams) \
|
|
|
|
do { \
|
|
|
|
int _i; \
|
|
|
|
if (!params) \
|
|
|
|
break; \
|
|
|
|
for (_i = 0; _i < (nparams); _i++) { \
|
|
|
|
char *_value = virTypedParameterToString((params) + _i); \
|
|
|
|
VIR_DEBUG("params[\"%s\"]=(%s)%s", \
|
|
|
|
(params)[_i].field, \
|
|
|
|
virTypedParameterTypeToString((params)[_i].type), \
|
|
|
|
NULLSTR(_value)); \
|
|
|
|
VIR_FREE(_value); \
|
|
|
|
} \
|
|
|
|
} while (0)
|
|
|
|
|
2012-01-02 22:03:19 +00:00
|
|
|
#endif /* __VIR_TYPED_PARAM_H */
|