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(); }
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); }
//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' ); }
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; }
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; }
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; }
Set(SetElement Element) { ClearSet(); AddElem(Element); }
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; }
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); } }