22 char *buffer = (
char *) malloc(length+1);
23 memcpy(buffer,filename,length);
24 buffer[length] =
'\0';
25 printf(
"[FORTRAN] opening file : %s\n", buffer);
43 std::map<std::string, hipo::bank *>::iterator it;
53 char *buffer = (
char * ) malloc(banknameLength+1);
54 memcpy(buffer,bankname,banknameLength);
55 buffer[banknameLength] =
'\0';
60 printf(
"---> map : initializing bank \"%24s\" (%6d, %5d) to the store\n",
101 void hipo_read_float_(
const char *group,
const char *item,
int *nread,
float *buffer,
int *maxRows,
102 int length_group,
int length_item){
104 char *buffer_group = (
char * ) malloc(length_group+1);
105 memcpy(buffer_group,group,length_group);
106 buffer_group[length_group] =
'\0';
108 char *buffer_item = (
char * ) malloc(length_item+1);
109 memcpy(buffer_item,item,length_item);
110 buffer_item[length_item] =
'\0';
132 if(nrows>(*maxRows)) nrows = *(maxRows);
134 for(
int i = 0; i < nrows; i++){
135 buffer[i] = bank->
getFloat(buffer_item, i);
143 void hipo_read_double_(
const char *group,
const char *item,
int *nread,
double *buffer,
int *maxRows,
144 int length_group,
int length_item){
146 char *buffer_group = (
char * ) malloc(length_group+1);
147 memcpy(buffer_group,group,length_group);
148 buffer_group[length_group] =
'\0';
150 char *buffer_item = (
char * ) malloc(length_item+1);
151 memcpy(buffer_item,item,length_item);
152 buffer_item[length_item] =
'\0';
164 if(nrows>(*maxRows)) nrows = *(maxRows);
166 for(
int i = 0; i < nrows; i++){
167 buffer[i] = bank->
getDouble(buffer_item, i);
175 void hipo_read_int_(
const char *group,
const char *item,
int *nread,
int *buffer,
int *maxRows,
176 int length_group,
int length_item){
178 char *buffer_group = (
char * ) malloc(length_group+1);
179 memcpy(buffer_group,group,length_group);
180 buffer_group[length_group] =
'\0';
182 char *buffer_item = (
char * ) malloc(length_item+1);
183 memcpy(buffer_item,item,length_item);
184 buffer_item[length_item] =
'\0';
195 if(nrows>(*maxRows)) nrows = *(maxRows);
197 for(
int i = 0; i < nrows; i++){
198 buffer[i] = bank->
getInt(buffer_item, i);
205 void hipo_read_long_(
const char *group,
const char *item,
int *nread, int64_t *buffer,
int *maxRows,
206 int length_group,
int length_item){
208 char *buffer_group = (
char * ) malloc(length_group+1);
209 memcpy(buffer_group,group,length_group);
210 buffer_group[length_group] =
'\0';
212 char *buffer_item = (
char * ) malloc(length_item+1);
213 memcpy(buffer_item,item,length_item);
214 buffer_item[length_item] =
'\0';
225 if(nrows>(*maxRows)) nrows = *(maxRows);
227 for(
int i = 0; i < nrows; i++){
228 buffer[i] = bank->
getLong(buffer_item, i);
240 int handle =
hFusion.
open(filename);
return handle;
244 int handle =
hFusion.
open(filename, tag);
return handle;
251 return (
int) schema.length();
256 std::strcpy(format,schema.c_str());
303 float *array =
new float[size];
304 for(
int i = 0; i < size; i++) array[i]=(i+1)*2;
Represents a HIPO bank, a tabular data structure with rows and typed columns.
int getInt(int item, int index) const noexcept
long getLong(int item, int index) const noexcept
int getRows() const noexcept
void show() const override
show this bank's contents; only the rows in its current rowlist instance are shown
float getFloat(int item, int index) const noexcept
double getDouble(int item, int index) const noexcept
Collection of schema definitions, typically read from a HIPO file header.
bool hasSchema(const char *name)
Check whether a schema with the given name exists.
schema & getSchema(const char *name)
Retrieve a schema by name.
Represents a HIPO event, a container for multiple structures/banks.
void getStructure(hipo::structure &str, int group, int item)
Extract a structure from the event by group and item identifiers.
Multi-file HIPO data access manager using integer handles.
void define(int fid, const char *bank)
Register a bank for reading in the given file.
int getInt(int handle, const char *bank, const char *entry, int row)
int getSize(int fid, const char *bank)
int getType(int handle, const char *bank, const char *entry)
int64_t getLong(int handle, const char *bank, const char *entry, int row)
double getDouble(int handle, const char *bank, const char *entry, int row)
void describe(int fid, const char *bank)
Print schema description for a bank in the given file.
void getShortArray(int handle, const char *bank, int entry, int16_t *ptr, int length)
Copy a short column into an array from the file identified by handle.
int open(const char *filename)
Open a HIPO file and return its handle.
float getFloat(int handle, const char *bank, const char *entry, int row)
void getByteArray(int handle, const char *bank, int entry, int8_t *ptr, int length)
Copy a byte column into an array from the file identified by handle.
std::string schema(int fid, const char *bank)
void getFloatArray(int handle, const char *bank, int entry, float *ptr, int length)
Copy a float column into an array from the file identified by handle.
int64_t getEntries(int handle)
hipo::bank & getBank(int handle, const char *bank)
void getIntArray(int handle, const char *bank, int entry, int32_t *ptr, int length)
Copy an integer column into an array from the file identified by handle.
bool next(int handle)
Advance to the next event in the given file.
Sequential reader for HIPO files.
void read(hipo::event &dataevent)
Read the current event into the given event object.
void readDictionary(hipo::dictionary &dict)
Read the schema dictionary from the file header.
bool next()
Advance to the next event.
void open(const char *filename)
Open a HIPO file for reading.
int getItem()
Get the item identifier.
int getGroup()
Get the group identifier.
HIPO event container and manipulation interface.
Multi-file HIPO data source management with integer handle interface.
Sequential and random-access reader for HIPO files with event filtering and dictionary support.
std::map< std::string, hipo::bank * > eventStore
void hipo_file_open(const char *filename)
int fusion_open_with_tag(const char *filename, int tag)
int fusion_next(int handle)
float * fusion_create_array(int size)
float fusion_get_float(int handle, const char *bank, const char *entry, int row)
int64_t fusion_get_long(int handle, const char *bank, const char *entry, int row)
void hipo_read_double_(const char *group, const char *item, int *nread, double *buffer, int *maxRows, int length_group, int length_item)
void hipo_read_float_(const char *group, const char *item, int *nread, float *buffer, int *maxRows, int length_group, int length_item)
void fusion_get_byte_array(int handle, const char *bank, int entry, int8_t *ptr, int rows)
void get_bank_rows_(int *group, int *bankRows)
int fusion_entry_type(int handle, const char *bank, const char *entry)
void hipo_read_long_(const char *group, const char *item, int *nread, int64_t *buffer, int *maxRows, int length_group, int length_item)
hipo::reader hipo_FORT_Reader
void fusion_schema_string(int handle, const char *bank, char *format)
hipo::event hipo_FORT_Event
void fusion_get_int_array(int handle, const char *bank, int entry, int32_t *ptr, int rows)
int fusion_get_int(int handle, const char *bank, const char *entry, int row)
void hipo_file_open_(const char *filename, int length)
int fusion_schema_length(int handle, const char *bank)
void fusion_show(int handle, const char *bank)
void fusion_define(int handle, const char *bank)
hipo::dictionary hipo_FORT_Dictionary
int64_t fusion_get_entries(int handle)
int fusion_open(const char *filename)
float fusion_get_double(int handle, const char *bank, const char *entry, int row)
void fusion_describe(int handle, const char *bank)
void hipo_read_bank_(const char *bankname, int *bankRows, int banknameLength)
int fusion_bankSize(int handle, const char *bank)
void fusion_get_float_array(int handle, const char *bank, int entry, float *ptr, int rows)
int hipo_file_next_(int *fstatus)
void fusion_get_short_array(int handle, const char *bank, int entry, int16_t *ptr, int rows)
void hipo_read_int_(const char *group, const char *item, int *nread, int *buffer, int *maxRows, int length_group, int length_item)