3 #ifndef __ARC_UTILS_H__ 4 #define __ARC_UTILS_H__ 17 std::string
GetEnv(
const std::string& var);
21 std::string
GetEnv(
const std::string& var,
bool &found);
24 std::list<std::string>
GetEnv();
27 bool SetEnv(
const std::string& var,
const std::string& value,
bool overwrite =
true);
30 void UnsetEnv(
const std::string& var);
81 void (*saved_sigint_handler)(int);
85 std::string
StrError(
int errnum = errno);
98 static void DefaultDeleter(T* o) {
delete o; }
100 #if __cplusplus >= 201103L 108 : object(NULL), deleter(&DefaultDeleter) {
115 : object(NULL), deleter(d) {}
118 : object(o), deleter(d) {}
121 : object(o.
Release()), deleter(o.deleter) {}
124 if (
object)
if(deleter) (*deleter)(object);
128 if (
object)
if(deleter) (*deleter)(object);
132 AutoPointer<T>& operator=(AutoPointer<T>& o) {
133 if (
object)
if(deleter) (*deleter)(object);
147 operator bool(
void)
const {
148 return (
object != NULL);
152 return (
object == NULL);
158 T& operator[](
int pos) {
161 T
const& operator[](
int pos)
const {
200 if (ptr && !released)
209 if(!released)
delete this;
218 : object(
new Base<T>(p)) {}
220 : object(p.object->add()) {}
225 if (p != object->ptr) {
227 object =
new Base<T>(p);
232 if (p.object->ptr != object->ptr) {
234 object = p.object->add();
240 return *(
object->ptr);
244 return (object->ptr);
247 operator bool(
void)
const {
248 return ((object->ptr) != NULL);
252 return ((object->ptr) == NULL);
256 return ((object->ptr) == (p.object->ptr));
260 return ((object->ptr) != (p.object->ptr));
264 return ((object->ptr) < (p.object->ptr));
268 return (object->ptr);
272 T* tmp =
object->ptr;
273 object->released =
true;
285 #endif // __ARC_UTILS_H__ Arc namespace contains all core ARC classes.
Definition: ArcConfig.h:11
Class to provide automatic locking/unlocking of environment on creation/destruction.
Definition: Utils.h:63
T * operator->(void) const
For referring wrapped object.
Definition: Utils.h:143
~EnvLockWrapper(void)
Release environment lock.
Definition: Utils.h:71
T * operator->(void) const
For referring wrapped object.
Definition: Utils.h:243
bool operator!(void) const
Returns true if pointer is NULL and false otherwise.
Definition: Utils.h:151
T & operator*(void) const
For referring wrapped object.
Definition: Utils.h:139
AutoPointer(T *o, void(*d)(T *)=&DefaultDeleter)
Constructor which wraps pointer and optionally defines deletion function.
Definition: Utils.h:117
bool operator<(const CountedPointer &p) const
Comparison operator.
Definition: Utils.h:263
void EnvLockUnwrapComplete(void)
Use after fork() to reset all internal variables and release all locks.
Wrapper for pointer with automatic destruction and multiple references.
Definition: Utils.h:183
T * Ptr(void) const
Cast to original pointer.
Definition: Utils.h:155
T & operator*(void) const
For referring wrapped object.
Definition: Utils.h:239
void EnvLockWrap(bool all=false)
Start code which is using setenv/getenv.
std::string StrError(int errnum=errno)
Portable function for obtaining description of last system error.
EnvLockWrapper(bool all=false)
Create a new environment lock for using setenv/getenv.
Definition: Utils.h:69
AutoPointer(AutoPointer< T > &o)
Moving constructor.
Definition: Utils.h:120
bool operator!(void) const
Returns true if pointer is NULL and false otherwise.
Definition: Utils.h:251
AutoPointer(void(*d)(T *)=&DefaultDeleter)
NULL pointer constructor.
Definition: Utils.h:114
void EnvLockUnwrap(bool all=false)
End code which is using setenv/getenv.
void EnvLockAcquire(void)
Obtain lock on environment.
Marks off a section of code which should not be interrupted by signals.
Definition: Utils.h:76
void UnsetEnv(const std::string &var)
Portable function for unsetting environment variables. Protected by exclusive lock.
bool PersistentLibraryInit(const std::string &name)
Load library and keep persistent.
void EnvLockRelease(void)
Release lock on environment.
Wrapper for pointer with automatic destruction.
Definition: Utils.h:94
bool SetEnv(const std::string &var, const std::string &value, bool overwrite=true)
Portable function for setting environment variables. Protected by exclusive lock. ...
T * Release(void)
Release referred object so that it can be passed to other container.
Definition: Utils.h:165
bool operator!=(const CountedPointer &p) const
Returns true if pointers are not equal.
Definition: Utils.h:259
T * Release(void)
Release referred object so that it can be passed to other container.
Definition: Utils.h:271
T * Ptr(void) const
Cast to original pointer.
Definition: Utils.h:267
std::string GetEnv(const std::string &var)
Portable function for getting environment variables. Protected by shared lock.
~AutoPointer(void)
Destructor destroys wrapped object using assigned deleter.
Definition: Utils.h:123
bool operator==(const CountedPointer &p) const
Returns true if pointers are equal.
Definition: Utils.h:255