-
Notifications
You must be signed in to change notification settings - Fork 7
Cpp
Dmitry Romanov edited this page Apr 21, 2017
·
17 revisions
C++ API allows one to read RCDB condition values for the run. It doesn't provide possibility of run selection queries at this point. Also it requires C++11 to compile.
TL; DR; version:
- C++ api is located in $RCDB_HOME/cpp directory.
- C++11 is required.
- To compile run scons:
cd $RCDB_HOME/cpp
scons
The build scripts outputs binaries to the same directory to the lib
and bin
folders.
If $RCDB_HOME/environment.<your shell> script was sourced, it adjusts LD_LIBRARY and PATH variables to the output.
C++ API requires C++11 in order to compile. This means that probably minimum GCC version to be used is 4.8.
Build options:
-
with-mysql=false
/true
- build API without or with MySQL support. Without MySQL, RCDB would work with SQLite only. -
with-tests=false
- don't compile unit tests.
The example shows how to get values from RCDB:
// Connect
Connection con("mysql://rcdb@hallddb/rcdb");
// Get event_count for run 10173
auto cnd = prov.GetCondition(10173, "event_count");
// Check event_count has a value for the run
if(!cnd) {
std::cout<< "event_count condition is not set for the run"<<std::endl;
return;
}
// Get value!
event_count = cnd->ToInt();
Here is the list of condition ToXXX functions and what values they are for:
int ToInt(); /// For int values
bool ToBool(); /// For bool or int in DB
double ToDouble(); /// For Double or int in DB
std::string ToString(); /// For Json, String or Blob
time_point<system_clock> ToTime(); /// For time value
rapidjson::Document ToJsonDocument(); /// For JSon document
rcdb::ValueTypes GetValueType(); /// Returns the type enum
Getting started & basic usage:
- Installation
- Select values tutorial (python)
- Query syntax
- Add data (python)
- CLI Basics
RCDB Explained:
- Connection
- DB and APIs structure
- SQL examples
- Creating condition types
- Adding condition values
- Saving files
- SQLAlchemy
- Logging
- Performance
Command line tools:
DAQ: