Example #1
0
void test1(void) {
    int i;
    assert(MAX >= 100);
    InitFMem(BasicAlloc, BasicFree, NULL, NULL);
    memset(a, 0, sizeof(a));
    FAlloc(0);
    FFree(0);
    for (i = 0; i < MAX-50; i++) {
        AddElem(i, rand() % 50 + 1);
    }
    for (i = MAX-50; i < MAX; i++) {
        AddElem(i, rand() % 10 + 253);
    }

    for (i = 0; i < MAX; i++) {
        FreeElem(i);
    }

    for (i = 0; i < 10000; i++) {
        if (rand() % 2 && numInA < MAX) {
            AddRandElem(rand() % 20 + 1);
        } else if (numInA > 0) {
            FreeRandElem();
        }
    }
    FreeAllElems();
    AddRandElem(20);
    AddRandElem(40);
    AddRandElem(255);
    AddRandElem(256);
    FiniFMem(FMEM_CHECK);
    assert(g_memUsed == 0);
    printf("Test 1 -- Success.\n");
    printMemStats();
}
Example #2
0
int		main(void){
	DL node = InitList();
	ShowList(node);

	AddElem(node,1);
	AddElem(node,2);
	AddElem(node,3);
	AddElem(node,4);
	AddElem(node,5);
	printf("%d\n",node->data);
	ShowList(node);

	InsertList(node,3,10);
	printf("%d\n",node->data);
	ShowList(node);

	int e;
	RemoveList(node,3,&e);
	printf("%d %d\n",node->data,e);
	ShowList(node);

	GetElem(node,3);
	printf("%d %d\n",GetElem(node,3),GetElem(node,20));

	ClearList(node);
	ShowList(node);
	free(node);
	return(EXIT_SUCCESS);
}
Example #3
0
//methods parent's class
//-------------------------------------------
void linklist::InsertElem( )
{
	list *pel, *pins;
	char ch;
	do
	{
		pel = new list;		
		if( pel == NULL )		//if new returns NULL(cant allocate a memory)
		{
			cout<<"\nError! There not enought memory!";		//we have an error
			exit( 1 );
		}
		cout<<"Enter long number: ";   //else
		cin>>pel->num;   	//save entered information in list element
		if ( first == NULL )		//if list is empty 
		{
			pel->next = pel->prev = NULL;
			first = last = pel;	  //new element becomes first and last simultainesly
			return;
		}
		pins = first;
		while ( ( pins != NULL ) && ( pel->num < pins->num ) )	//set new element in its position(we have sorted list)
			pins = pins->next;
		AddElem ( pel, pins );		//add new element before *pins
		cout<<"Next number? (y/n)";
		cin>>ch;
	}
	while (ch == 'y' );
}
Example #4
0
	Set(int size, SetElement *Elements) {
		int counter;
		ClearSet();
		for(counter = 0; counter < size; counter++) {
			AddElem(Elements[counter]);
		}
	}
