1 /*
2  * Copyright (c) 2015-2018 Intel, Inc.  All rights reserved.
3  * $COPYRIGHT$
4  *
5  * Additional copyrights may follow
6  *
7  * $HEADER$
8  */
9 /** @file:
10  * regx framework base functionality.
11  */
12 
13 #ifndef ORTE_MCA_REGX_BASE_H
14 #define ORTE_MCA_REGX_BASE_H
15 
16 /*
17  * includes
18  */
19 #include "orte_config.h"
20 #include "orte/types.h"
21 
22 #include "opal/class/opal_list.h"
23 #include "orte/mca/mca.h"
24 
25 #include "orte/runtime/orte_globals.h"
26 
27 #include "orte/mca/regx/regx.h"
28 
29 BEGIN_C_DECLS
30 
31 /*
32  * MCA Framework
33  */
34 ORTE_DECLSPEC extern mca_base_framework_t orte_regx_base_framework;
35 /* select all components */
36 ORTE_DECLSPEC    int orte_regx_base_select(void);
37 
38 /*
39  * common stuff
40  */
41 typedef struct {
42     opal_list_item_t super;
43     int vpid;
44     int cnt;
45     int slots;
46     orte_topology_t *t;
47 } orte_regex_range_t;
48 
49 OBJ_CLASS_DECLARATION(orte_regex_range_t);
50 
51 typedef struct {
52     /* list object */
53     opal_list_item_t super;
54     char *prefix;
55     char *suffix;
56     int num_digits;
57     opal_list_t ranges;
58 } orte_regex_node_t;
59 END_C_DECLS
60 
61 OBJ_CLASS_DECLARATION(orte_regex_node_t);
62 
63 ORTE_DECLSPEC extern int orte_regx_base_nidmap_parse(char *regex);
64 
65 ORTE_DECLSPEC extern int orte_regx_base_encode_nodemap(opal_buffer_t *buffer);
66 
67 ORTE_DECLSPEC int orte_regx_base_decode_daemon_nodemap(opal_buffer_t *buffer);
68 
69 ORTE_DECLSPEC int orte_regx_base_generate_ppn(orte_job_t *jdata, char **ppn);
70 
71 ORTE_DECLSPEC int orte_regx_base_parse_ppn(orte_job_t *jdata, char *regex);
72 
73 ORTE_DECLSPEC int orte_regx_base_extract_node_names(char *regexp, char ***names);
74 #endif
75