51 lines
983 B
C
51 lines
983 B
C
|
#include <cstddef>
|
||
|
#include <cstdio>
|
||
|
|
||
|
class DataManagementNode;
|
||
|
|
||
|
/**
|
||
|
manages nested ADC data structure
|
||
|
*/
|
||
|
class DataManagementNode {
|
||
|
public:
|
||
|
/// parent node, top node has NULL
|
||
|
DataManagementNode* parent;
|
||
|
/// reference to nested loops
|
||
|
DataManagementNode* child;
|
||
|
/// next node in sequences
|
||
|
DataManagementNode* next;
|
||
|
|
||
|
/**
|
||
|
if the child is NULL, n is the number of real samples
|
||
|
otherwise repeatition number of substructure
|
||
|
*/
|
||
|
size_t n;
|
||
|
|
||
|
/**
|
||
|
default constructor of NOP node
|
||
|
*/
|
||
|
DataManagementNode(class DataManagementNode* par=NULL): parent(par), child(NULL), next(NULL), n(0) {}
|
||
|
|
||
|
/**
|
||
|
(deep) copy constructor
|
||
|
*/
|
||
|
DataManagementNode(const DataManagementNode& orig);
|
||
|
|
||
|
/**
|
||
|
size of all childrens' data
|
||
|
*/
|
||
|
size_t size() const;
|
||
|
/**
|
||
|
reduce depth recursively
|
||
|
*/
|
||
|
DataManagementNode* reduce();
|
||
|
|
||
|
|
||
|
void print(FILE* f,size_t indent=0);
|
||
|
|
||
|
/**
|
||
|
recursive destruction, call only for root
|
||
|
*/
|
||
|
~DataManagementNode();
|
||
|
};
|