/* * Copyright information and license terms for this software can be * found in the file LICENSE that is included with the distribution */ #ifndef PVUTILS_H #define PVUTILS_H #include #include #include #include #include #include #include #include #include typedef epicsGuard Guard; typedef epicsGuardRelease UnGuard; namespace pvd = epics::pvData; namespace pva = epics::pvAccess; extern double timeout; extern bool debugFlag; extern pvd::PVStructure::Formatter::format_t outmode; extern int verbosity; extern std::string request; extern std::string defaultProvider; struct Tracker { static epicsMutex doneLock; static epicsEvent doneEvt; typedef std::set inprog_t; static inprog_t inprog; static bool abort; Tracker() { Guard G(doneLock); inprog.insert(this); } ~Tracker() { done(); } void done() { { Guard G(doneLock); inprog.erase(this); } doneEvt.signal(); } static void prepare(); }; void jarray(pvd::shared_vector& out, const char *inp); #endif /* PVUTILS_H */