int PointSet::AddPointReuse ()
{
	xref ndx;	
	if ( NumPoints() < mBuf[0].max-1 )
		AddElem ( 0, ndx );
	else
		RandomElem ( 0, ndx );
	return ndx;
}
Example #6
0
void AddRandElem(int size) {
    int i = rand() % MAX;
    int j = i;
    while (a[j].ptr != NULL) {
        j = (j + 1) % MAX;
        assert(j != i);
    }
    AddElem(j, size);
}
int FluidSystem::AddPoint ()
{
	xref ndx;	
	Fluid* f = (Fluid*) AddElem ( 0, ndx );	
	f->sph_force.Set(0,0,0);
	f->vel.Set(0,0,0);
	f->vel_eval.Set(0,0,0);
	f->next = 0x0;
	f->pressure = 0;
	f->density = 0;
	return ndx;
}
Example #8
0
NODE* GetCircleNode(){
	NODE * p = gHeadNode.pNext;
	for(uint i = 1; i <= gLinkLength; ++i){
		AddElem(p, p->hashVal);
		if(p->pNext && CheckNode(p->pNext, p->pNext->hashVal)){
			Destroy();
			return p->pNext;
		}
		p = p->pNext;
	}

	Destroy();
	return NULL;

}
int FluidSystem::AddPointReuse ()
{
	xref ndx;	
	Fluid* f;
	if ( NumPoints() <= mBuf[0].max-2 )
		f = (Fluid*) AddElem ( 0, ndx );
	else
		f = (Fluid*) RandomElem ( 0, ndx );

	f->sph_force.Set(0,0,0);
	f->vel.Set(0,0,0);
	f->vel_eval.Set(0,0,0);
	f->next = 0x0;
	f->pressure = 0;
	f->density = 0;
	return ndx;
}
int PointSet::AddPoint ()
{
	xref ndx;	
	AddElem ( 0, ndx );	
	return ndx;
}
bool CMorphDictBuilder::GenPredictIdx(const MorphoWizard& wizard, int PostfixLength, int MinFreq, string path)
{
	
	
	DwordVector ModelFreq(wizard.m_FlexiaModels.size(), 0);
	//  building frequences of flexia models
	for(const_lemma_iterator_t lnMapIt = wizard.m_LemmaToParadigm.begin(); lnMapIt != wizard.m_LemmaToParadigm.end(); lnMapIt++)
		ModelFreq[lnMapIt->second.m_FlexiaModelNo]++;

	bool bSparsedDictionary;
	{
		int Count=0;
		for (size_t ModelNo=0; ModelNo<ModelFreq.size(); ModelNo++)
			if (ModelFreq[ModelNo] >= MinimalFlexiaModelFrequence)
				Count++;
		bSparsedDictionary = 2*Count < ModelFreq.size();
		if (bSparsedDictionary)
			fprintf (stderr, "Flexia models are too sparsed\n");
	};



	string PlugLemma = GetPlugLemmabyLanguage(wizard.m_Language);
	int PlugLemmaInfoNo = -1;

	Flex2WordMap svMapRaw;
	//  going through all words
	for(size_t lin =0; lin < m_LemmaInfos.size(); lin++)
	{
		
		if (!(lin%1000))
			log ( Format("Pick up data...%i            \r", lin) ) ;

		const CLemmaInfo& LemmaInfo = m_LemmaInfos[lin].m_LemmaInfo;
		size_t ModelNo = LemmaInfo.m_FlexiaModelNo;
		const CFlexiaModel& paradigm = m_FlexiaModels[ModelNo];
		string	base = m_Bases[m_LemmaInfos[lin].m_LemmaStrNo].GetString();

		if (base+paradigm.get_first_flex() == PlugLemma)
		{
			PlugLemmaInfoNo = lin;
			continue;
		};
		
		if (!bSparsedDictionary)
			if (ModelFreq[ModelNo] < MinimalFlexiaModelFrequence)
				continue;

		string pos = wizard.get_pos_string(paradigm.get_first_code());
		WORD nps =  GetPredictionPartOfSpeech(pos, wizard.m_Language);
		if (nps == UnknownPartOfSpeech)
			continue;


		const vector <bool>& Infos = m_ModelInfo[ModelNo];
		for (size_t i=0; i<paradigm.m_Flexia.size(); i++)
		if (Infos[i])
		{
			string flexia = paradigm.m_Flexia[i].m_FlexiaStr;
			string wordform = base + flexia;
			if (wordform.length() < PostfixLength) continue;
			string Postfix = wordform.substr(wordform.length() - PostfixLength);
			AddElem(svMapRaw, Postfix, lin, nps, i, ModelFreq, m_LemmaInfos);
		}
		
	}
	if (PlugLemmaInfoNo == -1)
	{
		ErrorMessage (Format("Cannot find a word for the default noun prediction (\"%s\") while  generating %s prediction base",PlugLemma.c_str(), GetStringByLanguage(wizard.m_Language).c_str()));
		return false;
	};

	log("Saving...\n");

	CMorphAutomatBuilder R(wizard.m_Language);
	R.InitTrie();

	// adding crtitical noun
	{
		string s = CriticalNounLetterPack;
		s += AnnotChar;
		s += R.EncodeIntToAlphabet(0); // noun
		s += AnnotChar;
		s += R.EncodeIntToAlphabet(PlugLemmaInfoNo);
		s += AnnotChar;
		s += R.EncodeIntToAlphabet(0);
		R.AddStringDaciuk(s);
	};

	for( Flex2WordMap::const_iterator it=svMapRaw.begin(); it!=svMapRaw.end(); it++ )
	{
		for( int i=0; i<it->second.size(); i++ )
		{
			const CPredictWord& W = it->second[i];
			// checking minimal frequence

			if (W.m_Freq < MinFreq) continue;
			
			string s = it->first;
			reverse(s.begin(), s.end());
			s += AnnotChar;
			s += R.EncodeIntToAlphabet(W.m_nps);
			s += AnnotChar;
			s += R.EncodeIntToAlphabet(W.m_LemmaInfoNo);
			s += AnnotChar;
			s += R.EncodeIntToAlphabet(W.m_ItemNo);
			R.AddStringDaciuk(s);
		}
	};

	R.ConvertBuildRelationsToRelations();
	R.Save(path + PREDICT_BIN_PATH);
	

	svMapRaw.clear();
	return true;
	
}
Example #12
0
	Set(SetElement Element) {
		ClearSet();
		AddElem(Element);
	}
