This file is indexed.

/usr/share/doc/mrmpi-doc/Interface_c.html is in mrmpi-doc 1.0~20140404-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
<HTML>
<CENTER><A HREF = "http://mapreduce.sandia.gov">MapReduce-MPI WWW Site</A> - <A HREF = "Manual.html">MapReduce-MPI Documentation</A> 
</CENTER>




<HR>

<H3>C interface to the MapReduce-MPI Library 
</H3>
<P>The MR-MPI library can be called from a C program, using the interface
defined in src/cmapreduce.h.  This is a C file which should be
included in your C program to define the API to the library:
</P>
<PRE>#include "cmapreduce.h" 
</PRE>
<P>Note that the C interface should also be usable to call the MapReduce
MPI library from Fortran or other hi-level languages, including
scripting languages.  See information below on how to do this from
<A HREF = "Interface_python.html">Python</A>.
</P>
<P>The C interface consists of the following functions.  Their
functionality and arguments are described in the <A HREF = "Interface_c++.html">C++ interface
section</A>.
</P>
<PRE>void *MR_create(MPI_Comm comm);
void *MR_create_mpi();
void *MR_create_mpi_finalize();
void *MR_copy(void *MRptr);
void MR_destroy(void *MRptr); 
</PRE>
<PRE>uint64_t MR_add(void *MRptr);
uint64_t MR_aggregate(void *MRptr, int (*myhash)(char *, int));
uint64_t MR_broadcast(void *MRptr, int root);
uint64_t MR_clone(void *MRptr);
uint64_t MR_close(void *MRptr);
uint64_t MR_collapse(void *MRptr, char *key, int keybytes);
uint64_t MR_collate(void *MRptr, int (*myhash)(char *, int));
uint64_t MR_compress(void *MRptr, 
	 	     void (*mycompress)(char *, int, char *, int, int *, void *KVptr, void *APPptr),
		     void *APPptr);
uint64_t MR_convert(void *MRptr);
uint64_t MR_gather(void *MRptr, int numprocs); 
</PRE>
<PRE>uint64_t MR_map(void *MRptr, int nmap,
	        void (*mymap)(int, void *KVptr, void *APPptr),
	        void *APPptr);
uint64_t MR_map_add(void *MRptr, int nmap,
	            void (*mymap)(int, void *KVptr, void *APPptr),
		    void *APPptr, int addflag);
uint64_t MR_map_file(void *MRptr, int nstr, char **strings,
	             int self, int recurse, int readfile,
		     void (*mymap)(int, char *, 
				   void *KVptr, void *APPptr),
		     void *APPptr);
uint64_t MR_map_file_add(void *MRptr, int nstr, char *strings,
	 	         int self, int recurse, int readfile,
			 void (*mymap)(int, char *, 
				       void *KVptr, void *APPptr),
			 void *APPptr, int addflag);
uint64_t MR_map_file_char(void *MRptr, int nmap, int nstr, char **strings,
	 	          int recurse, int readfile,
		          char sepchar, int delta,
		          void (*mymap)(int, char *, int, void *KVptr, void *APPptr),
		          void *APPptr);
uint64_t MR_map_file_char_add(void *MRptr, int nmap, int nstr, char **strings,
	                      int recurse, int readfile,
			      char sepchar, int delta,
			      void (*mymap)(int, char *, int, void *KVptr, void *APPptr),
			      void *APPptr, int addflag);
uint64_t MR_map_file_str(void *MRptr, int nmap, int files, char **files,
		         char *sepstr, int delta,
		         void (*mymap)(int, char *, int, void *KVptr, void *APPptr),
		         void *APPptr);
uint64_t MR_map_file_str_add(void *MRptr, int nmap, int files, char **files,
			     char *sepstr, int delta,
			     void (*mymap)(int, char *, int, void *KVptr, void *APPptr),
			     void *APPptr, int addflag);
uint64_t MR_map_mr(void *MRptr, void *MRptr2,
	           void (*mymap)(uint64_t, char *, int, char *, int *, void *KVptr, void *APPptr),
	           void *APPptr);
uint64_t MR_map_mr_add(void *MRptr, void *MRptr2,
		  void (*mymap)(uint64_t, char *, int, char *, int *, void *KVptr, void *APPptr),
		  void *APPptr, int addflag); 
