Example #1
0
void selStat(TABLE table)
{
	FILE	*stat;		//for reading stat.tbl
	DATA 	*data;		//record array
	FIELD	field;		//filed name
	int	record/* # of record */, fld/*# of field*/, i;//for loop
	
	findRecord(table, &record, &fld); //find # of records
	
	strcat(table, ".tbl"); //make table name file name

	stat = fopen(table, "rb");
	//If stat.tbl does not exist
	if(stat == NULL){
		printf("There is no stat.tbl!!\n");
	}
	//read field name
	fread(field, sizeof(FIELD), 1, stat);
	//print field names
	printf("%10s%10s%10s\n", field, "TOT", "AVG");
	
	data = calloc(sizeof(DATA), record); //dynamic allocation for records
	
	for(i = 0 ; i < record ; i++){
		fread(data[i].id, sizeof(ID), 1, stat); //read id
		fread(&(data[i].tot), sizeof(int), 1, stat); //read total score
		fread(&(data[i].avg), sizeof(double), 1, stat); //read average score
		printf("%10s%10d%10.3lf\n", data[i].id, data[i].tot, data[i].avg); //print records
	}
	
	printf("Show %d records...\n", record);
	free(data); //free dynamic allocation
	fclose(stat);
}
Example #2
0
PVDatabase::~PVDatabase()
{
    if(DEBUG_LEVEL>0) cout << "PVDatabase::~PVDatabase()\n";
    size_t len = recordMap.size();
    shared_vector<string> names(len);
    PVRecordMap::iterator iter;
    size_t i = 0;
    for(iter = recordMap.begin(); iter!=recordMap.end(); ++iter) {
        names[i++] = (*iter).first;
    }
    for(size_t i=0; i<len; ++i) removeRecord(findRecord(names[i]));
}
Example #3
0
void _ccFree(void* ptr, const char* file, int line) {
	// basic validation
	if(!ptr)
		return;

	// find record and remove it
	ccMemoryRecord* r = findRecord(ptr);
	if(r) {
		removeRecord(r);
		free(r);
	}

	// even record is not found, we must release it
	free(ptr);
}
Example #4
0
void* _ccRealloc(void* ptr, size_t size, const char* file, int line) {
	ccMemoryRecord* r = findRecord(ptr);
	if(r) {
		// realloc
		void* newPtr = _ccMalloc(size, file, line, "REALLOC");
		memcpy(newPtr, ptr, r->size);
		free(ptr);

		// remove record
		removeRecord(r);
		free(r);

		return newPtr;
	} else {
		return realloc(ptr, size);
	}
}
Example #5
0
//func. for showing score.tbl
void selScore(TABLE table)
{
	FILE	*scr;		//for reading score.tbl
	DATA	*data;		//record array
	FIELD	*fields;	//filed names
	int	record/*# of record*/, fld/*# of filed*/, i, j;//for loop

	findRecord(table, &record, &fld); //find # of record & field
	
	strcat(table, ".tbl"); //make table name file name

	scr = fopen(table, "rb");
	//if score.tbl does not exist
	if(scr == NULL){
		printf("There is no score.tbl!!\n");
		return ;
	}

	fields = calloc(sizeof(FIELD), fld); //dynamic allocation for # of fields
	//read field names
	fread(fields, sizeof(FIELD), fld, scr); 
	//print field names
	for(i = 0 ; i < fld ; i++){
		printf("%7s", fields[i]);
	}
	printf("\n");

	data = calloc(sizeof(DATA), record); //dynamic allocation for records
	//read records
	for(i = 0 ; i < record ; i++){
		fread(data[i].id, sizeof(ID), 1, scr); //read id
		data[i].score = calloc(sizeof(int), (fld - 1)); //dynamic allocation for scores
		fread(data[i].score, sizeof(int), (fld - 1), scr); //read scores
		printf("%7s", data[i].id); 
		for(j = 0 ; j < (fld - 1) ; j++){
			printf("%7d", data[i].score[j]); //print scores
		}
		printf("\n");
		free(data[i].score); //free dynamic allocation
	}
	
	printf("Show %d records...\n", record);
	free(data); //free dynamic allocation
	fclose(scr);
}	
void _ccFree(void* ptr, const char* file, int line) {
    // basic validation
    if(!ptr)
        return;

    // find record and remove it
    ccMemoryRecord* r = findRecord(ptr);
    if(r) {
#if CC_CFLAG_ALLOCATION_LOG
        CCLOG("[FREE](%p)(record=%p):%d [%s:%d]", r->start, r, r->size, r->file, r->line);
#endif
        removeRecord(r);
        free(r);
    }

    // even record is not found, we must release it
    free(ptr);
}
Example #7
0
//func. for showing student.tbl
void selStudent(TABLE table)
{
	FILE	*stu;		//for reading student.tbl
	DATA	*data;		//record array
	FIELD	fields[BASEFLD];//field name array
	int	record,/*# of records*/ fld, /*# of fields*/ i;/*for loop*/

	findRecord(table, &record, &fld); //call func. for finding # of records
	
	strcat(table, ".tbl"); //make table name file name
	
	stu = fopen(table, "rb");
	//if student.tbl does not exist
	if(stu == NULL){
		printf("There is no student.tbl!!\n");
		return ;
	}
	//read field names
	fread(fields, sizeof(FIELD), BASEFLD, stu);
	//print field names
	for(i = 0 ; i < BASEFLD ; i++){
		printf("%10s", fields[i]);
	}
	printf("\n");
	//dynamic allocation for record array
	data = calloc(record, sizeof(DATA));
	//read records
	for(i = 0 ; i < record ; i++){
		fread(data[i].id, sizeof(ID), 1, stu); //read id
		fread(data[i].name, sizeof(NAME), 1, stu); //read name
		fread(data[i].dept, sizeof(DEPT), 1, stu); //read department
		printf("%10s%10s%10s\n", data[i].id, data[i].name, data[i].dept); //print id, name, and department
	}
	
	printf("Show %d records...\n", record);	
	free(data); //free dynamic allocation
	fclose(stu);
}
 RecordData KVRecordStore::dataFor( OperationContext* txn, const RecordId& loc) const {
     RecordData rd;
     bool found = findRecord(txn, loc, &rd);
     massert(28923, "Didn't find RecordId in record store", found);
     return rd;
 }