Example #13
0
int CElemGrid::Resize(int x1,int y1,int z1,int x2,int y2,int z2)
{
	int t;
	int xsq1=0,ysq1=0,zsq1=0,xsq2=0,ysq2=0,zsq2=0;

	t=minx-x1;
	if(t>0) xsq1=(t-1)/sqsx+1;

	t=miny-y1;
	if(t>0) ysq1=(t-1)/sqsy+1;

	t=minz-z1;
	if(t>0) zsq1=(t-1)/sqsz+1;

	t=x2-maxx;
	if(t>=0) xsq2=t/sqsx+1;

	t=y2-maxy;
	if(t>=0) ysq2=t/sqsy+1;

	t=z2-maxz;
	if(t>=0) zsq2=t/sqsz+1;

	minx-=sqsx*xsq1; miny-=sqsy*ysq1; minz-=sqsz*zsq1;
	maxx+=sqsx*xsq2; maxy+=sqsy*ysq2; maxz+=sqsz*zsq2;

	int ssx,ssy,ssz;
	ssx=numsqx+xsq1+xsq2;
	ssy=numsqy+ysq1+ysq2;
	ssz=numsqz+zsq1+zsq2;

	int x,y,z;
	CPGEnElemList *nmap=new CPGEnElemList[ssx*ssy*ssz];

	CPGEnElemList *oldl,*newl;

	oldl=map;
	newl=&nmap[ zsq1 + ssz*(xsq1 + ysq1*ssx) ];

	int adx,ady;

	adx = ssz-numsqz;
	ady = (ssx-numsqx)*ssz;

	for(y=0;y<numsqy;y++)
	{
		for(x=0;x<numsqx;x++)
		{
			for(z=0;z<numsqz;z++)
			{
				newl->el = oldl->el;
				oldl->el = 0;

				newl++;
				oldl++;
			}

			newl+=adx;

		}

		newl+=ady;
	}


	numsqx=ssx;
	numsqy=ssy;
	numsqz=ssz;
	
	delete[] map;
	map=nmap;

	CPGEnElemList oldelemsout;
	CPGEnElemListElem *le;

	oldelemsout.el=elemsout.el; elemsout.el=NULL;
	numelemsout=0;

	le=oldelemsout.el;
	while(le)
	{
		AddElem(le->data,1);
		le=le->next;
	}

	return 1;
}
Example #14
0
  void GeomSearch3d :: Create()
  {
    INDEX i,j,k;
    if (reset)
      {
	const double hashelemsizefactor = 4;
	reset = 0;
	/*
	  minext=Point3d(MAXDOUBLE, MAXDOUBLE, MAXDOUBLE);
	  maxext=Point3d(MINDOUBLE, MINDOUBLE, MINDOUBLE);
	*/
	ElemMaxExt(minext, maxext, faces->Get(1).Face());
	Point3d maxp, minp;
	Vec3d midext(0,0,0);
      
	//get max Extension of Frontfaces
	for (i = 1; i <= faces->Size(); i++)
	  {
	    ElemMaxExt(minp, maxp, faces->Get(i).Face());
	    MinCoords(minp, minext);
	    MaxCoords(maxp, maxext);
	    midext+=maxp-minp;
	  }


	maxextreal = maxext;
	maxext = maxext + 1e-4 * (maxext - minext);

	midext*=1./faces->Size();
	Vec3d boxext = maxext - minext;
      
	//delete old Hashtable:
	if (size.i1 != 0)
	  {
	    for (i = 1; i <= size.i1*size.i2*size.i3; i++)
	      {
		delete hashtable.Get(i);
	      }
	  } 
      
	size.i1 = int (boxext.X()/midext.X()/hashelemsizefactor+1);
	size.i2 = int (boxext.Y()/midext.Y()/hashelemsizefactor+1);
	size.i3 = int (boxext.Z()/midext.Z()/hashelemsizefactor+1);
	// PrintMessage (5, "hashsizes = ", size.i1, ", ", size.i2, ", ", size.i3);
      
	elemsize.X()=boxext.X()/size.i1;
	elemsize.Y()=boxext.Y()/size.i2;
	elemsize.Z()=boxext.Z()/size.i3;

	//create Hasharrays:
	hashtable.SetSize(size.i1*size.i2*size.i3);
	for (i = 1; i <= size.i1; i++)
	  {
	    for (j = 1; j <= size.i2; j++)
	      {
		for (k = 1; k <= size.i3; k++)
		  {
		    INDEX ind=i+(j-1)*size.i1+(k-1)*size.i2*size.i1;
		    hashtable.Elem(ind) = new Array <int> ();
		  }
	      }
	  }
      }
    else
      {
	//Clear all Hash-Arrays
	for (i = 1; i <= size.i1; i++)
	  {
	    for (j = 1; j <= size.i2; j++)
	      {
		for (k = 1; k <= size.i3; k++)
		  {
		    INDEX ind=i+(j-1)*size.i1+(k-1)*size.i2*size.i1;
		    hashtable.Elem(ind)->SetSize(0);
		  }
	      }
	  }	  
      }
  
    //Faces in Hashtable einfuegen:
    for (i = 1; i <= faces->Size(); i++)
      {
	AddElem(faces->Get(i).Face(),i);
      }
  
  }