</PRE>
<PRE>void MR_open(void *MRptr, int addflag);
void MR_open_add(void *MRptr);
void MR_print(void *MRptr, int, int, int, int);
void MR_print_file(void *MRptr, char *, int, int, int, int, int); 
</PRE>
<PRE>uint64_t MR_reduce(void *MRptr,
	           void (*myreduce)(char *, int, char *, int, int *, void *KVptr, void *APPptr),
	           void *APPptr);
uint64_t MR_multivalue_blocks(void *MRptr);
void MR_multivalue_block_select(void *MRptr, int which);
int MR_multivalue_block(void *MRptr, int iblock,
			char **ptr_multivalue, int **ptr_valuesizes); 
</PRE>
<PRE>uint64_t MR_scan_kv(void *MRptr,
		    void (*myscan)(uint64_t, char *, int, char *, int, void *),
		    void *APPptr);
uint64_t MR_scan_kmv(void *MRptr,
		     void (*myscan)(char *, int, char *, int, int *, void *),
		     void *APPptr); 
</PRE>
<PRE>uint64_t MR_scrunch(void *MRptr, int numprocs, char *key, int keybytes); 
</PRE>
<PRE>uint64_t MR_sort_keys(void *MRptr, 
		      int (*mycompare)(char *, int, char *, int));
uint64_t MR_sort_keys_flag(void *MRptr, int);
uint64_t MR_sort_values(void *MRptr,
		        int (*mycompare)(char *, int, char *, int));
uint64_t MR_sort_values_flag(void *MRptr, int);
uint64_t MR_sort_multivalues(void *MRptr,
			     int (*mycompare)(char *, int, char *, int)); 
</PRE>
<P>uint64_t MR_sort_multivalues_flag(void *MRptr, int);
</P>
<PRE>void MR_kv_stats(void *MRptr, int level);
void MR_kmv_stats(void *MRptr, int level); 
</PRE>
<PRE>void MR_set_mapstyle(void *MRptr, int value);
void MR_set_verbosity(void *MRptr, int value);
void MR_set_timer(void *MRptr, int value);
void MR_set_memsize(void *MRptr, int value);
void MR_set_keyalign(void *MRptr, int value);
void MR_set_valuealign(void *MRptr, int value); 
</PRE>
<PRE>void MR_kv_add(void *KVptr, char *key, int keybytes, 
	       char *value, int valuebytes);
void MR_kv_add_multi_static(void *KVptr, int n,
			    char *key, int keybytes,
			    char *value, int valuebytes);
void MR_kv_add_multi_dynamic(void *KVptr, int n,
			    char *key, int *keybytes,
			    char *value, int *valuebytes); 
</PRE>
<PRE>void *MR_get_kv(void *MRptr);
void *MR_get_kmv(void *MRptr); 
</PRE>
<P>These functions correspond one-to-one with the C++ methods described
<A HREF = "Interface_c++.html">here</A>, except that for C++ methods with multiple
interfaces (e.g. <A HREF = "map.html">map()</A>), there are multiple C functions,
with slightly different names.  The MR_set() functions are added to
the C interface to enable the corresponding library variables to be
set.  The final MR_get_kv() and MR_get_kmv() functions have on C++
counterpart; they were added to allow extraction of the internal KV
and KMV pointers from a C-style calling program, which can be done
directly in C++ since the pointers are public members.
</P>
<P>Note that when you call MR_create() or MR_copy(), they return a "void
*MRptr" which is a pointer to the MapReduce object created by the
library.  This pointer is used as the first argument of all the other
MR calls.  This means a C program can effectively instantiate multiple
MapReduce objects by simply keeping track of the pointers returned to
it.
</P>
<P>The remaining arguments of each function call are the same as those
used with the C++ methods.  The only exceptions are several of the
MR_kv_add() functions which take a KVptr as their first argument.
This is a pointer to a KeyValue object.  These calls are made from
your program's mymap(), myreduce(), and mycompress() functions to
register key/value pairs with the MR-MPI library.  The KVptr is passed
as an argument to your functions when they are called back from the
MR-MPI library.
</P>
<P>See the C programs in the examples directory for
<A HREF = "Examples.html">examples</A> of how these calls are made from a C program.
They are conceptually identical to the C++ programs in the same
directory.
</P>
</HTML>