Jpp
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
JEEP::JFunctionAdaptor< JReturn_t, JFirst_t, JSecond_t > Struct Template Reference

Function adaptor. More...

#include <JFunctionAdaptor.hh>

Inheritance diagram for JEEP::JFunctionAdaptor< JReturn_t, JFirst_t, JSecond_t >:
JEEP::JFunctionAdaptorHelper< JReturn_t(*)(JFirst_t, JSecond_t)> JLANG::JSharedCounter

Public Types

typedef JReturn_t(* pF) (JFirst_t, JSecond_t)
 Type definition of method. More...
 

Public Member Functions

 JFunctionAdaptor ()
 Default constructor. More...
 
 JFunctionAdaptor (const JFunctionAdaptor &adaptor)
 Copy constructor. More...
 
 JFunctionAdaptor (pF pf)
 Constructor. More...
 
 JFunctionAdaptor (const char *file_name, const char *function_name)
 Constructor. More...
 
JReturn_t operator() (JFirst_t first, JSecond_t second) const
 Function operation. More...
 
bool is_valid () const
 Check validity. More...
 
void reset ()
 Reset function adaptor helper. More...
 
void set (JReturn_t(*)(JFirst_t, JSecond_t) pf)
 Set function. More...
 
void open (const char *file_name)
 Open file. More...
 
void close ()
 Close file. More...
 
void initialise ()
 Initialise counter. More...
 
void attach (const JSharedCounter &object)
 Attach this counter to given shared counter object. More...
 
bool detach ()
 Detach. More...
 

Protected Member Functions

void get (const char *function_name)
 Get function with given name according to specific protocol. More...
 

Protected Attributes

void * handle
 
JReturn_t(*)(JFirst_t, JSecond_t) function
 
int * counter
 

Detailed Description

template<class JReturn_t, class JFirst_t, class JSecond_t>
struct JEEP::JFunctionAdaptor< JReturn_t, JFirst_t, JSecond_t >

Function adaptor.

Function adaptor for function with two arguments.

Definition at line 243 of file JFunctionAdaptor.hh.

Member Typedef Documentation

◆ pF

template<class JReturn_t, class JFirst_t, class JSecond_t>
typedef JReturn_t(* JEEP::JFunctionAdaptor< JReturn_t, JFirst_t, JSecond_t >::pF) (JFirst_t, JSecond_t)

Type definition of method.

Definition at line 322 of file JFunctionAdaptor.hh.

Constructor & Destructor Documentation

◆ JFunctionAdaptor() [1/4]

template<class JReturn_t, class JFirst_t, class JSecond_t>
JEEP::JFunctionAdaptor< JReturn_t, JFirst_t, JSecond_t >::JFunctionAdaptor ( )
inline

Default constructor.

Definition at line 328 of file JFunctionAdaptor.hh.

328  :
330  {}

◆ JFunctionAdaptor() [2/4]

template<class JReturn_t, class JFirst_t, class JSecond_t>
JEEP::JFunctionAdaptor< JReturn_t, JFirst_t, JSecond_t >::JFunctionAdaptor ( const JFunctionAdaptor< JReturn_t, JFirst_t, JSecond_t > &  adaptor)
inline

Copy constructor.

Parameters
adaptoradaptor

Definition at line 338 of file JFunctionAdaptor.hh.

338  :
340  {}

◆ JFunctionAdaptor() [3/4]

template<class JReturn_t, class JFirst_t, class JSecond_t>
JEEP::JFunctionAdaptor< JReturn_t, JFirst_t, JSecond_t >::JFunctionAdaptor ( pF  pf)
inline

Constructor.

Parameters
pfpointer to function

Definition at line 348 of file JFunctionAdaptor.hh.

348  :
350  {}

◆ JFunctionAdaptor() [4/4]

template<class JReturn_t, class JFirst_t, class JSecond_t>
JEEP::JFunctionAdaptor< JReturn_t, JFirst_t, JSecond_t >::JFunctionAdaptor ( const char *  file_name,
const char *  function_name 
)
inline

Constructor.

Parameters
file_namefile name
function_namefunction name

Definition at line 359 of file JFunctionAdaptor.hh.

360  :
361  JFunctionAdaptorHelper<pF>(file_name, function_name)
362  {}

Member Function Documentation

◆ operator()()

template<class JReturn_t, class JFirst_t, class JSecond_t>
JReturn_t JEEP::JFunctionAdaptor< JReturn_t, JFirst_t, JSecond_t >::operator() ( JFirst_t  first,
JSecond_t  second 
) const
inline

Function operation.

Parameters
firstfirst argument
secondsecond argument
Returns
return value

Definition at line 372 of file JFunctionAdaptor.hh.

373  {
374  return this->function(first, second);
375  }

◆ is_valid()

bool JEEP::JFunctionAdaptorHelper< JReturn_t(*)(JFirst_t, JSecond_t) >::is_valid ( ) const
inlineinherited

Check validity.

Returns
true if valid function; else false

Definition at line 52 of file JFunctionAdaptor.hh.

53  {
54  return (function != NULL);
55  }

◆ reset()

void JEEP::JFunctionAdaptorHelper< JReturn_t(*)(JFirst_t, JSecond_t) >::reset ( )
inlineinherited

Reset function adaptor helper.

Definition at line 61 of file JFunctionAdaptor.hh.

62  {
63  if (detach()) {
64  close();
65  }
66 
67  function = NULL;
68  }

◆ set()

void JEEP::JFunctionAdaptorHelper< JReturn_t(*)(JFirst_t, JSecond_t) >::set ( JReturn_t(*)(JFirst_t, JSecond_t)  pf)
inlineinherited

Set function.

Parameters
pfpointer to function

Definition at line 76 of file JFunctionAdaptor.hh.

77  {
78  reset();
79 
80  function = pf;
81  }

◆ open()

void JEEP::JFunctionAdaptorHelper< JReturn_t(*)(JFirst_t, JSecond_t) >::open ( const char *  file_name)
inlineinherited

Open file.

Parameters
file_namefile name

Definition at line 89 of file JFunctionAdaptor.hh.

90  {
91  reset();
92 
93  handle = dlopen(file_name, RTLD_LAZY);
94 
95  if (!handle) {
96  THROW(JLANG::JFileOpenException, dlerror());
97  }
98 
99  initialise();
100  }

◆ close()

void JEEP::JFunctionAdaptorHelper< JReturn_t(*)(JFirst_t, JSecond_t) >::close ( )
inlineinherited

Close file.

Note that the file should remain open as long as the library method is used.

Definition at line 108 of file JFunctionAdaptor.hh.

109  {
110  if (handle != NULL) {
111  dlclose(handle);
112  }
113 
114  handle = NULL;
115  }

◆ get()

void JEEP::JFunctionAdaptorHelper< JReturn_t(*)(JFirst_t, JSecond_t) >::get ( const char *  function_name)
inlineprotectedinherited

Get function with given name according to specific protocol.

Parameters
function_namefunction name

Definition at line 212 of file JFunctionAdaptor.hh.

213  {
214  function = NULL;
215 
216  if (handle != NULL) {
217 
218  dlerror(); // reset errors
219 
220  function = (pF) dlsym(handle, function_name);
221 
222  const char* error = dlerror();
223 
224  if (error != NULL) {
226  }
227 
228  } else {
229 
230  THROW(JLANG::JFileReadException, "Invalid handle.");
231  }
232  }

◆ initialise()

void JLANG::JSharedCounter::initialise ( )
inlineinherited

Initialise counter.

Definition at line 33 of file JSharedCounter.hh.

34  {
35  detach();
36 
37  counter = new int(1);
38  }

◆ attach()

void JLANG::JSharedCounter::attach ( const JSharedCounter object)
inlineinherited

Attach this counter to given shared counter object.

Parameters
objectshared counter

Definition at line 46 of file JSharedCounter.hh.

47  {
48  detach();
49 
50  counter = object.counter;
51 
52  if (counter != NULL) {
53  ++(*counter);
54  }
55  }

◆ detach()

bool JLANG::JSharedCounter::detach ( )
inlineinherited

Detach.

Returns
true if counter at zero; else false

Definition at line 63 of file JSharedCounter.hh.

64  {
65  if (counter != NULL) {
66 
67  if (--(*counter) == 0) {
68 
69  delete counter;
70 
71  counter = NULL;
72 
73  return true;
74  }
75 
76  counter = NULL;
77  }
78 
79  return false;
80  }

Member Data Documentation

◆ handle

void* JEEP::JFunctionAdaptorHelper< JReturn_t(*)(JFirst_t, JSecond_t) >::handle
protectedinherited

Definition at line 234 of file JFunctionAdaptor.hh.

◆ function

JReturn_t(*)(JFirst_t, JSecond_t) JEEP::JFunctionAdaptorHelper< JReturn_t(*)(JFirst_t, JSecond_t) >::function
protectedinherited

Definition at line 235 of file JFunctionAdaptor.hh.

◆ counter

int* JLANG::JSharedCounter::counter
protectedinherited

Definition at line 83 of file JSharedCounter.hh.


The documentation for this struct was generated from the following file:
JLANG::JSharedCounter::detach
bool detach()
Detach.
Definition: JSharedCounter.hh:63
JLANG::JFileReadException
Exception for reading of file.
Definition: JException.hh:360
JLANG::JFileOpenException
Exception for opening of file.
Definition: JException.hh:342
JLANG::JSharedCounter::counter
int * counter
Definition: JSharedCounter.hh:83
JEEP::JFunctionAdaptorHelper< JReturn_t(*)(JFirst_t, JSecond_t)>::reset
void reset()
Reset function adaptor helper.
Definition: JFunctionAdaptor.hh:61
JEEP::JFunctionAdaptorHelper< JReturn_t(*)(JFirst_t, JSecond_t)>::close
void close()
Close file.
Definition: JFunctionAdaptor.hh:108
THROW
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:669
JLANG::JSharedCounter::initialise
void initialise()
Initialise counter.
Definition: JSharedCounter.hh:33
JEEP::JFunctionAdaptorHelper< JReturn_t(*)(JFirst_t, JSecond_t)>::handle
void * handle
Definition: JFunctionAdaptor.hh:234
JEEP::JFunctionAdaptorHelper
Auxiliary base class for function adaptor.
Definition: JFunctionAdaptor.hh:33