make R package strict c99
This commit is contained in:
parent
8863c520e7
commit
a6ce55493d
@ -1,9 +1,9 @@
|
|||||||
# package root
|
# package root
|
||||||
PKGROOT=../../
|
PKGROOT=../../
|
||||||
# _*_ mode: Makefile; _*_
|
# _*_ mode: Makefile; _*_
|
||||||
PKG_CPPFLAGS= -DXGBOOST_CUSTOMIZE_MSG_ -DXGBOOST_CUSTOMIZE_PRNG_ -I$(PKGROOT)
|
PKG_CPPFLAGS= -DXGBOOST_CUSTOMIZE_MSG_ -DXGBOOST_CUSTOMIZE_PRNG_ -DXGBOOST_STRICT_CXX98_ -I$(PKGROOT)
|
||||||
PKG_CXXFLAGS= $(SHLIB_OPENMP_CFLAGS)
|
PKG_CXXFLAGS= $(SHLIB_OPENMP_CFLAGS)
|
||||||
PKG_LIBS = $(SHLIB_OPENMP_CFLAGS)
|
PKG_LIBS = $(SHLIB_OPENMP_CFLAGS)
|
||||||
OBJECTS= xgboost_R.o $(PKGROOT)/wrapper/xgboost_wrapper.o $(PKGROOT)/src/io/io.o $(PKGROOT)/src/gbm/gbm.o $(PKGROOT)/src/tree/updater.o
|
OBJECTS= xgboost_R.o xgboost_assert.o $(PKGROOT)/wrapper/xgboost_wrapper.o $(PKGROOT)/src/io/io.o $(PKGROOT)/src/gbm/gbm.o $(PKGROOT)/src/tree/updater.o
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
# package root
|
# package root
|
||||||
PKGROOT=../../
|
PKGROOT=../../
|
||||||
# _*_ mode: Makefile; _*_
|
# _*_ mode: Makefile; _*_
|
||||||
PKG_CPPFLAGS= -DXGBOOST_CUSTOMIZE_MSG_ -DXGBOOST_CUSTOMIZE_PRNG_ -I$(PKGROOT)
|
PKG_CPPFLAGS= -DXGBOOST_CUSTOMIZE_MSG_ -DXGBOOST_CUSTOMIZE_PRNG_ -DXGBOOST_STRICT_CXX98_ -I$(PKGROOT)
|
||||||
PKG_CXXFLAGS= $(SHLIB_OPENMP_CFLAGS)
|
PKG_CXXFLAGS= $(SHLIB_OPENMP_CFLAGS)
|
||||||
PKG_LIBS = $(SHLIB_OPENMP_CFLAGS)
|
PKG_LIBS = $(SHLIB_OPENMP_CFLAGS)
|
||||||
OBJECTS= xgboost_R.o $(PKGROOT)/wrapper/xgboost_wrapper.o $(PKGROOT)/src/io/io.o $(PKGROOT)/src/gbm/gbm.o $(PKGROOT)/src/tree/updater.o
|
OBJECTS= xgboost_R.o xgboost_assert.o $(PKGROOT)/wrapper/xgboost_wrapper.o $(PKGROOT)/src/io/io.o $(PKGROOT)/src/gbm/gbm.o $(PKGROOT)/src/tree/updater.o
|
||||||
|
|||||||
@ -8,21 +8,22 @@
|
|||||||
#include "src/utils/utils.h"
|
#include "src/utils/utils.h"
|
||||||
#include "src/utils/omp.h"
|
#include "src/utils/omp.h"
|
||||||
#include "src/utils/matrix_csr.h"
|
#include "src/utils/matrix_csr.h"
|
||||||
|
|
||||||
using namespace xgboost;
|
using namespace xgboost;
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
void XGBoostAssert_R(int exp, const char *fmt, ...);
|
||||||
|
void XGBoostCheck_R(int exp, const char *fmt, ...);
|
||||||
|
}
|
||||||
|
|
||||||
// implements error handling
|
// implements error handling
|
||||||
namespace xgboost {
|
namespace xgboost {
|
||||||
namespace utils {
|
namespace utils {
|
||||||
void HandleAssertError(const char *msg) {
|
void (*Printf)(const char *fmt, ...) = Rprintf;
|
||||||
error("%s", msg);
|
void (*Assert)(int exp, const char *fmt, ...) = XGBoostAssert_R;
|
||||||
}
|
void (*Check)(int exp, const char *fmt, ...) = XGBoostCheck_R;
|
||||||
void HandleCheckError(const char *msg) {
|
void (*Error)(const char *fmt, ...) = error;
|
||||||
error("%s", msg);
|
|
||||||
}
|
|
||||||
void HandlePrint(const char *msg) {
|
|
||||||
Rprintf("%s", msg);
|
|
||||||
}
|
|
||||||
} // namespace utils
|
} // namespace utils
|
||||||
|
|
||||||
namespace random {
|
namespace random {
|
||||||
void Seed(unsigned seed) {
|
void Seed(unsigned seed) {
|
||||||
warning("parameter seed is ignored, please set random seed using set.seed");
|
warning("parameter seed is ignored, please set random seed using set.seed");
|
||||||
|
|||||||
25
R-package/src/xgboost_assert.c
Normal file
25
R-package/src/xgboost_assert.c
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <Rinternals.h>
|
||||||
|
|
||||||
|
// implements error handling
|
||||||
|
void XGBoostAssert_R(int exp, const char *fmt, ...) {
|
||||||
|
char buf[1024];
|
||||||
|
if (exp == 0) {
|
||||||
|
va_list args;
|
||||||
|
va_start(args, fmt);
|
||||||
|
vsprintf(buf, fmt, args);
|
||||||
|
va_end(args);
|
||||||
|
error("AssertError:%s\n", buf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void XGBoostCheck_R(int exp, const char *fmt, ...) {
|
||||||
|
char buf[1024];
|
||||||
|
if (exp == 0) {
|
||||||
|
va_list args;
|
||||||
|
va_start(args, fmt);
|
||||||
|
vsprintf(buf, fmt, args);
|
||||||
|
va_end(args);
|
||||||
|
error("%s\n", buf);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -70,14 +70,23 @@ inline void HandlePrint(const char *msg) {
|
|||||||
printf("%s", msg);
|
printf("%s", msg);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
#ifndef XGBOOST_STRICT_CXX98__
|
||||||
// include declarations, some one must implement this
|
// include declarations, some one must implement this
|
||||||
void HandleAssertError(const char *msg);
|
void HandleAssertError(const char *msg);
|
||||||
void HandleCheckError(const char *msg);
|
void HandleCheckError(const char *msg);
|
||||||
void HandlePrint(const char *msg);
|
void HandlePrint(const char *msg);
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef XGBOOST_STRICT_CXX98_
|
||||||
|
// these function pointers are to be assigned
|
||||||
|
extern void (*Printf)(const char *fmt, ...);
|
||||||
|
extern void (*Assert)(int exp, const char *fmt, ...);
|
||||||
|
extern void (*Check)(int exp, const char *fmt, ...);
|
||||||
|
extern void (*Error)(const char *fmt, ...);
|
||||||
|
#else
|
||||||
/*! \brief printf, print message to the console */
|
/*! \brief printf, print message to the console */
|
||||||
inline void Printf(const char *fmt, ...) {
|
inline void Printf(const char *fmt, ...) {
|
||||||
std::string msg(kPrintBuffer, '\0');
|
std::string msg(kPrintBuffer, '\0');
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start(args, fmt);
|
va_start(args, fmt);
|
||||||
@ -121,6 +130,7 @@ inline void Error(const char *fmt, ...) {
|
|||||||
HandleCheckError(msg.c_str());
|
HandleCheckError(msg.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*! \brief replace fopen, report error when the file open fails */
|
/*! \brief replace fopen, report error when the file open fails */
|
||||||
inline FILE *FopenCheck(const char *fname, const char *flag) {
|
inline FILE *FopenCheck(const char *fname, const char *flag) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user