|
Packit Service |
a2489d |
/*
|
|
Packit Service |
a2489d |
* lftp - file transfer program
|
|
Packit Service |
a2489d |
*
|
|
Packit Service |
a2489d |
* Copyright (c) 1996-2012 by Alexander V. Lukyanov (lav@yars.free.net)
|
|
Packit Service |
a2489d |
*
|
|
Packit Service |
a2489d |
* This program is free software; you can redistribute it and/or modify
|
|
Packit Service |
a2489d |
* it under the terms of the GNU General Public License as published by
|
|
Packit Service |
a2489d |
* the Free Software Foundation; either version 3 of the License, or
|
|
Packit Service |
a2489d |
* (at your option) any later version.
|
|
Packit Service |
a2489d |
*
|
|
Packit Service |
a2489d |
* This program is distributed in the hope that it will be useful,
|
|
Packit Service |
a2489d |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit Service |
a2489d |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
Packit Service |
a2489d |
* GNU General Public License for more details.
|
|
Packit Service |
a2489d |
*
|
|
Packit Service |
a2489d |
* You should have received a copy of the GNU General Public License
|
|
Packit Service |
a2489d |
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
Packit Service |
a2489d |
*/
|
|
Packit Service |
a2489d |
|
|
Packit Service |
a2489d |
#include <config.h>
|
|
Packit Service |
a2489d |
#include "StringSet.h"
|
|
Packit Service |
a2489d |
#include "misc.h"
|
|
Packit Service |
a2489d |
|
|
Packit Service |
a2489d |
#define set_size set.count()
|
|
Packit Service |
a2489d |
|
|
Packit Service |
a2489d |
StringSet::StringSet() {}
|
|
Packit Service |
a2489d |
StringSet::StringSet(const char *const *s,int n) { Assign(s,n); }
|
|
Packit Service |
a2489d |
StringSet::StringSet(const StringSet &o) { Assign(o.set.get(),o.set.count()); }
|
|
Packit Service |
a2489d |
StringSet::StringSet(const char *s) { Assign(&s,1); }
|
|
Packit Service |
a2489d |
|
|
Packit Service |
a2489d |
bool StringSet::IsEqual(const char *const *set1,int n1) const
|
|
Packit Service |
a2489d |
{
|
|
Packit Service |
a2489d |
if(set_size!=n1)
|
|
Packit Service |
a2489d |
return false;
|
|
Packit Service |
a2489d |
int i=0;
|
|
Packit Service |
a2489d |
while(i
|
|
Packit Service |
a2489d |
{
|
|
Packit Service |
a2489d |
if(strcmp(set[i],set1[i]))
|
|
Packit Service |
a2489d |
return false;
|
|
Packit Service |
a2489d |
i++;
|
|
Packit Service |
a2489d |
}
|
|
Packit Service |
a2489d |
return true;
|
|
Packit Service |
a2489d |
}
|
|
Packit Service |
a2489d |
void StringSet::Assign(const char *const *set1,int n1)
|
|
Packit Service |
a2489d |
{
|
|
Packit Service |
a2489d |
Empty();
|
|
Packit Service |
a2489d |
while(n1-->0)
|
|
Packit Service |
a2489d |
set.append(xstrdup(*set1++));
|
|
Packit Service |
a2489d |
}
|
|
Packit Service |
a2489d |
void StringSet::Append(const char *s)
|
|
Packit Service |
a2489d |
{
|
|
Packit Service |
a2489d |
if(!s)
|
|
Packit Service |
a2489d |
return;
|
|
Packit Service |
a2489d |
set.append(xstrdup(s));
|
|
Packit Service |
a2489d |
}
|
|
Packit Service |
a2489d |
void StringSet::Replace(int i,const char *s)
|
|
Packit Service |
a2489d |
{
|
|
Packit Service |
a2489d |
if(i==set_size)
|
|
Packit Service |
a2489d |
Append(s);
|
|
Packit Service |
a2489d |
else if(i>=0 && i
|
|
Packit Service |
a2489d |
{
|
|
Packit Service |
a2489d |
xstrset(set[i],s);
|
|
Packit Service |
a2489d |
if(!s && i==set_size-1)
|
|
Packit Service |
a2489d |
set.set_length(set.count()-1);
|
|
Packit Service |
a2489d |
}
|
|
Packit Service |
a2489d |
}
|
|
Packit Service |
a2489d |
void StringSet::InsertBefore(int i,const char *s)
|
|
Packit Service |
a2489d |
{
|
|
Packit Service |
a2489d |
if(!s)
|
|
Packit Service |
a2489d |
return;
|
|
Packit Service |
a2489d |
set.insert(xstrdup(s),i);
|
|
Packit Service |
a2489d |
}
|
|
Packit Service |
a2489d |
|
|
Packit Service |
a2489d |
void StringSet::AppendFormat(const char *f,...)
|
|
Packit Service |
a2489d |
{
|
|
Packit Service |
a2489d |
va_list v;
|
|
Packit Service |
a2489d |
va_start(v,f);
|
|
Packit Service |
a2489d |
set.append(xstring::vformat(f,v).borrow());
|
|
Packit Service |
a2489d |
va_end(v);
|
|
Packit Service |
a2489d |
}
|
|
Packit Service |
a2489d |
|
|
Packit Service |
a2489d |
void StringSet::MoveHere(StringSet &o)
|
|
Packit Service |
a2489d |
{
|
|
Packit Service |
a2489d |
set.set(o.set);
|
|
Packit Service |
a2489d |
o.set.borrow();
|
|
Packit Service |
a2489d |
}
|
|
Packit Service |
a2489d |
|
|
Packit Service |
a2489d |
char *StringSet::Pop(int i)
|
|
Packit Service |
a2489d |
{
|
|
Packit Service |
a2489d |
if(i<0 || i>=set_size)
|
|
Packit Service |
a2489d |
return 0;
|
|
Packit Service |
a2489d |
char *s=set[i];
|
|
Packit Service |
a2489d |
set[i]=0;
|
|
Packit Service |
a2489d |
set.remove(i);
|
|
Packit Service |
a2489d |
return s;
|
|
Packit Service |
a2489d |
}
|