Ejemplo n.º 1
0
EString _EString_add(EString _str0, const char* _str1, const char* _file_name, euint32 _file_line)
{
    /**
    estring* estr = (estring*)((ref_ptr)_str0 - (ref_ptr)sizeof(estring));
    euint32 length = strlen(_str1);
    estring* ret = _Malloc(sizeof(estring) + estr->length + length + 1, _file_name, _file_line);
    memcpy(&ret->str[0], &estr->str[0], estr->length);
    memcpy((vptr)((ref_ptr)&ret->str[0] + (ref_ptr)estr->length), _str1, length + 1);
    ret->length = estr->length + length;
    ret->hash = calc_hashnr(&ret->str[0], ret->length);
    return &ret->str[0];
    **/
    estring* estr = _get_estring(_str0);
    euint32 length = (euint32)strlen(_str1);
    estring* ret = (estring*)_Malloc(sizeof(estring) + estr->length + length + 1, _file_name, (euint32)_file_line);

    char* dest = &ret->str[0];
    memcpy(dest, _str0, estr->length); dest += estr->length;
    memcpy(dest, _str1, length + 1);

    ret->length = estr->length + length;
    ret->hash = calc_hashnr(&ret->str[0], ret->length);

    return &ret->str[0];
}
Ejemplo n.º 2
0
 euint32 hash_value() const
 {
     int count = 0;
     while (m_str[count]) {
         count++;
     }
     return calc_hashnr ( (const char*)m_str, count * sizeof(*m_str) );
 }
Ejemplo n.º 3
0
EString _EString_new(const char* _str, const char* _file_name, euint32 _file_line)
{
    euint32 length = _string_length(_str);
    estring* ret = (estring*)_Malloc(sizeof(estring) + length + 1, _file_name, (euint32)_file_line);

    ret->length = length;
    memcpy(&ret->str[0], _str, length + 1);
    ret->hash = calc_hashnr(&ret->str[0], length);
    return &ret->str[0];
}
Ejemplo n.º 4
0
    static_string ( const char *str ) {
		euint32 hash_value = calc_hashnr ( str, _strlen ( str ) );
		xhn::hash_set<string>::bucket& b = s_static_string_set.get_bucket(hash_value);
		{
			SpinLock::Instance inst = b.m_lock.Lock();
			xhn::list<xhn::string>::iterator iter = b.begin();
			xhn::list<xhn::string>::iterator end = b.begin();
			for (; iter != end; iter++) {
				if (*iter == str) {
					m_str = (*iter).c_str();
					return;
				}
			}
		}
		string value ( str );
		const string &v = s_static_string_set.insert ( value );
		m_str = v.c_str();
    }
Ejemplo n.º 5
0
    static_string ( const char *str ) {
        if (!s_static_string_set) {
            s_static_string_set = VNEW hash_set<string>;
        }

		euint32 hash_value = calc_hashnr ( str, strlen ( str ) );
		xhn::hash_set<string>::bucket& b = s_static_string_set->get_bucket(hash_value);
		{
			SpinLock::Instance inst = b.m_lock.Lock();
			xhn::list<xhn::string>::iterator iter = b.begin();
			xhn::list<xhn::string>::iterator end = b.end();
			for (; iter != end; iter++) {
				if (strcmp(iter->c_str(),str) == 0) {
					m_str = iter->c_str();
					return;
				}
			}
		}

		string value ( str );
		const string &v = s_static_string_set->insert ( value );
		m_str = v.c_str();
    }
Ejemplo n.º 6
0
		euint32 operator() (const T& v) {
			return calc_hashnr ( (const char*)v, sizeof(T) );
		}