8e1b23779f
#if defined (c_plusplus) defined (__cplusplus) followed by extern "C" { and the closing counterpart by BEGIN_C_DECLS and END_C_DECLS. Notable exceptions are: - opal/include/opal_config_bottom.h: This is our generated code, that itself defines BEGIN_C_DECL and END_C_DECL - ompi/mpi/cxx/mpicxx.h: Here we do not include opal_config_bottom.h: - Belongs to external code: opal/mca/backtrace/darwin/MoreBacktrace/MoreDebugging/MoreBacktrace.c opal/mca/backtrace/darwin/MoreBacktrace/MoreDebugging/MoreBacktrace.h - opal/include/opal/prefetch.h: Has C++ specific macros that are protected: - Had #if ... } #endif _and_ END_C_DECLS (aka end up with 2x END_C_DECLS) ompi/mca/btl/openib/btl_openib.h - opal/event/event.h has #ifdef __cplusplus as BEGIN_C_DECLS... - opal/win32/ompi_process.h: had extern "C"\n {... opal/win32/ompi_process.h: dito - ompi/mca/btl/pcie/btl_pcie_lex.l: needed to add *_C_DECLS ompi/mpi/f90/test/align_c.c: dito - ompi/debuggers/msgq_interface.h: used #ifdef __cplusplus - ompi/mpi/f90/xml/common-C.xsl: Amend Tested on linux using --with-openib and --with-mx The following do not contain either opal_config.h, orte_config.h or ompi_config.h (but possibly other header files, that include one of the above): ompi/mca/bml/r2/bml_r2_ft.h ompi/mca/btl/gm/btl_gm_endpoint.h ompi/mca/btl/gm/btl_gm_proc.h ompi/mca/btl/mx/btl_mx_endpoint.h ompi/mca/btl/ofud/btl_ofud_endpoint.h ompi/mca/btl/ofud/btl_ofud_frag.h ompi/mca/btl/ofud/btl_ofud_proc.h ompi/mca/btl/openib/btl_openib_mca.h ompi/mca/btl/portals/btl_portals_endpoint.h ompi/mca/btl/portals/btl_portals_frag.h ompi/mca/btl/sctp/btl_sctp_endpoint.h ompi/mca/btl/sctp/btl_sctp_proc.h ompi/mca/btl/tcp/btl_tcp_endpoint.h ompi/mca/btl/tcp/btl_tcp_ft.h ompi/mca/btl/tcp/btl_tcp_proc.h ompi/mca/btl/template/btl_template_endpoint.h ompi/mca/btl/template/btl_template_proc.h ompi/mca/btl/udapl/btl_udapl_eager_rdma.h ompi/mca/btl/udapl/btl_udapl_endpoint.h ompi/mca/btl/udapl/btl_udapl_mca.h ompi/mca/btl/udapl/btl_udapl_proc.h ompi/mca/mtl/mx/mtl_mx_endpoint.h ompi/mca/mtl/mx/mtl_mx.h ompi/mca/mtl/psm/mtl_psm_endpoint.h ompi/mca/mtl/psm/mtl_psm.h ompi/mca/pml/cm/pml_cm_component.h ompi/mca/pml/csum/pml_csum_comm.h ompi/mca/pml/dr/pml_dr_comm.h ompi/mca/pml/dr/pml_dr_component.h ompi/mca/pml/dr/pml_dr_endpoint.h ompi/mca/pml/dr/pml_dr_recvfrag.h ompi/mca/pml/example/pml_example.h ompi/mca/pml/ob1/pml_ob1_comm.h ompi/mca/pml/ob1/pml_ob1_component.h ompi/mca/pml/ob1/pml_ob1_endpoint.h ompi/mca/pml/ob1/pml_ob1_rdmafrag.h ompi/mca/pml/ob1/pml_ob1_recvfrag.h ompi/mca/pml/v/pml_v_output.h opal/include/opal/prefetch.h opal/mca/timer/aix/timer_aix.h opal/util/qsort.h test/support/components.h This commit was SVN r21855. The following SVN revision numbers were found above: r2 --> open-mpi/ompi@58fdc18855
124 строки
3.5 KiB
C
124 строки
3.5 KiB
C
%{ /* -*- C -*- */
|
|
/*
|
|
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
|
* University Research and Technology
|
|
* Corporation. All rights reserved.
|
|
* Copyright (c) 2004-2006 The University of Tennessee and The University
|
|
* of Tennessee Research Foundation. All rights
|
|
* reserved.
|
|
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
|
* University of Stuttgart. All rights reserved.
|
|
* Copyright (c) 2004-2005 The Regents of the University of California.
|
|
* All rights reserved.
|
|
* $COPYRIGHT$
|
|
*
|
|
* Additional copyrights may follow
|
|
*
|
|
* $HEADER$
|
|
*/
|
|
|
|
#include "opal_config.h"
|
|
|
|
#include <stdio.h>
|
|
#ifdef HAVE_UNISTD_H
|
|
#include <unistd.h>
|
|
#endif
|
|
|
|
#include "opal/util/keyval/keyval_lex.h"
|
|
|
|
/*
|
|
* local functions
|
|
*/
|
|
|
|
BEGIN_C_DECLS
|
|
|
|
static int finish_parsing(void);
|
|
int opal_util_keyval_yywrap(void);
|
|
|
|
END_C_DECLS
|
|
|
|
/*
|
|
* global variables
|
|
*/
|
|
int opal_util_keyval_yynewlines = 1;
|
|
bool opal_util_keyval_parse_done = false;
|
|
char *opal_util_keyval_string = NULL;
|
|
|
|
#define yyterminate() \
|
|
return finish_parsing()
|
|
|
|
%}
|
|
|
|
WHITE [\f\t\v ]
|
|
CHAR [A-Za-z0-9_\-\.]
|
|
|
|
%x VALUE
|
|
%x comment
|
|
|
|
%%
|
|
|
|
{WHITE}*\n { opal_util_keyval_yynewlines++; return OPAL_UTIL_KEYVAL_PARSE_NEWLINE; }
|
|
#.*\n { opal_util_keyval_yynewlines++; return OPAL_UTIL_KEYVAL_PARSE_NEWLINE; }
|
|
"//".*\n { opal_util_keyval_yynewlines++; return OPAL_UTIL_KEYVAL_PARSE_NEWLINE; }
|
|
|
|
"/*" { BEGIN(comment);
|
|
return OPAL_UTIL_KEYVAL_PARSE_NEWLINE; }
|
|
<comment>[^*\n]* ; /* Eat up non '*'s */
|
|
<comment>"*"+[^*/\n]* ; /* Eat '*'s not followed by a '/' */
|
|
<comment>\n { opal_util_keyval_yynewlines++;
|
|
return OPAL_UTIL_KEYVAL_PARSE_NEWLINE; }
|
|
<comment>"*"+"/" { BEGIN(INITIAL); /* Done with Block Comment */
|
|
return OPAL_UTIL_KEYVAL_PARSE_NEWLINE; }
|
|
|
|
{WHITE}*"="{WHITE}* { BEGIN(VALUE); return OPAL_UTIL_KEYVAL_PARSE_EQUAL; }
|
|
{WHITE}+ ; /* whitespace */
|
|
{CHAR}+ { return OPAL_UTIL_KEYVAL_PARSE_SINGLE_WORD; }
|
|
|
|
<VALUE>{WHITE}*\n { BEGIN(INITIAL); return OPAL_UTIL_KEYVAL_PARSE_NEWLINE; }
|
|
<VALUE>[^\n]*[^\t \n]/[\t ]* { return OPAL_UTIL_KEYVAL_PARSE_VALUE; }
|
|
|
|
. { return OPAL_UTIL_KEYVAL_PARSE_ERROR; }
|
|
|
|
%%
|
|
|
|
|
|
/*
|
|
* This cleans up at the end of the parse (since, in this case, we
|
|
* always parse the entire file) and prevents a memory leak.
|
|
*/
|
|
static int finish_parsing(void)
|
|
{
|
|
if (NULL != YY_CURRENT_BUFFER) {
|
|
yy_delete_buffer(YY_CURRENT_BUFFER);
|
|
#if defined(YY_CURRENT_BUFFER_LVALUE)
|
|
YY_CURRENT_BUFFER_LVALUE = NULL;
|
|
#else
|
|
YY_CURRENT_BUFFER = NULL;
|
|
#endif /* YY_CURRENT_BUFFER_LVALUE */
|
|
}
|
|
return YY_NULL;
|
|
}
|
|
|
|
int opal_util_keyval_yywrap(void)
|
|
{
|
|
opal_util_keyval_parse_done = true;
|
|
return 1;
|
|
}
|
|
|
|
/*
|
|
* Ensure that we have a valid yybuffer to use. Specifically, if this
|
|
* scanner is invoked a second time, finish_parsing() (above) will
|
|
* have been executed, and the current buffer will have been freed.
|
|
* Flex doesn't recognize this fact because as far as it's concerned,
|
|
* its internal state was already initialized, so it thinks it should
|
|
* have a valid buffer. Hence, here we ensure to give it a valid
|
|
* buffer.
|
|
*/
|
|
int opal_util_keyval_init_buffer(FILE *file)
|
|
{
|
|
YY_BUFFER_STATE buf = yy_create_buffer(file, YY_BUF_SIZE);
|
|
yy_switch_to_buffer(buf);
|
|
|
|
return 0;
|
|
}
|