my own uncrustify run
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
|
||||
#if !defined(INCLUDED_POOLEDSTRING_H)
|
||||
#if !defined( INCLUDED_POOLEDSTRING_H )
|
||||
#define INCLUDED_POOLEDSTRING_H
|
||||
|
||||
#include <map>
|
||||
@@ -13,24 +13,23 @@ class StringPool : public HashTable<char*, std::size_t, RawStringHash, RawString
|
||||
{
|
||||
};
|
||||
|
||||
inline void StringPool_analyse(StringPool& pool)
|
||||
{
|
||||
typedef std::multimap<std::size_t, const char*> Ordered;
|
||||
Ordered ordered;
|
||||
std::size_t total = 0;
|
||||
std::size_t pooled = 0;
|
||||
for(StringPool::iterator i = pool.begin(); i != pool.end(); ++i)
|
||||
{
|
||||
std::size_t size = string_length((*i).key) + 1;
|
||||
total += size * (*i).value;
|
||||
pooled += size + 20;
|
||||
ordered.insert(Ordered::value_type((*i).value, (*i).key));
|
||||
}
|
||||
globalOutputStream() << "total: " << Unsigned(total) << " pooled:" << Unsigned(pooled) << "\n";
|
||||
for(Ordered::iterator i = ordered.begin(); i != ordered.end(); ++i)
|
||||
{
|
||||
globalOutputStream() << (*i).second << " " << Unsigned((*i).first) << "\n";
|
||||
}
|
||||
inline void StringPool_analyse( StringPool& pool ){
|
||||
typedef std::multimap<std::size_t, const char*> Ordered;
|
||||
Ordered ordered;
|
||||
std::size_t total = 0;
|
||||
std::size_t pooled = 0;
|
||||
for ( StringPool::iterator i = pool.begin(); i != pool.end(); ++i )
|
||||
{
|
||||
std::size_t size = string_length( ( *i ).key ) + 1;
|
||||
total += size * ( *i ).value;
|
||||
pooled += size + 20;
|
||||
ordered.insert( Ordered::value_type( ( *i ).value, ( *i ).key ) );
|
||||
}
|
||||
globalOutputStream() << "total: " << Unsigned( total ) << " pooled:" << Unsigned( pooled ) << "\n";
|
||||
for ( Ordered::iterator i = ordered.begin(); i != ordered.end(); ++i )
|
||||
{
|
||||
globalOutputStream() << ( *i ).second << " " << Unsigned( ( *i ).first ) << "\n";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -40,68 +39,54 @@ inline void StringPool_analyse(StringPool& pool)
|
||||
template<typename PoolContext>
|
||||
class PooledString
|
||||
{
|
||||
StringPool::iterator m_i;
|
||||
static StringPool::iterator increment(StringPool::iterator i)
|
||||
{
|
||||
++(*i).value;
|
||||
return i;
|
||||
}
|
||||
static StringPool::iterator insert(const char* string)
|
||||
{
|
||||
StringPool::iterator i = PoolContext::instance().find(const_cast<char*>(string));
|
||||
if(i == PoolContext::instance().end())
|
||||
{
|
||||
return PoolContext::instance().insert(string_clone(string), 1);
|
||||
}
|
||||
return increment(i);
|
||||
}
|
||||
static void erase(StringPool::iterator i)
|
||||
{
|
||||
if(--(*i).value == 0)
|
||||
{
|
||||
char* string = (*i).key;
|
||||
PoolContext::instance().erase(i);
|
||||
string_release(string, string_length(string));
|
||||
}
|
||||
}
|
||||
StringPool::iterator m_i;
|
||||
static StringPool::iterator increment( StringPool::iterator i ){
|
||||
++( *i ).value;
|
||||
return i;
|
||||
}
|
||||
static StringPool::iterator insert( const char* string ){
|
||||
StringPool::iterator i = PoolContext::instance().find( const_cast<char*>( string ) );
|
||||
if ( i == PoolContext::instance().end() ) {
|
||||
return PoolContext::instance().insert( string_clone( string ), 1 );
|
||||
}
|
||||
return increment( i );
|
||||
}
|
||||
static void erase( StringPool::iterator i ){
|
||||
if ( --( *i ).value == 0 ) {
|
||||
char* string = ( *i ).key;
|
||||
PoolContext::instance().erase( i );
|
||||
string_release( string, string_length( string ) );
|
||||
}
|
||||
}
|
||||
public:
|
||||
PooledString() : m_i(insert(""))
|
||||
{
|
||||
}
|
||||
PooledString(const PooledString& other) : m_i(increment(other.m_i))
|
||||
{
|
||||
}
|
||||
PooledString(const char* string) : m_i(insert(string))
|
||||
{
|
||||
}
|
||||
~PooledString()
|
||||
{
|
||||
erase(m_i);
|
||||
}
|
||||
PooledString& operator=(const PooledString& other)
|
||||
{
|
||||
PooledString tmp(other);
|
||||
tmp.swap(*this);
|
||||
return *this;
|
||||
}
|
||||
PooledString& operator=(const char* string)
|
||||
{
|
||||
PooledString tmp(string);
|
||||
tmp.swap(*this);
|
||||
return *this;
|
||||
}
|
||||
void swap(PooledString& other)
|
||||
{
|
||||
std::swap(m_i, other.m_i);
|
||||
}
|
||||
bool operator==(const PooledString& other) const
|
||||
{
|
||||
return m_i == other.m_i;
|
||||
}
|
||||
const char* c_str() const
|
||||
{
|
||||
return (*m_i).key;
|
||||
}
|
||||
PooledString() : m_i( insert( "" ) ){
|
||||
}
|
||||
PooledString( const PooledString& other ) : m_i( increment( other.m_i ) ){
|
||||
}
|
||||
PooledString( const char* string ) : m_i( insert( string ) ){
|
||||
}
|
||||
~PooledString(){
|
||||
erase( m_i );
|
||||
}
|
||||
PooledString& operator=( const PooledString& other ){
|
||||
PooledString tmp( other );
|
||||
tmp.swap( *this );
|
||||
return *this;
|
||||
}
|
||||
PooledString& operator=( const char* string ){
|
||||
PooledString tmp( string );
|
||||
tmp.swap( *this );
|
||||
return *this;
|
||||
}
|
||||
void swap( PooledString& other ){
|
||||
std::swap( m_i, other.m_i );
|
||||
}
|
||||
bool operator==( const PooledString& other ) const {
|
||||
return m_i == other.m_i;
|
||||
}
|
||||
const char* c_str() const {
|
||||
return ( *m_i ).key;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user