rusEFI
The most advanced open source ECU
Loading...
Searching...
No Matches
Public Member Functions | Private Attributes
FLStack< T, MAXSIZE > Class Template Reference

#include <fl_stack.h>

Collaboration diagram for FLStack< T, MAXSIZE >:
Collaboration graph
[legend]

Public Member Functions

 FLStack ()
 
void push (T value)
 
void reset ()
 
T pop ()
 
T get (int index)
 
bool remove (T value)
 
int size ()
 
bool isEmpty ()
 

Private Attributes

int currentSize
 
T values [MAXSIZE]
 

Detailed Description

template<typename T, int MAXSIZE>
class FLStack< T, MAXSIZE >

Definition at line 14 of file fl_stack.h.

Constructor & Destructor Documentation

◆ FLStack()

template<typename T , int MAXSIZE>
FLStack< T, MAXSIZE >::FLStack ( )

Definition at line 30 of file fl_stack.h.

30 {
31 reset();
32 memset(values, 0, sizeof(values));
33}
T values[MAXSIZE]
Definition fl_stack.h:26
void reset()
Definition fl_stack.h:41

Member Function Documentation

◆ get()

template<typename T , int MAXSIZE>
T FLStack< T, MAXSIZE >::get ( int  index)
Returns
element at the specified index

Definition at line 79 of file fl_stack.h.

79 {
80 efiAssert(ObdCode::CUSTOM_ERR_ASSERT, index >= 0 && index < MAXSIZE, "FLget", values[0]);
81 return values[index];
82}
@ CUSTOM_ERR_ASSERT

◆ isEmpty()

template<typename T , int MAXSIZE>
bool FLStack< T, MAXSIZE >::isEmpty ( )

Definition at line 36 of file fl_stack.h.

36 {
37 return currentSize == 0;
38}
int currentSize
Definition fl_stack.h:25

◆ pop()

template<typename T , int MAXSIZE>
T FLStack< T, MAXSIZE >::pop ( )

Definition at line 68 of file fl_stack.h.

68 {
69 if (currentSize == 0) {
70 firmwareError(ObdCode::CUSTOM_FLSTACK, "FLStack is empty");
71 }
72 return values[--currentSize];
73}
void firmwareError(ObdCode code, const char *fmt,...)
@ CUSTOM_FLSTACK
Here is the call graph for this function:

◆ push()

template<typename T , int MAXSIZE>
void FLStack< T, MAXSIZE >::push ( T  value)

Definition at line 58 of file fl_stack.h.

58 {
59 if (currentSize >= MAXSIZE) {
61 return;
62 //warning()
63 }
64 values[currentSize++] = value;
65}
@ ERROR_FL_STACK_OVERFLOW
Here is the call graph for this function:

◆ remove()

template<typename T , int MAXSIZE>
bool FLStack< T, MAXSIZE >::remove ( T  value)

Definition at line 46 of file fl_stack.h.

46 {
47 for (int i = 0; i < currentSize; i++) {
48 if (values[i] == value) {
49 values[0] = values[currentSize - 1];
51 return true;
52 }
53 }
54 return false;
55}

◆ reset()

template<typename T , int MAXSIZE>
void FLStack< T, MAXSIZE >::reset ( )

Definition at line 41 of file fl_stack.h.

41 {
42 currentSize = 0;
43}

◆ size()

template<typename T , int MAXSIZE>
int FLStack< T, MAXSIZE >::size ( )

Definition at line 85 of file fl_stack.h.

85 {
86 return currentSize;
87}

Field Documentation

◆ currentSize

template<typename T , int MAXSIZE>
int FLStack< T, MAXSIZE >::currentSize
private

Definition at line 25 of file fl_stack.h.

◆ values

template<typename T , int MAXSIZE>
T FLStack< T, MAXSIZE >::values[MAXSIZE]
private

Definition at line 26 of file fl_stack.h.


The documentation for this class was generated from the following file: