示例#1
0
FBL_Begin_Namespace


/**********************************************************************************************/
I_IStream* CreateTextStream( I_Location_Ptr inLoc )
{	
	return new Text_Stream_OnFile( CreateTextFile(inLoc) );
}	
示例#2
0
///////////////////////////////////////////////////////////////////////////////
// OnTest
void CXZipTestDlg::OnTest() 
{
#ifdef _UNICODE
	ZIPENTRYW ze;
#else
	ZIPENTRY ze; 
#endif

	memset(&ze, 0, sizeof(ze));
	TCHAR * pszArchive1 = _T("_TestZipTmp1.zip");
	TCHAR * pszArchive2 = _T("_TestZipTmp2.zip");

	// text files
	TCHAR * pszName1    = _T("_TestZipTmp1.txt");
	TCHAR * pszName2    = _T("_TestZipTmp2.txt");
	TCHAR * pszName3    = _T("_TestZipTmp3.txt");

	// binary files
	TCHAR * pszName4    = _T("_TestZipTmp4.bin");
	TCHAR * pszName5    = _T("_TestZipTmp5.bin");
	TCHAR * pszName6    = _T("_TestZipTmp6.bin");
	TCHAR * pszName7    = _T("_TestZipTmp7.bin");
	TCHAR * pszName8    = _T("_TestZipTmp8.bin");
	TCHAR * pszName9    = _T("_TestZipTmp9.bin");

	// delete zip files
	::DeleteFile(pszArchive1);
	::DeleteFile(pszArchive2);

	// create .txt files
	CreateTextFile(pszName1, 10000);
	CreateTextFile(pszName2, 100);
	CreateTextFile(pszName3, 10);

	// create .bin files
	CreateBinaryFile(pszName4, 16384);
	CreateBinaryFile(pszName5, 3*16384);
	CreateBinaryFile(pszName6, 8*16384);
	CreateBinaryFile(pszName7, 123);
	CreateBinaryFile(pszName8, 17000);
	CreateBinaryFile(pszName9, 8*16384+1);

	///////////////////////////////////////////////////////////////////////////
	// single-file zip

	m_List.AddLine(CXListBox::Blue, CXListBox::White, _T(""));

	m_List.Printf(CXListBox::Navy, CXListBox::White, 0, 
		_T("    === Testing single-file zip ==="));

	BOOL bRet = Zip(pszArchive1, pszName1);

	if (bRet)
	{
		m_List.Printf(CXListBox::Green, CXListBox::White, 0, 
			_T("    Zip archive created OK"));

		m_List.Printf(CXListBox::Black, CXListBox::White, 0, 
			_T("    === Testing unzip ==="));

		HZIP hz = OpenZip(pszArchive1, 0, ZIP_FILENAME);

		if (hz)
		{
			ZRESULT zr = GetZipItem(hz, -1, &ze); 

			if (zr == ZR_OK)
			{
				int numitems = ze.index;

				if (numitems == 1)
				{
					m_List.Printf(CXListBox::Green, CXListBox::White, 0, 
						_T("    Zip archive contains 1 file ==> OK"));

					VerifyZip(hz, pszName1);

					CloseZip(hz);
				}
				else
				{
					m_List.Printf(CXListBox::Red, CXListBox::White, 0, 
						_T("    Zip contents bad"));
				}
			}
			else
			{
				m_List.Printf(CXListBox::Red, CXListBox::White, 0, 
					_T("    GetZipItem failed"));
			}
		}
		else
		{
			m_List.Printf(CXListBox::Red, CXListBox::White, 0, 
				_T("   Failed to open zip file '%s'"), pszArchive1);
		}
	}
	else
	{
		m_List.Printf(CXListBox::Red, CXListBox::White, 0, 
			_T("    Failed to create zip"));
	}


	///////////////////////////////////////////////////////////////////////////
	// multi-file zip

	m_List.AddLine(CXListBox::Blue, CXListBox::White, _T(""));

	m_List.Printf(CXListBox::Navy, CXListBox::White, 0, 
		_T("    === Testing multi-file zip ==="));

	HZIP hz = CreateZip(pszArchive2, 0, ZIP_FILENAME);

	if (hz)
	{
		m_List.Printf(CXListBox::Green, CXListBox::White, 0, 
			_T("    Zip archive created OK"));

		if ((ZipAdd(hz, pszName1,  pszName1, 0, ZIP_FILENAME) == ZR_OK) &&
			(ZipAdd(hz, pszName2,  pszName2, 0, ZIP_FILENAME) == ZR_OK) &&
			(ZipAdd(hz, pszName3,  pszName3, 0, ZIP_FILENAME) == ZR_OK) &&
			(ZipAdd(hz, pszName4,  pszName4, 0, ZIP_FILENAME) == ZR_OK) &&
			(ZipAdd(hz, pszName5,  pszName5, 0, ZIP_FILENAME) == ZR_OK) &&
			(ZipAdd(hz, pszName6,  pszName6, 0, ZIP_FILENAME) == ZR_OK) &&
			(ZipAdd(hz, pszName7,  pszName7, 0, ZIP_FILENAME) == ZR_OK) &&
			(ZipAdd(hz, pszName8,  pszName8, 0, ZIP_FILENAME) == ZR_OK) &&
			(ZipAdd(hz, pszName9,  pszName9, 0, ZIP_FILENAME) == ZR_OK))
		{
			m_List.Printf(CXListBox::Green, CXListBox::White, 0, 
				_T("    Files added to zip archive OK"));

			CloseZip(hz);

			hz = OpenZip(pszArchive2, 0, ZIP_FILENAME);

			if (hz)
			{
				m_List.Printf(CXListBox::Green, CXListBox::White, 0, 
					_T("    Zip archive opened OK"));

				GetZipItem(hz, -1, &ze); 
				int numitems = ze.index;

				if (numitems == 9)
				{
					m_List.Printf(CXListBox::Green, CXListBox::White, 0, 
						_T("    Zip archive contains correct number of entries"));


					for (int i = 0; i < numitems; i++)
					{ 
						GetZipItem(hz, i, &ze);
						m_List.Printf(CXListBox::Black, CXListBox::White, 0, 
							_T("        %d:  %s"), i, ze.name);
					}

					VerifyZip(hz, pszName1);
					VerifyZip(hz, pszName2);
					VerifyZip(hz, pszName3);
					VerifyZip(hz, pszName4);
					VerifyZip(hz, pszName5);
					VerifyZip(hz, pszName6);
					VerifyZip(hz, pszName7);
					VerifyZip(hz, pszName8);
					VerifyZip(hz, pszName9);
				}
				else
				{
					m_List.Printf(CXListBox::Red, CXListBox::White, 0, 
						_T("    Number of entries in zip archive is incorrect"));
				}
			}
			else
			{
				m_List.Printf(CXListBox::Red, CXListBox::White, 0, 
					_T("    Failed to open zip archive"));
			}
		}
		else
		{
			m_List.Printf(CXListBox::Red, CXListBox::White, 0, 
				_T("    Failed to add file to zip archive"));
		}
	}
	else
	{
		m_List.Printf(CXListBox::Red, CXListBox::White, 0, 
			_T("    Failed to create zip archive"));
	}

	CloseZip(hz);

	// the files are not deleted - you can inspect them after running test

	//::DeleteFile(pszArchive1);
	//::DeleteFile(pszArchive2);
	//::DeleteFile(pszName1);
	//::DeleteFile(pszName2);
	//::DeleteFile(pszName3);

	m_List.AddLine(CXListBox::Blue, CXListBox::White, _T(""));
}
示例#3
0
文件: main.c 项目: ICRAR/gridding
static void
e5_export_bov(
    const char* bov_file, 
    eid_t e5_file_id, 
    e5_grid_dataset* grid)
{
    static const int min_bricklet = 1;
    static const int max_bricklet = 32;
    
    int i;
    int d;
    
    bov_header_t header;
    e5_bov_attrs_t attrs;
    
    memset(&header, 0, sizeof(bov_header_t));
    memset(&attrs, 0, sizeof(e5_bov_attrs_t));
    
    size_t len = strlen(bov_file) + 8;
    char *data_file = malloc(len);
    snprintf(data_file, len, "%s.data", e5_basename(bov_file));
    
    eid_t e5_group_id = e5_open_group(e5_file_id, "/Emissivity/real scalars");           
    e5_attr real_scalars_attr[] = { {"time", &(attrs.time), E5_TYPE_DOUBLE, 0}, {0} };
    estatus_t status = e5_read_attr_list(e5_group_id, real_scalars_attr);
    E5_EXIT_ON_ERROR(status);
    e5_close_group(e5_group_id);
    
    e5_group_id = e5_open_group(e5_file_id, "/Emissivity/real runtime parameters");           
    e5_attr real_param_attr[] = { 
        {"xmin", &(attrs.xmin), E5_TYPE_DOUBLE, 0}, 
        {"xmax", &(attrs.xmax), E5_TYPE_DOUBLE, 0}, 
        {"ymin", &(attrs.ymin), E5_TYPE_DOUBLE, 0}, 
        {"ymax", &(attrs.ymax), E5_TYPE_DOUBLE, 0}, 
        {"zmin", &(attrs.zmin), E5_TYPE_DOUBLE, 0}, 
        {"zmax", &(attrs.zmax), E5_TYPE_DOUBLE, 0}, 
        {0} 
    };
    
    status = e5_read_attr_list(e5_group_id, real_param_attr);
    E5_EXIT_ON_ERROR(status);
    e5_close_group(e5_group_id);
    
    header.variable = grid->name;
    header.time = (float)attrs.time;
    header.data_file = data_file;
    header.data_size[0] = (int)grid->dim[0];
    header.data_size[1] = (int)grid->dim[1];
    header.data_size[2] = (int)grid->dim[2];
    header.centering = "zonal";
    header.data_components = 1;
    header.brick_origin[0] = (attrs.xmax + attrs.xmin) * 0.5;
    header.brick_origin[1] = (attrs.ymax + attrs.ymin) * 0.5;
    header.brick_origin[2] = (attrs.zmax + attrs.zmin) * 0.5;
    header.brick_size[0] = attrs.xmax - attrs.xmin;
    header.brick_size[1] = attrs.ymax - attrs.ymin;
    header.brick_size[2] = attrs.zmax - attrs.zmin;
    
    for(i=min_bricklet; i <= max_bricklet; i++)
    {
        for(d=0; d<3; d++)
            header.data_bricklets[d] = ((header.data_size[d] % i) == 0) ? i : header.data_bricklets[d];
    }

    if(grid->type == E5_TYPE_FLOAT)
        header.data_format = "FLOAT";
    else if(grid->type == E5_TYPE_DOUBLE)
        header.data_format = "DOUBLE";
    else if(grid->type == E5_TYPE_INT)
        header.data_format = "INT";        
        
    FILE* fd = CreateTextFile(bov_file); 
    if(!fd)
    {
        printf("Failed to create BOV header file '%s'! Exiting...\n", bov_file);
        exit(EXIT_FAILURE);
    }

    printf("Writing header to '%s'...\n", bov_file);
    fprintf(fd, "TIME: %f\n", header.time);
    fprintf(fd, "DATA_FILE: %s\n", header.data_file);
    fprintf(fd, "DATA_SIZE: %d %d %d\n", 
        header.data_size[0], header.data_size[1], header.data_size[2]);
    fprintf(fd, "DATA_FORMAT: %s\n", header.data_format);
    fprintf(fd, "VARIABLE: %s\n", header.variable);
    fprintf(fd, "DATA_ENDIAN: LITTLE\n");
    fprintf(fd, "CENTERING: %s\n", header.centering);
    fprintf(fd, "BRICK_ORIGIN: %f %f %f\n",
        header.brick_origin[0], header.brick_origin[1], header.brick_origin[2]);
    fprintf(fd, "BRICK_SIZE: %f %f %f\n",
        header.brick_size[0], header.brick_size[1], header.brick_size[2]);
    fprintf(fd, "DIVIDE_BRICK: true\n");
    fprintf(fd, "DATA_BRICKLETS: %d %d %d\n",
        header.data_bricklets[0], header.data_bricklets[1], header.data_bricklets[2]);
    fprintf(fd, "DATA_COMPONENTS: %d\n", 1);
    CloseTextFile(fd);

    snprintf(data_file, len, "%s.data", (bov_file));
    fd = CreateRawFile(header.data_file);
    if(!fd)
    {
        printf("Failed to create BOV data file '%s'! Exiting...\n", bov_file);
        exit(EXIT_FAILURE);
    }

    printf("Writing data to '%s'...\n", header.data_file);
    WriteRaw(fd, grid->data, e5_sizeof(grid->type), grid->dim[0] * grid->dim[1] * grid->dim[2]);
    CloseRawFile(fd);
    printf("DONE!\n");
}