root/opal/mca/pmix/pmix4x/pmix/include/pmix_extend.h

/* [<][>][^][v][top][bottom][index][help] */
   1 /*
   2  * Copyright (c) 2013-2018 Intel, Inc. All rights reserved.
   3  * Copyright (c) 2015      Artem Y. Polyakov <artpol84@gmail.com>.
   4  *                         All rights reserved.
   5  * Copyright (c) 2015-2019 Research Organization for Information Science
   6  *                         and Technology (RIST).  All rights reserved.
   7  * $COPYRIGHT$
   8  *
   9  * Redistribution and use in source and binary forms, with or without
  10  * modification, are permitted provided that the following conditions are
  11  * met:
  12  *
  13  * - Redistributions of source code must retain the above copyright
  14  *   notice, this list of conditions and the following disclaimer.
  15  *
  16  * - Redistributions in binary form must reproduce the above copyright
  17  *   notice, this list of conditions and the following disclaimer listed
  18  *   in this license in the documentation and/or other materials
  19  *   provided with the distribution.
  20  *
  21  * - Neither the name of the copyright holders nor the names of its
  22  *   contributors may be used to endorse or promote products derived from
  23  *   this software without specific prior written permission.
  24  *
  25  * The copyright holders provide no reassurances that the source code
  26  * provided does not infringe any patent, copyright, or any other
  27  * intellectual property rights of third parties.  The copyright holders
  28  * disclaim any liability to any recipient for claims brought against
  29  * recipient by any third party for infringement of that parties
  30  * intellectual property rights.
  31  *
  32  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  33  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  34  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  35  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  36  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  37  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  38  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  39  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  40  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  41  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  42  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  43  *
  44  * $HEADER$
  45  *
  46  * PMIx provides a "function-shipping" approach to support for
  47  * implementing the server-side of the protocol. This method allows
  48  * resource managers to implement the server without being burdened
  49  * with PMIx internal details. Accordingly, each PMIx API is mirrored
  50  * here in a function call to be provided by the server. When a
  51  * request is received from the client, the corresponding server function
  52  * will be called with the information.
  53  *
  54  * Any functions not supported by the RM can be indicated by a NULL for
  55  * the function pointer. Client calls to such functions will have a
  56  * "not supported" error returned.
  57  */
  58 
  59 #ifndef PMIx_EXTEND_H
  60 #define PMIx_EXTEND_H
  61 
  62 #if defined(c_plusplus) || defined(__cplusplus)
  63 extern "C" {
  64 #endif
  65 
  66 /* declare a convenience macro for checking keys */
  67 #define PMIX_CHECK_KEY(a, b) \
  68     (0 == strncmp((a)->key, (b), PMIX_MAX_KEYLEN))
  69 
  70 /* define a convenience macro for checking nspaces */
  71 #define PMIX_CHECK_NSPACE(a, b) \
  72     (0 == strncmp((a), (b), PMIX_MAX_NSLEN))
  73 
  74 /* define a convenience macro for checking names */
  75 #define PMIX_CHECK_PROCID(a, b) \
  76     (PMIX_CHECK_NSPACE((a)->nspace, (b)->nspace) && ((a)->rank == (b)->rank || (PMIX_RANK_WILDCARD == (a)->rank || PMIX_RANK_WILDCARD == (b)->rank)))
  77 
  78 /* expose some functions that are resolved in the
  79  * PMIx library, but part of a header that
  80  * includes internal functions - we don't
  81  * want to expose the entire header here. For
  82  * consistency, we provide macro versions as well
  83  */
  84 void pmix_value_load(pmix_value_t *v, const void *data, pmix_data_type_t type);
  85 
  86 pmix_status_t pmix_value_unload(pmix_value_t *kv, void **data, size_t *sz);
  87 
  88 pmix_status_t pmix_value_xfer(pmix_value_t *kv, const pmix_value_t *src);
  89 
  90 pmix_status_t pmix_argv_append_nosize(char ***argv, const char *arg);
  91 
  92 pmix_status_t pmix_argv_prepend_nosize(char ***argv, const char *arg);
  93 
  94 pmix_status_t pmix_argv_append_unique_nosize(char ***argv, const char *arg);
  95 
  96 void pmix_argv_free(char **argv);
  97 
  98 char **pmix_argv_split(const char *src_string, int delimiter);
  99 
 100 int pmix_argv_count(char **argv);
 101 
 102 char *pmix_argv_join(char **argv, int delimiter);
 103 
 104 char **pmix_argv_copy(char **argv);
 105 
 106 pmix_status_t pmix_setenv(const char *name, const char *value,
 107                           bool overwrite, char ***env);
 108 
 109 
 110 #if defined(c_plusplus) || defined(__cplusplus)
 111 }
 112 #endif
 113 
 114 #endif

/* [<][>][^][v][top][bottom][index][help] */