Пример #1
0
node *buildtree(list *l) {
	node *child_0,*child_1;
	size_t count = 0;
	size_t count1 = 0;
	size_t i;
	node **tmp = (node **)malloc(sizeof(node*) * size);
	for( i  = 0; i <size ; i++)
		tmp[i] = (node*)malloc(sizeof(node)); 
	node *tmp1 = (node *)malloc(sizeof(node));
	while(l->length){
		node *p ;
		p = removal(l);
		node *q;
		q = removal(l);
			if( p && q) {
				
				(tmp[count])->freq =  p->freq + q->freq;	
				(tmp[count])->child_0 = p;
				(tmp[count])->child_1 = q;
				insert(l,tmp[count]);
				child_0 = p;
				child_1 = q;
				printlist(*l);
				count++;
				
			}
		else {
			tmp1->freq = p->freq;
			tmp1->child_0 = child_0;
			tmp1->child_1 = child_1;
			insert(l,tmp1);
			break;
		}
	}
	return tmp1;
}
Пример #2
0
  AutoPtr<StringBuilder::Removal> StringBuilder::remove(long begin,
      long end)
  {
    Ptr<Removal> removal(new Removal(begin, end));

    int insertionIndex = _removals->getSize();
    
    for(int i = insertionIndex - 1; i >= 0; i--) {
      if(begin < _removals->get(i)->getBegin())
        insertionIndex = i;
      else
        break;
    }
    
    _removals->insert(insertionIndex, removal);

    return removal.retain();
  }
Пример #3
0
frl::Bool concatenate( const String &fileName1, const String &fileName2, const String &fileNameDst, Bool overwrite )
{
	if( ! isExist( fileName1 ) || ! isExist( fileName2 ) )
		return False;

	struct DescriptorManager
	{
		Descriptor file1;
		Descriptor file2;
		Descriptor fileDst;

		DescriptorManager( void )
			:	file1( InvalidDescriptor ),
				file2( InvalidDescriptor ),
				fileDst( InvalidDescriptor )
		{
		}
		~DescriptorManager()
		{
			close( file1 );
			close( file2 );
			close( fileDst );
		}

	};
	DescriptorManager dm;

	dm.file1 = open( fileName1, openReadOnly );
	if( dm.file1 == InvalidDescriptor )
		return False;

	dm.file2 = open( fileName2, openReadOnly );
	if( dm.file2 == InvalidDescriptor )
		return False;

	if( isExist( fileNameDst ) )
	{
		if( overwrite )
		{
			removal( fileNameDst );
			create( fileNameDst );
			dm.fileDst = open( fileNameDst, openWriteOnly );
			if( dm.fileDst == InvalidDescriptor )
				return False;
		}
		else
		{
			dm.fileDst = open( fileNameDst, openWriteOnly );
			if( dm.fileDst == InvalidDescriptor )
				return False;
			seekToEnd( dm.fileDst );
		}
	}
	else
	{
		create( fileNameDst );
		dm.fileDst = open( fileNameDst, openWriteOnly );
		if( dm.fileDst == InvalidDescriptor )
			return False;
	}

	UChar buffer[4096];
	RWCount countWrite, countRead;
	while( True )
	{
		countRead = read( dm.file1, buffer, sizeof(buffer) );
		if( countRead < 0 )
			return False;

		if( countRead == 0 )
			break;

		countWrite = write( dm.fileDst, buffer, countRead );
		if( countWrite < 0 )
			return False;
	}
	while( True )
	{
		countRead = read( dm.file2, buffer, sizeof(buffer) );
		if( countRead < 0 )
			return False;

		if( countRead == 0)
			break;

		countWrite = write( dm.fileDst, buffer, countRead );
		if( countWrite < 0)
			return False;
	}
	return True;
}
Пример #4
0
frl::Bool move( const frl::String &fileNameSrc, const frl::String &fileNameDst, frl::Bool overwrite )
{
	if( ! copy( fileNameSrc, fileNameDst, overwrite ) )
		return frl::False;
	return removal( fileNameSrc );
}