Files
CoolProp/include/CachedElement.h
Julien Marrec 05c8cf503b Lint: use automated tooling to reformat C++ and CMakeLists files (#2103)
* Add initial clang tidy / clang format config files

* Clang format the entire codebase

```
find ./src -regextype posix-extended -regex '.*\.(cpp|hpp|c|h|cxx|hxx)$' | xargs clang-format-12 -style=file -i -fallback-style=none
find ./include -regextype posix-extended -regex '.*\.(cpp|hpp|c|h|cxx|hxx)$' | xargs clang-format-12 -style=file -i -fallback-style=none
find ./Web -regextype posix-extended -regex '.*\.(cpp|hpp|c|h|cxx|hxx)$' | xargs clang-format-12 -style=file -i -fallback-style=none
find ./dev -regextype posix-extended -regex '.*\.(cpp|hpp|c|h|cxx|hxx)$' | xargs clang-format-12 -style=file -i -fallback-style=none
find ./wrappers -regextype posix-extended -regex '.*\.(cpp|hpp|c|h|cxx|hxx)$' | xargs clang-format-12 -style=file -i -fallback-style=none
```

* Add a .cmake-format file and reformat CmakeLists.txt with it

https://github.com/cheshirekow/cmake_format

* Add a clang-format workflow


only runs on PRs, only on touched files
2022-03-31 10:51:48 -04:00

90 lines
1.8 KiB
C++

/*
* CachedElement.h
*
* Created on: 21 Dec 2013
* Author: jowr
*/
#ifndef CACHEDELEMENT_H_
#define CACHEDELEMENT_H_
#include "CoolPropTools.h"
#include "DataStructures.h"
namespace CoolProp {
/*!
A class that contains the magic to cache a value.
Includes an "=" assignment operator and casting to boolean
so you can do something like::
double CoolPropStateClassSI::d3phir_dTau3(double tau, double delta){
if (cache.d3phir_dTau3) {
return cache.d3phir_dTau3;
} else {
cache.d3phir_dTau3 = pFluid->d3phir_dTau3(tau,delta);
return cache.d3phir_dTau3;
}
};
*/
class CachedElement
{
private:
bool is_cached;
CoolPropDbl value;
public:
/// Default constructor
CachedElement() {
this->clear();
};
/// Function to carry out the caching
void _do_cache(double value) {
this->value = value;
this->is_cached = true;
}
/// Assignment operator - sets the value and sets the flag
void operator=(const double& value) {
_do_cache(value);
};
/// Cast to boolean, for checking if cached
operator bool() {
return is_cached;
};
/// Cast to double, for returning value
operator double() {
if (is_cached) {
return static_cast<double>(value);
} else {
throw std::exception();
}
}
#ifndef COOLPROPDBL_MAPS_TO_DOUBLE
operator CoolPropDbl() {
if (is_cached) {
return value;
} else {
throw std::exception();
}
}
#endif
/// Clear the flag and the value
void clear() {
is_cached = false;
this->value = _HUGE;
};
CoolPropDbl& pt() {
return this->value;
}
};
} /* namespace CoolProp */
#endif /* CACHEDELEMENT_H_ */