PageRenderTime 33ms CodeModel.GetById 19ms app.highlight 9ms RepoModel.GetById 1ms app.codeStats 0ms

/trunk/Lib/guile/std_pair.i

#
Swig | 868 lines | 824 code | 23 blank | 21 comment | 0 complexity | 626cd6aca9cb7dfa80c5499896c9617f MD5 | raw file
  1/* -----------------------------------------------------------------------------
  2 * std_pair.i
  3 *
  4 * SWIG typemaps for std::pair
  5 * ----------------------------------------------------------------------------- */
  6
  7%include <std_common.i>
  8%include <exception.i>
  9
 10// ------------------------------------------------------------------------
 11// std::pair
 12//
 13// See std_vector.i for the rationale of typemap application
 14// ------------------------------------------------------------------------
 15
 16%{
 17#include <utility>
 18%}
 19
 20// exported class
 21
 22namespace std {
 23
 24    template<class T, class U> struct pair {
 25        %typemap(in) pair<T,U> (std::pair<T,U>* m) {
 26            if (gh_pair_p($input)) {
 27                T* x;
 28                U* y;
 29                SCM first, second;
 30                first = gh_car($input);
 31                second = gh_cdr($input);
 32                x = (T*) SWIG_MustGetPtr(first,$descriptor(T *),$argnum, 0);
 33                y = (U*) SWIG_MustGetPtr(second,$descriptor(U *),$argnum, 0);
 34                $1 = std::make_pair(*x,*y);
 35            } else {
 36                $1 = *(($&1_type)
 37                       SWIG_MustGetPtr($input,$&1_descriptor,$argnum, 0));
 38            }
 39        }
 40        %typemap(in) const pair<T,U>& (std::pair<T,U> temp,
 41                                      std::pair<T,U>* m),
 42                     const pair<T,U>* (std::pair<T,U> temp,
 43                                      std::pair<T,U>* m) {
 44            if (gh_pair_p($input)) {
 45                T* x;
 46                U* y;
 47                SCM first, second;
 48                first = gh_car($input);
 49                second = gh_cdr($input);
 50                x = (T*) SWIG_MustGetPtr(first,$descriptor(T *),$argnum, 0);
 51                y = (U*) SWIG_MustGetPtr(second,$descriptor(U *),$argnum, 0);
 52                temp = std::make_pair(*x,*y);
 53                $1 = &temp;
 54            } else {
 55                $1 = ($1_ltype)
 56                    SWIG_MustGetPtr($input,$1_descriptor,$argnum, 0);
 57            }
 58        }
 59        %typemap(out) pair<T,U> {
 60            T* x = new T($1.first);
 61            U* y = new U($1.second);
 62            SCM first = SWIG_NewPointerObj(x,$descriptor(T *), 1);
 63            SCM second = SWIG_NewPointerObj(y,$descriptor(U *), 1);
 64            $result = gh_cons(first,second);
 65        }
 66        %typecheck(SWIG_TYPECHECK_PAIR) pair<T,U> {
 67            /* native pair? */
 68            if (gh_pair_p($input)) {
 69                T* x;
 70                U* y;
 71                SCM first = gh_car($input);
 72                SCM second = gh_cdr($input);
 73                if (SWIG_ConvertPtr(first,(void**) &x,
 74                                    $descriptor(T *), 0) == 0 &&
 75                    SWIG_ConvertPtr(second,(void**) &y,
 76                                    $descriptor(U *), 0) == 0) {
 77                    $1 = 1;
 78                } else {
 79                    $1 = 0;
 80                }
 81            } else {
 82                /* wrapped pair? */
 83                std::pair<T,U >* m;
 84                if (SWIG_ConvertPtr($input,(void **) &m,
 85                                    $&1_descriptor, 0) == 0)
 86                    $1 = 1;
 87                else
 88                    $1 = 0;
 89            }
 90        }
 91        %typecheck(SWIG_TYPECHECK_PAIR) const pair<T,U>&,
 92                                        const pair<T,U>* {
 93            /* native pair? */
 94            if (gh_pair_p($input)) {
 95                T* x;
 96                U* y;
 97                SCM first = gh_car($input);
 98                SCM second = gh_cdr($input);
 99                if (SWIG_ConvertPtr(first,(void**) &x,
100                                    $descriptor(T *), 0) == 0 &&
101                    SWIG_ConvertPtr(second,(void**) &y,
102                                    $descriptor(U *), 0) == 0) {
103                    $1 = 1;
104                } else {
105                    $1 = 0;
106                }
107            } else {
108                /* wrapped pair? */
109                std::pair<T,U >* m;
110                if (SWIG_ConvertPtr($input,(void **) &m,
111                                    $1_descriptor, 0) == 0)
112                    $1 = 1;
113                else
114                    $1 = 0;
115            }
116        }
117        pair();
118        pair(T first, U second);
119        pair(const pair& p);
120
121        template <class U1, class U2> pair(const pair<U1, U2> &p);
122
123        T first;
124        U second;
125    };
126
127
128    // specializations for built-ins
129
130    %define specialize_std_pair_on_first(T,CHECK,CONVERT_FROM,CONVERT_TO)
131    template<class U> struct pair<T,U> {
132        %typemap(in) pair<T,U> (std::pair<T,U>* m) {
133            if (gh_pair_p($input)) {
134                U* y;
135                SCM first, second;
136                first = gh_car($input);
137                second = gh_cdr($input);
138                if (!CHECK(first))
139                    SWIG_exception(SWIG_TypeError,
140                                   "map<" #T "," #U "> expected");
141                y = (U*) SWIG_MustGetPtr(second,$descriptor(U *),$argnum, 0);
142                $1 = std::make_pair(CONVERT_FROM(first),*y);
143            } else {
144                $1 = *(($&1_type)
145                       SWIG_MustGetPtr($input,$&1_descriptor,$argnum, 0));
146            }
147        }
148        %typemap(in) const pair<T,U>& (std::pair<T,U> temp,
149                                       std::pair<T,U>* m),
150                     const pair<T,U>* (std::pair<T,U> temp,
151                                       std::pair<T,U>* m) {
152            if (gh_pair_p($input)) {
153                U* y;
154                SCM first, second;
155                first = gh_car($input);
156                second = gh_cdr($input);
157                if (!CHECK(first))
158                    SWIG_exception(SWIG_TypeError,
159                                   "map<" #T "," #U "> expected");
160                y = (U*) SWIG_MustGetPtr(second,$descriptor(U *),$argnum, 0);
161                temp = std::make_pair(CONVERT_FROM(first),*y);
162                $1 = &temp;
163            } else {
164                $1 = ($1_ltype)
165                    SWIG_MustGetPtr($input,$1_descriptor,$argnum, 0);
166            }
167        }
168        %typemap(out) pair<T,U> {
169            U* y = new U($1.second);
170            SCM second = SWIG_NewPointerObj(y,$descriptor(U *), 1);
171            $result = gh_cons(CONVERT_TO($1.first),second);
172        }
173        %typecheck(SWIG_TYPECHECK_PAIR) pair<T,U> {
174            /* native pair? */
175            if (gh_pair_p($input)) {
176                U* y;
177                SCM first = gh_car($input);
178                SCM second = gh_cdr($input);
179                if (CHECK(first) &&
180                    SWIG_ConvertPtr(second,(void**) &y,
181                                    $descriptor(U *), 0) == 0) {
182                    $1 = 1;
183                } else {
184                    $1 = 0;
185                }
186            } else {
187                /* wrapped pair? */
188                std::pair<T,U >* m;
189                if (SWIG_ConvertPtr($input,(void **) &m,
190                                    $&1_descriptor, 0) == 0)
191                    $1 = 1;
192                else
193                    $1 = 0;
194            }
195        }
196        %typecheck(SWIG_TYPECHECK_PAIR) const pair<T,U>&,
197                                        const pair<T,U>* {
198            /* native pair? */
199            if (gh_pair_p($input)) {
200                U* y;
201                SCM first = gh_car($input);
202                SCM second = gh_cdr($input);
203                if (CHECK(first) &&
204                    SWIG_ConvertPtr(second,(void**) &y,
205                                    $descriptor(U *), 0) == 0) {
206                    $1 = 1;
207                } else {
208                    $1 = 0;
209                }
210            } else {
211                /* wrapped pair? */
212                std::pair<T,U >* m;
213                if (SWIG_ConvertPtr($input,(void **) &m,
214                                    $1_descriptor, 0) == 0)
215                    $1 = 1;
216                else
217                    $1 = 0;
218            }
219        }
220        pair();
221        pair(T first, U second);
222        pair(const pair& p);
223
224        template <class U1, class U2> pair(const pair<U1, U2> &p);
225
226        T first;
227        U second;
228    };
229    %enddef
230
231    %define specialize_std_pair_on_second(U,CHECK,CONVERT_FROM,CONVERT_TO)
232    template<class T> struct pair<T,U> {
233        %typemap(in) pair<T,U> (std::pair<T,U>* m) {
234            if (gh_pair_p($input)) {
235                T* x;
236                SCM first, second;
237                first = gh_car($input);
238                second = gh_cdr($input);
239                x = (T*) SWIG_MustGetPtr(first,$descriptor(T *),$argnum, 0);
240                if (!CHECK(second))
241                    SWIG_exception(SWIG_TypeError,
242                                   "map<" #T "," #U "> expected");
243                $1 = std::make_pair(*x,CONVERT_FROM(second));
244            } else {
245                $1 = *(($&1_type)
246                       SWIG_MustGetPtr($input,$&1_descriptor,$argnum, 0));
247            }
248        }
249        %typemap(in) const pair<T,U>& (std::pair<T,U> temp,
250                                      std::pair<T,U>* m),
251                     const pair<T,U>* (std::pair<T,U> temp,
252                                      std::pair<T,U>* m) {
253            if (gh_pair_p($input)) {
254                T* x;
255                SCM first, second;
256                first = gh_car($input);
257                second = gh_cdr($input);
258                x = (T*) SWIG_MustGetPtr(first,$descriptor(T *),$argnum, 0);
259                if (!CHECK(second))
260                    SWIG_exception(SWIG_TypeError,
261                                   "map<" #T "," #U "> expected");
262                temp = std::make_pair(*x,CONVERT_FROM(second));
263                $1 = &temp;
264            } else {
265                $1 = ($1_ltype)
266                    SWIG_MustGetPtr($input,$1_descriptor,$argnum, 0);
267            }
268        }
269        %typemap(out) pair<T,U> {
270            T* x = new T($1.first);
271            SCM first = SWIG_NewPointerObj(x,$descriptor(T *), 1);
272            $result = gh_cons(first,CONVERT_TO($1.second));
273        }
274        %typecheck(SWIG_TYPECHECK_PAIR) pair<T,U> {
275            /* native pair? */
276            if (gh_pair_p($input)) {
277                T* x;
278                SCM first = gh_car($input);
279                SCM second = gh_cdr($input);
280                if (SWIG_ConvertPtr(first,(void**) &x,
281                                    $descriptor(T *), 0) == 0 &&
282                    CHECK(second)) {
283                    $1 = 1;
284                } else {
285                    $1 = 0;
286                }
287            } else {
288                /* wrapped pair? */
289                std::pair<T,U >* m;
290                if (SWIG_ConvertPtr($input,(void **) &m,
291                                    $&1_descriptor, 0) == 0)
292                    $1 = 1;
293                else
294                    $1 = 0;
295            }
296        }
297        %typecheck(SWIG_TYPECHECK_PAIR) const pair<T,U>&,
298                                        const pair<T,U>* {
299            /* native pair? */
300            if (gh_pair_p($input)) {
301                T* x;
302                SCM first = gh_car($input);
303                SCM second = gh_cdr($input);
304                if (SWIG_ConvertPtr(first,(void**) &x,
305                                    $descriptor(T *), 0) == 0 &&
306                    CHECK(second)) {
307                    $1 = 1;
308                } else {
309                    $1 = 0;
310                }
311            } else {
312                /* wrapped pair? */
313                std::pair<T,U >* m;
314                if (SWIG_ConvertPtr($input,(void **) &m,
315                                    $1_descriptor, 0) == 0)
316                    $1 = 1;
317                else
318                    $1 = 0;
319            }
320        }
321        pair();
322        pair(T first, U second);
323        pair(const pair& p);
324
325        template <class U1, class U2> pair(const pair<U1, U2> &p);
326
327        T first;
328        U second;
329    };
330    %enddef
331
332    %define specialize_std_pair_on_both(T,CHECK_T,CONVERT_T_FROM,CONVERT_T_TO,
333                                        U,CHECK_U,CONVERT_U_FROM,CONVERT_U_TO)
334    template<> struct pair<T,U> {
335        %typemap(in) pair<T,U> (std::pair<T,U>* m) {
336            if (gh_pair_p($input)) {
337                SCM first, second;
338                first = gh_car($input);
339                second = gh_cdr($input);
340                if (!CHECK_T(first) || !CHECK_U(second))
341                    SWIG_exception(SWIG_TypeError,
342                                   "map<" #T "," #U "> expected");
343                $1 = std::make_pair(CONVERT_T_FROM(first),
344                                    CONVERT_U_FROM(second));
345            } else {
346                $1 = *(($&1_type)
347                       SWIG_MustGetPtr($input,$&1_descriptor,$argnum, 0));
348            }
349        }
350        %typemap(in) const pair<T,U>& (std::pair<T,U> temp,
351                                      std::pair<T,U>* m),
352                     const pair<T,U>* (std::pair<T,U> temp,
353                                      std::pair<T,U>* m) {
354            if (gh_pair_p($input)) {
355                SCM first, second;
356                first = gh_car($input);
357                second = gh_cdr($input);
358                if (!CHECK_T(first) || !CHECK_U(second))
359                    SWIG_exception(SWIG_TypeError,
360                                   "map<" #T "," #U "> expected");
361                temp = std::make_pair(CONVERT_T_FROM(first),
362                                      CONVERT_U_FROM(second));
363                $1 = &temp;
364            } else {
365                $1 = ($1_ltype)
366                    SWIG_MustGetPtr($input,$1_descriptor,$argnum, 0);
367            }
368        }
369        %typemap(out) pair<T,U> {
370            $result = gh_cons(CONVERT_T_TO($1.first),
371                              CONVERT_U_TO($1.second));
372        }
373        %typecheck(SWIG_TYPECHECK_PAIR) pair<T,U> {
374            /* native pair? */
375            if (gh_pair_p($input)) {
376                SCM first = gh_car($input);
377                SCM second = gh_cdr($input);
378                if (CHECK_T(first) && CHECK_U(second)) {
379                    $1 = 1;
380                } else {
381                    $1 = 0;
382                }
383            } else {
384                /* wrapped pair? */
385                std::pair<T,U >* m;
386                if (SWIG_ConvertPtr($input,(void **) &m,
387                                    $&1_descriptor, 0) == 0)
388                    $1 = 1;
389                else
390                    $1 = 0;
391            }
392        }
393        %typecheck(SWIG_TYPECHECK_PAIR) const pair<T,U>&,
394                                        const pair<T,U>* {
395            /* native pair? */
396            if (gh_pair_p($input)) {
397                SCM first = gh_car($input);
398                SCM second = gh_cdr($input);
399                if (CHECK_T(first) && CHECK_U(second)) {
400                    $1 = 1;
401                } else {
402                    $1 = 0;
403                }
404            } else {
405                /* wrapped pair? */
406                std::pair<T,U >* m;
407                if (SWIG_ConvertPtr($input,(void **) &m,
408                                    $1_descriptor, 0) == 0)
409                    $1 = 1;
410                else
411                    $1 = 0;
412            }
413        }
414        pair();
415        pair(T first, U second);
416        pair(const pair& p);
417
418        template <class U1, class U2> pair(const pair<U1, U2> &p);
419
420        T first;
421        U second;
422    };
423    %enddef
424
425
426    specialize_std_pair_on_first(bool,gh_boolean_p,
427                              gh_scm2bool,SWIG_bool2scm);
428    specialize_std_pair_on_first(int,gh_number_p,
429                              gh_scm2long,gh_long2scm);
430    specialize_std_pair_on_first(short,gh_number_p,
431                              gh_scm2long,gh_long2scm);
432    specialize_std_pair_on_first(long,gh_number_p,
433                              gh_scm2long,gh_long2scm);
434    specialize_std_pair_on_first(unsigned int,gh_number_p,
435                              gh_scm2ulong,gh_ulong2scm);
436    specialize_std_pair_on_first(unsigned short,gh_number_p,
437                              gh_scm2ulong,gh_ulong2scm);
438    specialize_std_pair_on_first(unsigned long,gh_number_p,
439                              gh_scm2ulong,gh_ulong2scm);
440    specialize_std_pair_on_first(double,gh_number_p,
441                              gh_scm2double,gh_double2scm);
442    specialize_std_pair_on_first(float,gh_number_p,
443                              gh_scm2double,gh_double2scm);
444    specialize_std_pair_on_first(std::string,gh_string_p,
445                              SWIG_scm2string,SWIG_string2scm);
446
447    specialize_std_pair_on_second(bool,gh_boolean_p,
448                                gh_scm2bool,SWIG_bool2scm);
449    specialize_std_pair_on_second(int,gh_number_p,
450                                gh_scm2long,gh_long2scm);
451    specialize_std_pair_on_second(short,gh_number_p,
452                                gh_scm2long,gh_long2scm);
453    specialize_std_pair_on_second(long,gh_number_p,
454                                gh_scm2long,gh_long2scm);
455    specialize_std_pair_on_second(unsigned int,gh_number_p,
456                                gh_scm2ulong,gh_ulong2scm);
457    specialize_std_pair_on_second(unsigned short,gh_number_p,
458                                gh_scm2ulong,gh_ulong2scm);
459    specialize_std_pair_on_second(unsigned long,gh_number_p,
460                                gh_scm2ulong,gh_ulong2scm);
461    specialize_std_pair_on_second(double,gh_number_p,
462                                gh_scm2double,gh_double2scm);
463    specialize_std_pair_on_second(float,gh_number_p,
464                                gh_scm2double,gh_double2scm);
465    specialize_std_pair_on_second(std::string,gh_string_p,
466                                SWIG_scm2string,SWIG_string2scm);
467
468    specialize_std_pair_on_both(bool,gh_boolean_p,
469                               gh_scm2bool,SWIG_bool2scm,
470                               bool,gh_boolean_p,
471                               gh_scm2bool,SWIG_bool2scm);
472    specialize_std_pair_on_both(bool,gh_boolean_p,
473                               gh_scm2bool,SWIG_bool2scm,
474                               int,gh_number_p,
475                               gh_scm2long,gh_long2scm);
476    specialize_std_pair_on_both(bool,gh_boolean_p,
477                               gh_scm2bool,SWIG_bool2scm,
478                               short,gh_number_p,
479                               gh_scm2long,gh_long2scm);
480    specialize_std_pair_on_both(bool,gh_boolean_p,
481                               gh_scm2bool,SWIG_bool2scm,
482                               long,gh_number_p,
483                               gh_scm2long,gh_long2scm);
484    specialize_std_pair_on_both(bool,gh_boolean_p,
485                               gh_scm2bool,SWIG_bool2scm,
486                               unsigned int,gh_number_p,
487                               gh_scm2ulong,gh_ulong2scm);
488    specialize_std_pair_on_both(bool,gh_boolean_p,
489                               gh_scm2bool,SWIG_bool2scm,
490                               unsigned short,gh_number_p,
491                               gh_scm2ulong,gh_ulong2scm);
492    specialize_std_pair_on_both(bool,gh_boolean_p,
493                               gh_scm2bool,SWIG_bool2scm,
494                               unsigned long,gh_number_p,
495                               gh_scm2ulong,gh_ulong2scm);
496    specialize_std_pair_on_both(bool,gh_boolean_p,
497                               gh_scm2bool,SWIG_bool2scm,
498                               double,gh_number_p,
499                               gh_scm2double,gh_double2scm);
500    specialize_std_pair_on_both(bool,gh_boolean_p,
501                               gh_scm2bool,SWIG_bool2scm,
502                               float,gh_number_p,
503                               gh_scm2double,gh_double2scm);
504    specialize_std_pair_on_both(bool,gh_boolean_p,
505                               gh_scm2bool,SWIG_bool2scm,
506                               std::string,gh_string_p,
507                               SWIG_scm2string,SWIG_string2scm);
508    specialize_std_pair_on_both(int,gh_number_p,
509                               gh_scm2long,gh_long2scm,
510                               bool,gh_boolean_p,
511                               gh_scm2bool,SWIG_bool2scm);
512    specialize_std_pair_on_both(int,gh_number_p,
513                               gh_scm2long,gh_long2scm,
514                               int,gh_number_p,
515                               gh_scm2long,gh_long2scm);
516    specialize_std_pair_on_both(int,gh_number_p,
517                               gh_scm2long,gh_long2scm,
518                               short,gh_number_p,
519                               gh_scm2long,gh_long2scm);
520    specialize_std_pair_on_both(int,gh_number_p,
521                               gh_scm2long,gh_long2scm,
522                               long,gh_number_p,
523                               gh_scm2long,gh_long2scm);
524    specialize_std_pair_on_both(int,gh_number_p,
525                               gh_scm2long,gh_long2scm,
526                               unsigned int,gh_number_p,
527                               gh_scm2ulong,gh_ulong2scm);
528    specialize_std_pair_on_both(int,gh_number_p,
529                               gh_scm2long,gh_long2scm,
530                               unsigned short,gh_number_p,
531                               gh_scm2ulong,gh_ulong2scm);
532    specialize_std_pair_on_both(int,gh_number_p,
533                               gh_scm2long,gh_long2scm,
534                               unsigned long,gh_number_p,
535                               gh_scm2ulong,gh_ulong2scm);
536    specialize_std_pair_on_both(int,gh_number_p,
537                               gh_scm2long,gh_long2scm,
538                               double,gh_number_p,
539                               gh_scm2double,gh_double2scm);
540    specialize_std_pair_on_both(int,gh_number_p,
541                               gh_scm2long,gh_long2scm,
542                               float,gh_number_p,
543                               gh_scm2double,gh_double2scm);
544    specialize_std_pair_on_both(int,gh_number_p,
545                               gh_scm2long,gh_long2scm,
546                               std::string,gh_string_p,
547                               SWIG_scm2string,SWIG_string2scm);
548    specialize_std_pair_on_both(short,gh_number_p,
549                               gh_scm2long,gh_long2scm,
550                               bool,gh_boolean_p,
551                               gh_scm2bool,SWIG_bool2scm);
552    specialize_std_pair_on_both(short,gh_number_p,
553                               gh_scm2long,gh_long2scm,
554                               int,gh_number_p,
555                               gh_scm2long,gh_long2scm);
556    specialize_std_pair_on_both(short,gh_number_p,
557                               gh_scm2long,gh_long2scm,
558                               short,gh_number_p,
559                               gh_scm2long,gh_long2scm);
560    specialize_std_pair_on_both(short,gh_number_p,
561                               gh_scm2long,gh_long2scm,
562                               long,gh_number_p,
563                               gh_scm2long,gh_long2scm);
564    specialize_std_pair_on_both(short,gh_number_p,
565                               gh_scm2long,gh_long2scm,
566                               unsigned int,gh_number_p,
567                               gh_scm2ulong,gh_ulong2scm);
568    specialize_std_pair_on_both(short,gh_number_p,
569                               gh_scm2long,gh_long2scm,
570                               unsigned short,gh_number_p,
571                               gh_scm2ulong,gh_ulong2scm);
572    specialize_std_pair_on_both(short,gh_number_p,
573                               gh_scm2long,gh_long2scm,
574                               unsigned long,gh_number_p,
575                               gh_scm2ulong,gh_ulong2scm);
576    specialize_std_pair_on_both(short,gh_number_p,
577                               gh_scm2long,gh_long2scm,
578                               double,gh_number_p,
579                               gh_scm2double,gh_double2scm);
580    specialize_std_pair_on_both(short,gh_number_p,
581                               gh_scm2long,gh_long2scm,
582                               float,gh_number_p,
583                               gh_scm2double,gh_double2scm);
584    specialize_std_pair_on_both(short,gh_number_p,
585                               gh_scm2long,gh_long2scm,
586                               std::string,gh_string_p,
587                               SWIG_scm2string,SWIG_string2scm);
588    specialize_std_pair_on_both(long,gh_number_p,
589                               gh_scm2long,gh_long2scm,
590                               bool,gh_boolean_p,
591                               gh_scm2bool,SWIG_bool2scm);
592    specialize_std_pair_on_both(long,gh_number_p,
593                               gh_scm2long,gh_long2scm,
594                               int,gh_number_p,
595                               gh_scm2long,gh_long2scm);
596    specialize_std_pair_on_both(long,gh_number_p,
597                               gh_scm2long,gh_long2scm,
598                               short,gh_number_p,
599                               gh_scm2long,gh_long2scm);
600    specialize_std_pair_on_both(long,gh_number_p,
601                               gh_scm2long,gh_long2scm,
602                               long,gh_number_p,
603                               gh_scm2long,gh_long2scm);
604    specialize_std_pair_on_both(long,gh_number_p,
605                               gh_scm2long,gh_long2scm,
606                               unsigned int,gh_number_p,
607                               gh_scm2ulong,gh_ulong2scm);
608    specialize_std_pair_on_both(long,gh_number_p,
609                               gh_scm2long,gh_long2scm,
610                               unsigned short,gh_number_p,
611                               gh_scm2ulong,gh_ulong2scm);
612    specialize_std_pair_on_both(long,gh_number_p,
613                               gh_scm2long,gh_long2scm,
614                               unsigned long,gh_number_p,
615                               gh_scm2ulong,gh_ulong2scm);
616    specialize_std_pair_on_both(long,gh_number_p,
617                               gh_scm2long,gh_long2scm,
618                               double,gh_number_p,
619                               gh_scm2double,gh_double2scm);
620    specialize_std_pair_on_both(long,gh_number_p,
621                               gh_scm2long,gh_long2scm,
622                               float,gh_number_p,
623                               gh_scm2double,gh_double2scm);
624    specialize_std_pair_on_both(long,gh_number_p,
625                               gh_scm2long,gh_long2scm,
626                               std::string,gh_string_p,
627                               SWIG_scm2string,SWIG_string2scm);
628    specialize_std_pair_on_both(unsigned int,gh_number_p,
629                               gh_scm2ulong,gh_ulong2scm,
630                               bool,gh_boolean_p,
631                               gh_scm2bool,SWIG_bool2scm);
632    specialize_std_pair_on_both(unsigned int,gh_number_p,
633                               gh_scm2ulong,gh_ulong2scm,
634                               int,gh_number_p,
635                               gh_scm2long,gh_long2scm);
636    specialize_std_pair_on_both(unsigned int,gh_number_p,
637                               gh_scm2ulong,gh_ulong2scm,
638                               short,gh_number_p,
639                               gh_scm2long,gh_long2scm);
640    specialize_std_pair_on_both(unsigned int,gh_number_p,
641                               gh_scm2ulong,gh_ulong2scm,
642                               long,gh_number_p,
643                               gh_scm2long,gh_long2scm);
644    specialize_std_pair_on_both(unsigned int,gh_number_p,
645                               gh_scm2ulong,gh_ulong2scm,
646                               unsigned int,gh_number_p,
647                               gh_scm2ulong,gh_ulong2scm);
648    specialize_std_pair_on_both(unsigned int,gh_number_p,
649                               gh_scm2ulong,gh_ulong2scm,
650                               unsigned short,gh_number_p,
651                               gh_scm2ulong,gh_ulong2scm);
652    specialize_std_pair_on_both(unsigned int,gh_number_p,
653                               gh_scm2ulong,gh_ulong2scm,
654                               unsigned long,gh_number_p,
655                               gh_scm2ulong,gh_ulong2scm);
656    specialize_std_pair_on_both(unsigned int,gh_number_p,
657                               gh_scm2ulong,gh_ulong2scm,
658                               double,gh_number_p,
659                               gh_scm2double,gh_double2scm);
660    specialize_std_pair_on_both(unsigned int,gh_number_p,
661                               gh_scm2ulong,gh_ulong2scm,
662                               float,gh_number_p,
663                               gh_scm2double,gh_double2scm);
664    specialize_std_pair_on_both(unsigned int,gh_number_p,
665                               gh_scm2ulong,gh_ulong2scm,
666                               std::string,gh_string_p,
667                               SWIG_scm2string,SWIG_string2scm);
668    specialize_std_pair_on_both(unsigned short,gh_number_p,
669                               gh_scm2ulong,gh_ulong2scm,
670                               bool,gh_boolean_p,
671                               gh_scm2bool,SWIG_bool2scm);
672    specialize_std_pair_on_both(unsigned short,gh_number_p,
673                               gh_scm2ulong,gh_ulong2scm,
674                               int,gh_number_p,
675                               gh_scm2long,gh_long2scm);
676    specialize_std_pair_on_both(unsigned short,gh_number_p,
677                               gh_scm2ulong,gh_ulong2scm,
678                               short,gh_number_p,
679                               gh_scm2long,gh_long2scm);
680    specialize_std_pair_on_both(unsigned short,gh_number_p,
681                               gh_scm2ulong,gh_ulong2scm,
682                               long,gh_number_p,
683                               gh_scm2long,gh_long2scm);
684    specialize_std_pair_on_both(unsigned short,gh_number_p,
685                               gh_scm2ulong,gh_ulong2scm,
686                               unsigned int,gh_number_p,
687                               gh_scm2ulong,gh_ulong2scm);
688    specialize_std_pair_on_both(unsigned short,gh_number_p,
689                               gh_scm2ulong,gh_ulong2scm,
690                               unsigned short,gh_number_p,
691                               gh_scm2ulong,gh_ulong2scm);
692    specialize_std_pair_on_both(unsigned short,gh_number_p,
693                               gh_scm2ulong,gh_ulong2scm,
694                               unsigned long,gh_number_p,
695                               gh_scm2ulong,gh_ulong2scm);
696    specialize_std_pair_on_both(unsigned short,gh_number_p,
697                               gh_scm2ulong,gh_ulong2scm,
698                               double,gh_number_p,
699                               gh_scm2double,gh_double2scm);
700    specialize_std_pair_on_both(unsigned short,gh_number_p,
701                               gh_scm2ulong,gh_ulong2scm,
702                               float,gh_number_p,
703                               gh_scm2double,gh_double2scm);
704    specialize_std_pair_on_both(unsigned short,gh_number_p,
705                               gh_scm2ulong,gh_ulong2scm,
706                               std::string,gh_string_p,
707                               SWIG_scm2string,SWIG_string2scm);
708    specialize_std_pair_on_both(unsigned long,gh_number_p,
709                               gh_scm2ulong,gh_ulong2scm,
710                               bool,gh_boolean_p,
711                               gh_scm2bool,SWIG_bool2scm);
712    specialize_std_pair_on_both(unsigned long,gh_number_p,
713                               gh_scm2ulong,gh_ulong2scm,
714                               int,gh_number_p,
715                               gh_scm2long,gh_long2scm);
716    specialize_std_pair_on_both(unsigned long,gh_number_p,
717                               gh_scm2ulong,gh_ulong2scm,
718                               short,gh_number_p,
719                               gh_scm2long,gh_long2scm);
720    specialize_std_pair_on_both(unsigned long,gh_number_p,
721                               gh_scm2ulong,gh_ulong2scm,
722                               long,gh_number_p,
723                               gh_scm2long,gh_long2scm);
724    specialize_std_pair_on_both(unsigned long,gh_number_p,
725                               gh_scm2ulong,gh_ulong2scm,
726                               unsigned int,gh_number_p,
727                               gh_scm2ulong,gh_ulong2scm);
728    specialize_std_pair_on_both(unsigned long,gh_number_p,
729                               gh_scm2ulong,gh_ulong2scm,
730                               unsigned short,gh_number_p,
731                               gh_scm2ulong,gh_ulong2scm);
732    specialize_std_pair_on_both(unsigned long,gh_number_p,
733                               gh_scm2ulong,gh_ulong2scm,
734                               unsigned long,gh_number_p,
735                               gh_scm2ulong,gh_ulong2scm);
736    specialize_std_pair_on_both(unsigned long,gh_number_p,
737                               gh_scm2ulong,gh_ulong2scm,
738                               double,gh_number_p,
739                               gh_scm2double,gh_double2scm);
740    specialize_std_pair_on_both(unsigned long,gh_number_p,
741                               gh_scm2ulong,gh_ulong2scm,
742                               float,gh_number_p,
743                               gh_scm2double,gh_double2scm);
744    specialize_std_pair_on_both(unsigned long,gh_number_p,
745                               gh_scm2ulong,gh_ulong2scm,
746                               std::string,gh_string_p,
747                               SWIG_scm2string,SWIG_string2scm);
748    specialize_std_pair_on_both(double,gh_number_p,
749                               gh_scm2double,gh_double2scm,
750                               bool,gh_boolean_p,
751                               gh_scm2bool,SWIG_bool2scm);
752    specialize_std_pair_on_both(double,gh_number_p,
753                               gh_scm2double,gh_double2scm,
754                               int,gh_number_p,
755                               gh_scm2long,gh_long2scm);
756    specialize_std_pair_on_both(double,gh_number_p,
757                               gh_scm2double,gh_double2scm,
758                               short,gh_number_p,
759                               gh_scm2long,gh_long2scm);
760    specialize_std_pair_on_both(double,gh_number_p,
761                               gh_scm2double,gh_double2scm,
762                               long,gh_number_p,
763                               gh_scm2long,gh_long2scm);
764    specialize_std_pair_on_both(double,gh_number_p,
765                               gh_scm2double,gh_double2scm,
766                               unsigned int,gh_number_p,
767                               gh_scm2ulong,gh_ulong2scm);
768    specialize_std_pair_on_both(double,gh_number_p,
769                               gh_scm2double,gh_double2scm,
770                               unsigned short,gh_number_p,
771                               gh_scm2ulong,gh_ulong2scm);
772    specialize_std_pair_on_both(double,gh_number_p,
773                               gh_scm2double,gh_double2scm,
774                               unsigned long,gh_number_p,
775                               gh_scm2ulong,gh_ulong2scm);
776    specialize_std_pair_on_both(double,gh_number_p,
777                               gh_scm2double,gh_double2scm,
778                               double,gh_number_p,
779                               gh_scm2double,gh_double2scm);
780    specialize_std_pair_on_both(double,gh_number_p,
781                               gh_scm2double,gh_double2scm,
782                               float,gh_number_p,
783                               gh_scm2double,gh_double2scm);
784    specialize_std_pair_on_both(double,gh_number_p,
785                               gh_scm2double,gh_double2scm,
786                               std::string,gh_string_p,
787                               SWIG_scm2string,SWIG_string2scm);
788    specialize_std_pair_on_both(float,gh_number_p,
789                               gh_scm2double,gh_double2scm,
790                               bool,gh_boolean_p,
791                               gh_scm2bool,SWIG_bool2scm);
792    specialize_std_pair_on_both(float,gh_number_p,
793                               gh_scm2double,gh_double2scm,
794                               int,gh_number_p,
795                               gh_scm2long,gh_long2scm);
796    specialize_std_pair_on_both(float,gh_number_p,
797                               gh_scm2double,gh_double2scm,
798                               short,gh_number_p,
799                               gh_scm2long,gh_long2scm);
800    specialize_std_pair_on_both(float,gh_number_p,
801                               gh_scm2double,gh_double2scm,
802                               long,gh_number_p,
803                               gh_scm2long,gh_long2scm);
804    specialize_std_pair_on_both(float,gh_number_p,
805                               gh_scm2double,gh_double2scm,
806                               unsigned int,gh_number_p,
807                               gh_scm2ulong,gh_ulong2scm);
808    specialize_std_pair_on_both(float,gh_number_p,
809                               gh_scm2double,gh_double2scm,
810                               unsigned short,gh_number_p,
811                               gh_scm2ulong,gh_ulong2scm);
812    specialize_std_pair_on_both(float,gh_number_p,
813                               gh_scm2double,gh_double2scm,
814                               unsigned long,gh_number_p,
815                               gh_scm2ulong,gh_ulong2scm);
816    specialize_std_pair_on_both(float,gh_number_p,
817                               gh_scm2double,gh_double2scm,
818                               double,gh_number_p,
819                               gh_scm2double,gh_double2scm);
820    specialize_std_pair_on_both(float,gh_number_p,
821                               gh_scm2double,gh_double2scm,
822                               float,gh_number_p,
823                               gh_scm2double,gh_double2scm);
824    specialize_std_pair_on_both(float,gh_number_p,
825                               gh_scm2double,gh_double2scm,
826                               std::string,gh_string_p,
827                               SWIG_scm2string,SWIG_string2scm);
828    specialize_std_pair_on_both(std::string,gh_string_p,
829                               SWIG_scm2string,SWIG_string2scm,
830                               bool,gh_boolean_p,
831                               gh_scm2bool,SWIG_bool2scm);
832    specialize_std_pair_on_both(std::string,gh_string_p,
833                               SWIG_scm2string,SWIG_string2scm,
834                               int,gh_number_p,
835                               gh_scm2long,gh_long2scm);
836    specialize_std_pair_on_both(std::string,gh_string_p,
837                               SWIG_scm2string,SWIG_string2scm,
838                               short,gh_number_p,
839                               gh_scm2long,gh_long2scm);
840    specialize_std_pair_on_both(std::string,gh_string_p,
841                               SWIG_scm2string,SWIG_string2scm,
842                               long,gh_number_p,
843                               gh_scm2long,gh_long2scm);
844    specialize_std_pair_on_both(std::string,gh_string_p,
845                               SWIG_scm2string,SWIG_string2scm,
846                               unsigned int,gh_number_p,
847                               gh_scm2ulong,gh_ulong2scm);
848    specialize_std_pair_on_both(std::string,gh_string_p,
849                               SWIG_scm2string,SWIG_string2scm,
850                               unsigned short,gh_number_p,
851                               gh_scm2ulong,gh_ulong2scm);
852    specialize_std_pair_on_both(std::string,gh_string_p,
853                               SWIG_scm2string,SWIG_string2scm,
854                               unsigned long,gh_number_p,
855                               gh_scm2ulong,gh_ulong2scm);
856    specialize_std_pair_on_both(std::string,gh_string_p,
857                               SWIG_scm2string,SWIG_string2scm,
858                               double,gh_number_p,
859                               gh_scm2double,gh_double2scm);
860    specialize_std_pair_on_both(std::string,gh_string_p,
861                               SWIG_scm2string,SWIG_string2scm,
862                               float,gh_number_p,
863                               gh_scm2double,gh_double2scm);
864    specialize_std_pair_on_both(std::string,gh_string_p,
865                               SWIG_scm2string,SWIG_string2scm,
866                               std::string,gh_string_p,
867                               SWIG_scm2string,SWIG_string2scm);
868}