Patch level : 12.0 no-patch
Files correlati : Commento : Aggiunta merge per le string_array
This commit is contained in:
parent
3fe4a81466
commit
94c6ecf100
@ -1,5 +1,6 @@
|
|||||||
#include <array.h>
|
#include <array.h>
|
||||||
#include <strings.h>
|
#include <strings.h>
|
||||||
|
#include <utility.h>
|
||||||
|
|
||||||
void TContainer::for_each( OPERATION_FUNCTION op )
|
void TContainer::for_each( OPERATION_FUNCTION op )
|
||||||
{
|
{
|
||||||
@ -158,11 +159,8 @@ bool TArray::destroy(
|
|||||||
|
|
||||||
if (index < 0)
|
if (index < 0)
|
||||||
{
|
{
|
||||||
for (int i = last(); i >= 0; i--) if (_data[i] != NULL)
|
for (int i = last(); i >= 0; i--) if (_data[i] != nullptr)
|
||||||
{
|
safe_delete(_data[i]);
|
||||||
delete _data[i];
|
|
||||||
_data[i] = NULL;
|
|
||||||
}
|
|
||||||
_items = _next = 0;
|
_items = _next = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -182,7 +180,8 @@ void TArray::copy(const TArray& a)
|
|||||||
for (int i = a.size()-1; i >= 0; i--)
|
for (int i = a.size()-1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
const TObject* o = a.objptr(i);
|
const TObject* o = a.objptr(i);
|
||||||
if (o != NULL)
|
|
||||||
|
if (o != nullptr)
|
||||||
{
|
{
|
||||||
_data[i] = o->dup();
|
_data[i] = o->dup();
|
||||||
#ifdef DBG
|
#ifdef DBG
|
||||||
@ -653,9 +652,13 @@ int TString_array::find(
|
|||||||
|
|
||||||
HIDDEN int ascending_string(const TObject** o1, const TObject** o2)
|
HIDDEN int ascending_string(const TObject** o1, const TObject** o2)
|
||||||
{
|
{
|
||||||
const TString* s1 = (const TString*)*o1;
|
// const TString* s1 = (const TString*)*o1;
|
||||||
const TString* s2 = (const TString*)*o2;
|
// const TString* s2 = (const TString*)*o2;
|
||||||
return strcmp(*s1, *s2);
|
// return strcmp(*s1, *s2);
|
||||||
|
const TToken_string* s1 = (const TToken_string*)*o1;
|
||||||
|
const TToken_string* s2 = (const TToken_string*)*o2;
|
||||||
|
|
||||||
|
return s1->compare(*s2);
|
||||||
}
|
}
|
||||||
|
|
||||||
HIDDEN int descending_string(const TObject** o1, const TObject** o2)
|
HIDDEN int descending_string(const TObject** o1, const TObject** o2)
|
||||||
@ -668,6 +671,34 @@ void TString_array::sort(bool ascending)
|
|||||||
TArray::sort(ascending ? ascending_string : descending_string);
|
TArray::sort(ascending ? ascending_string : descending_string);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const TString_array & TString_array::merge(const TString_array & a)
|
||||||
|
{
|
||||||
|
FOR_EACH_ARRAY_ROW(a, i, row)
|
||||||
|
if (find(*row) == -1)
|
||||||
|
add(*row);
|
||||||
|
sort(true);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
const TString_array & TString_array::tok2arr(TToken_string & tok, bool clear)
|
||||||
|
{
|
||||||
|
if (clear)
|
||||||
|
destroy();
|
||||||
|
FOR_EACH_STR_TOKEN(tok, s)
|
||||||
|
add(s);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
// @cmember aggiunge (add = true) / sostituisce (add = false) la token string all' array come stringhe singole
|
||||||
|
const TString_array & TString_array::arr2tok(TToken_string & tok, bool clear)
|
||||||
|
{
|
||||||
|
if (clear)
|
||||||
|
tok.cut(0);
|
||||||
|
FOR_EACH_ARRAY_ROW(*this, i, riga)
|
||||||
|
tok.add(*riga);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// TPointer_array
|
// TPointer_array
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
#pragma once
|
|
||||||
#ifndef __ARRAY_H
|
#ifndef __ARRAY_H
|
||||||
#define __ARRAY_H
|
#define __ARRAY_H
|
||||||
|
|
||||||
@ -174,7 +173,7 @@ public:
|
|||||||
// @cmember Ritorna l'oggetto nella posizione index
|
// @cmember Ritorna l'oggetto nella posizione index
|
||||||
TObject& operator[] (int index) const ;
|
TObject& operator[] (int index) const ;
|
||||||
// @cmember Ritorna l'oggetto nella posizione index
|
// @cmember Ritorna l'oggetto nella posizione index
|
||||||
TObject* objptr(int index) const ;
|
virtual TObject* objptr(int index) const ;
|
||||||
// @cmember Assegna all'array l'oggetto passato
|
// @cmember Assegna all'array l'oggetto passato
|
||||||
TArray& operator=(const TArray& a);
|
TArray& operator=(const TArray& a);
|
||||||
|
|
||||||
@ -264,10 +263,16 @@ public:
|
|||||||
// @cmember Cerca una stringa nell'array
|
// @cmember Cerca una stringa nell'array
|
||||||
int find(const char* s, int from = 0) const;
|
int find(const char* s, int from = 0) const;
|
||||||
// @cmember Ordina alfabeticamente l'array
|
// @cmember Ordina alfabeticamente l'array
|
||||||
void sort(bool ascendig = true);
|
void sort(bool ascending = true);
|
||||||
|
// @cmember fonde con l'array a
|
||||||
|
const TString_array & merge(const TString_array & a);
|
||||||
// @cmember Ritorna l'ultima riga (deve esistere!)
|
// @cmember Ritorna l'ultima riga (deve esistere!)
|
||||||
TToken_string& last_row()
|
TToken_string& last_row()
|
||||||
{ return (TToken_string&)operator[](last()); }
|
{ return (TToken_string&)operator[](last()); }
|
||||||
|
// @cmember aggiunge (add = true) la token string all' array come stringhe singole azzerandola prima (clear)
|
||||||
|
const TString_array & tok2arr(TToken_string & tok, bool clear = true);
|
||||||
|
// @cmember aggiunge (add = true) / sostituisce (add = false) la token string all' array v
|
||||||
|
const TString_array & arr2tok(TToken_string & tok, bool clear = true);
|
||||||
|
|
||||||
// @cmember Costruttore
|
// @cmember Costruttore
|
||||||
TString_array(int size = 8) : TArray(size)
|
TString_array(int size = 8) : TArray(size)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user