Sponsoring The Perl Toolchain Summit 2025: Help make this important event another success Learn more

// [[[ 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