// [[[ HEADER ]]]
using
std::cout;
using
std::cerr;
using
std::endl;
#ifndef __CPP__INCLUDED__RPerl_h
#define __CPP__INCLUDED__RPerl_h 0.002_000
// [[[ INCLUDES ]]]
#include <rperltypes_mode.h> // for default definitions of __PERL__TYPES or __CPP__TYPES
#include <rperloperations.h> // for operations
#include <rperltypes.h> // for data types and structures
#include <RPerl/HelperFunctions.cpp> // -> HelperFunctions.h
# ifdef __PERL__TYPES
// [[[<<< BEGIN PERL TYPES >>>]]]
// [[[<<< BEGIN PERL TYPES >>>]]]
// [[[<<< BEGIN PERL TYPES >>>]]]
// [[[ SUBROUTINES, EARLY ]]]
int
RPerl__diag(SV* message);
// [[[ OO INHERITANCE ]]]
class
RPerl {
// no inheritance
public
:
// [[[ OO METHODS ]]]
// DEV NOTE: 'static' keyword with early-declared & separately-defined RPerl__diag() allows calling RPerl::diag() in C++
static
int
diag(SV* message) {
return
RPerl__diag(message); };
};
// [[[ SUBROUTINES ]]]
// <<< OPERATIONS & DATA TYPES REPORTER >>>
SV* RPerl__MODE_ID() {
return
(newSViv(1)); }
// CPPOPS_PERLTYPES is 1
// [[[<<< END PERL TYPES >>>]]]
// [[[<<< END PERL TYPES >>>]]]
// [[[<<< END PERL TYPES >>>]]]
# elif defined __CPP__TYPES
// [[[<<< BEGIN CPP TYPES >>>]]]
// [[[<<< BEGIN CPP TYPES >>>]]]
// [[[<<< BEGIN CPP TYPES >>>]]]
// [[[ SUBROUTINES, EARLY ]]]
integer RPerl__diag(string message);
integer RPerl__verbose(string message);
integer RPerl__warning(string message);
// [[[ OO INHERITANCE ]]]
class
RPerl {
// no inheritance
public
:
// [[[ OO METHODS ]]]
// DEV NOTE: 'static' keyword with early-declared & separately-defined RPerl__*() allows calling RPerl::*() in C++
static
integer diag(string message) {
return
RPerl__diag(message); };
static
integer verbose(string message) {
return
RPerl__verbose(message); };
static
integer warning(string message) {
return
RPerl__warning(message); };
};
// [[[ OO CLASS PROPERTIES SPECIAL ]]]
// DEV NOTE, CORRELATION #rp032: NEED UPGRADE: properly determine whether to use DBL_EPSILON or FLT_EPSILON below
#define RPerl__EPSILON DBL_EPSILON
//#define RPerl__EPSILON FLT_EPSILON
// [[[ SUBROUTINES ]]]
// <<< OPERATIONS & DATA TYPES REPORTER >>>
integer RPerl__MODE_ID() {
return
2; }
// CPPOPS_CPPTYPES is 2
// [[[<<< END CPP TYPES >>>]]]
// [[[<<< END CPP TYPES >>>]]]
// [[[<<< END CPP TYPES >>>]]]
# else
Purposefully_die_from_a_compile-time_error,_due_to_neither___PERL__TYPES_nor___CPP__TYPES_being_defined.__We_need_to_define_exactly_one!
# endif
#endif