47 unsigned int data_len;
48 unsigned int data_size;
55 PidRec() { pid = -1; data = NULL; data_len = 0; data_size = 0; is_allocated = 0; my_rep = NULL; sv.clear(); allow_realloc = 1; }
61 void *get(
const string &sig_name,
int &len);
62 void *get(
int sid,
int &len);
66 inline void *uget(
int sid, UniversalSigVec &_usv) { _usv.init(my_base_rep->sigs.Sid2Info.at(sid));
return (_usv.data = get(sid, _usv.len)); }
67 inline void *uget(
int sid) {
return uget(sid, usv); }
68 inline void *uget(
const string &sig_name, UniversalSigVec &_usv) {
return uget(my_base_rep->sigs.sid(sig_name), _usv); }
69 inline void *uget(
const string &sig_name) {
return uget(sig_name, usv); }
72 int init_from_rep(
MedRepository *rep,
int pid, vector<int> &sids_to_use);
75 void prealloc(
unsigned int len);
76 int realloc(
unsigned int len);
77 int resize_data(
unsigned int len) {
return realloc(len); }
78 void set_data_to_buffer() { data = &data_buffer[0]; }
82 vector<unsigned char> data_buffer;
131 int set_n_versions(
int n_ver);
133 int set_n_versions(vector<int> &time_points);
135 int get_n_versions() {
return n_versions; }
138 void *get(
const string &sig_name,
int version,
int &len);
139 void *get(
int sid,
int version,
int &len);
140 void *get(
int sid,
int &len) {
return PidRec::get(sid, len); }
143 inline void *uget(
int sid,
int version, UniversalSigVec &_usv) { _usv.init(my_base_rep->sigs.Sid2Info.at(sid));
return (_usv.data = get(sid, version, _usv.len)); }
144 inline void *uget(
int sid,
int version) {
return uget(sid, version, usv); }
145 inline void *uget(
const string &sig_name,
int version, UniversalSigVec &_usv) {
int sid = my_base_rep->sigs.sid(sig_name);
if (sid < 0) HMTHROW_AND_ERR(
"Error: can't find signal %s in repository\n", sig_name.c_str());
return uget(sid, version, _usv); }
146 inline void *uget(
const string &sig_name,
int version) {
return uget(sig_name, version, usv); }
152 int set_version_data(
int sid,
int version,
void *datap,
int len);
153 int set_version_off_orig(
int sid,
int version);
154 int point_version_to(
int sid,
int v_src,
int v_dst);
155 int remove(
int sid,
int version,
int idx);
156 int remove(
int sid,
int v_in,
int idx,
int v_out);
157 int change(
int sid,
int version,
int idx,
void *new_elem);
158 int change(
int sid,
int v_in,
int idx,
void *new_elem,
int v_out);
159 int update(
int sid,
int v_in, vector<pair<int, void *>>& changes, vector<int>& removes);
160 int update(
int sid,
int v_in,
int val_channel, vector<pair<int, float>>& changes, vector<int>& removes);
161 int update(
int sid,
int v_in, vector<pair<
int, vector<float>>>& changes, vector<int>& removes);
169 int versions_are_the_same(
int sid,
int v1,
int v2) {
return ((
int)((*get_poslen(sid, v1)) == (*get_poslen(sid, v2)))); }
170 int versions_are_the_same(set<int> sids,
int v1,
int v2) {
172 if (!versions_are_the_same(sid, v1, v2))
return(0);
176 int print_ver(
int sid,
int ver);
177 int print_all_vers(
int sid);
179 int print_sigs(
const vector<string> &sigs);
186 int init_from_rep(
MedRepository *rep,
int pid, vector<int> &sids_to_use,
int n_versions);
191 int init_from_rep(
MedRepository *rep,
int pid, vector<int> &sids_to_use, vector<int> &time_points);
194 vector<UniversalSigVec> usvs;
198 unsigned int curr_len;
200 PosLen *get_poslen(
int sid,
int version) {
if (version >= n_versions)
return NULL;
return sv_vers.get((
unsigned int)(my_base_rep->sigs.sid2serial[sid])*n_versions+version); }
201 void set_poslen(
int sid,
int version,
PosLen pl) { sv_vers[(
unsigned int)my_base_rep->sigs.sid2serial[sid]*n_versions+version] = pl; }
int set_version_universal_data(int sid, int version, int *_times, float *_vals, int len)
Apply val changes to all channels + removals.
Definition MedPidRepository.cpp:639