1
0
mirror of https://github.com/stefanocasazza/ULib.git synced 2025-09-28 19:05:55 +08:00
ULib/examples/http_header/include/HttpField.h
stefanocasazza 1e58dc49d0 fix+sync
2018-04-27 19:27:14 +02:00

97 lines
2.0 KiB
C++

// HttpField.h
#ifndef HTTP_FIELD_H
#define HTTP_FIELD_H 1
#include <ulib/internal/portable.h>
#include <ctype.h>
class HttpField {
public:
//// Check for memory error
U_MEMORY_TEST
/// = Allocator e Deallocator.
U_MEMORY_ALLOCATOR
U_MEMORY_DEALLOCATOR
UString name, value;
HttpField()
{
U_TRACE_CTOR(5, HttpField, "")
}
HttpField(const char* name_, unsigned name_len, const char* value_, unsigned value_len)
: name(name_, name_len), value(value_, value_len)
{
U_TRACE_CTOR(5, HttpField, "%.*S,%u,%.*S,%u", name_len, name_, name_len, value_len, value_, value_len)
}
/**
* @param name_ String containing the name for field
*/
HttpField(const UString& name_) : name(name_)
{
U_TRACE_CTOR(5, HttpField, "%.*S", U_STRING_TO_TRACE(name_))
}
/**
* @param name_ String containing the name for field
* @param value_ String containing the value for field
*/
HttpField(const UString& name_, const UString& value_) : name(name_), value(value_)
{
U_TRACE_CTOR(5, HttpField, "%.*S,%.*S", U_STRING_TO_TRACE(name_), U_STRING_TO_TRACE(value_))
}
/** Destructor of the class.
*/
virtual ~HttpField()
{
U_TRACE_DTOR(0, HttpField)
}
/// ASSEGNAZIONI
HttpField(const HttpField& f) : name(f.name), value(f.value)
{
U_MEMORY_TEST_COPY(f)
}
HttpField& operator=(const HttpField& f)
{
U_MEMORY_TEST_COPY(f)
name = f.name;
value = f.value;
return *this;
}
/**
* @param field_ String where to save header as string
*/
virtual void stringify(UString& field);
static void trim(const char*& ptr, unsigned& len)
{
U_TRACE(5, "HttpField::trim(%.*S,%u)", len, ptr, len)
while (isspace(*ptr))
{
++ptr;
--len;
}
}
/// DEBUG
#if defined(U_STDCPP_ENABLE) && defined(DEBUG)
const char* dump(bool reset) const;
#endif
};
#endif