Example #9
0
//func. for showing all fields
void selALL()
{
	FILE	*stu, /* student.tbl */*scr, /*score.tbl*/ *stat; /*stat.tbl*/
	DATA	*data; //records
	FIELD	*fields; //field names
	int	record, /*# of records*/ fld, /*# of all fields*/ 
		sFld, /*# of score field */ i, j; //for loop
		
	findRecord("score", &record, &sFld); //find # of score records and # of score fields
	fld = sFld + BASEFLD + TOTAVG - 2; //calculate # of all fields
	
	stu = fopen("student.tbl", "rb"); 
	scr = fopen("score.tbl", "rb");
	stat = fopen("stat.tbl", "rb");
	//table files does not exist
	if(stu == NULL || scr == NULL || stat ==NULL){
		printf("There is no table file!!\n");
		return ;
	}

	fields = calloc(sizeof(FIELD), fld); //dynamic allocation for field names
	//read field names	
	for(i = 0 ; i < BASEFLD ; i++){
		fread(fields[i], sizeof(FIELD), 1, stu);
	}
	fseek(scr, sizeof(FIELD), SEEK_SET);
	for(i = BASEFLD ; i < (sFld - 1 + BASEFLD) ; i++){
		fread(fields[i], sizeof(FIELD), 1, scr);
	}
	fseek(stat, sizeof(FIELD), SEEK_SET);
	for(i = (sFld + BASEFLD) ; i < fld ; i++){
		fread(fields[i], sizeof(FIELD), 1, stat);
	}
	//print field names
	for(i = 0 ; i < (fld - 1) ; i++){
		printf("%10s", fields[i]);
	}
	printf("%10s%10s\n", "TOT", "AVG");
	
	free(fields); //free dynamic allocation
	//dynamic allocation for records
	data = calloc(sizeof(DATA), record);
	//read record
	for(i = 0 ; i < record ; i++){
		fread(data[i].id, sizeof(ID), 1, stu); //read id
		fread(data[i].name, sizeof(NAME), 1, stu); //read name
		fread(data[i].dept, sizeof(DEPT), 1, stu); //read department
		fseek(scr, sizeof(ID), SEEK_CUR); //skip id
		data[i].score = calloc(sizeof(int), sFld - 1); //dynamic allocation for score
		fread(data[i].score, sizeof(int), sFld - 1, scr); //read scores
		fseek(stat, sizeof(ID), SEEK_CUR); //skip id
		fread(&(data[i].tot), sizeof(int), 1, stat); //read total score
		fread(&(data[i].avg), sizeof(double), 1, stat); //read average score
	}
	//print record
	for(i = 0 ; i < record ; i++){
		printf("%10s%10s%10s", data[i].id, data[i].name, data[i].dept);
		for(j = 0 ; j < (sFld - 1) ; j++){
			printf("%10d", data[i].score[j]);
		}
		printf("%10d%10.3lf\n", data[i].tot, data[i].avg);
		free(data[i].score); //free dynamic allocation for scores
	}
	
	printf("show %d records...\n", record);

	free(data);	//free dynamic allocation for records
	fclose(stu);
	fclose(scr);
	fclose(stat);
}
Example #10
0
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
//
//
// Constructor
//
//
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
dicomDir::dicomDir(ptr<dataSet> pDataSet):
	m_pDataSet(pDataSet)
{
	if(m_pDataSet == 0)
	{
		m_pDataSet =new dataSet;
	}

	// Parse the dataset
	///////////////////////////////////////////////////////////
	lockObject lockDataSet(pDataSet);

	// Get the DICOMDIR sequence
	///////////////////////////////////////////////////////////
	typedef std::map<std::uint32_t, ptr<directoryRecord> > tOffsetsToRecords;
	tOffsetsToRecords offsetsToRecords;
	for(std::uint32_t scanItems(0); ; ++scanItems)
	{
		ptr<dataSet> pDataSet(m_pDataSet->getSequenceItem(0x0004, 0, 0x1220, scanItems));
		if(pDataSet == 0)
		{
			break;
		}
		ptr<directoryRecord> newRecord(new directoryRecord(pDataSet));
		offsetsToRecords[pDataSet->getItemOffset()] = newRecord;
		m_recordsList.push_back(newRecord);
	}

	// Scan all the records and update the pointers
	///////////////////////////////////////////////////////////
	for(tOffsetsToRecords::iterator scanRecords(offsetsToRecords.begin()); scanRecords != offsetsToRecords.end(); ++scanRecords)
	{
		std::uint32_t nextRecordOffset(scanRecords->second->getRecordDataSet()->getUnsignedLong(0x0004, 0, 0x1400, 0));
		std::uint32_t childRecordOffset(scanRecords->second->getRecordDataSet()->getUnsignedLong(0x0004, 0, 0x1420, 0));
		std::uint32_t referencedRecordOffset(scanRecords->second->getRecordDataSet()->getUnsignedLong(0x0004, 0, 0x1504, 0));

		tOffsetsToRecords::iterator findNextRecord(offsetsToRecords.find(nextRecordOffset));
		if(findNextRecord != offsetsToRecords.end())
		{
			scanRecords->second->setNextRecord(findNextRecord->second);
		}

		tOffsetsToRecords::iterator findChildRecord(offsetsToRecords.find(childRecordOffset));
		if(findChildRecord != offsetsToRecords.end())
		{
			scanRecords->second->setFirstChildRecord(findChildRecord->second);
		}

		tOffsetsToRecords::iterator findReferencedRecord(offsetsToRecords.find(referencedRecordOffset));
		if(findReferencedRecord != offsetsToRecords.end())
		{
			scanRecords->second->setReferencedRecord(findReferencedRecord->second);
		}
	}

	// Get the position of the first record
	///////////////////////////////////////////////////////////
	tOffsetsToRecords::iterator findRecord(offsetsToRecords.find(m_pDataSet->getUnsignedLong(0x0004, 0, 0x1200, 0)));
	if(findRecord == offsetsToRecords.end())
	{
		return;
	}
	setFirstRootRecord(findRecord->second);
}