blob: abe050b366d749971186ec176d71b30fdf08ae6d [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010 Nokia and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Nokia - Initial API and implementation. Feb 26, 2010
*******************************************************************************/
#ifndef PROPERTYVALUE_H_
#define PROPERTYVALUE_H_
#include <map>
#include <string>
#include "TCFOutputStream.h"
enum PropertyType {
PVT_UNKNOWN,
PVT_INT,
PVT_ULONG_INT,
PVT_BOOL,
PVT_STRING
};
class PropertyValue {
public:
PropertyValue();
PropertyValue(const PropertyValue &src);
PropertyValue(int x);
PropertyValue(unsigned long int x);
PropertyValue(bool x);
PropertyValue(const char *x);
PropertyValue(const std::string& x);
PropertyType getType();
int getIntValue();
unsigned long int getUnsignedLongIntValue();
bool getBoolValue();
const std::string& getStringValue();
void writeToTCFChannel(TCFOutputStream& tcf_stream) const;
void log() const;
private:
PropertyType type;
union {
int v_int;
unsigned long int v_ulong_int;
bool v_bool;
} v;
// "std::string" is not allowed to be in a union.
// But I still prefer std::string to char* for easier memory management.
std::string v_string;
};
typedef std::map<std::string, PropertyValue> Properties;
void logProperties(Properties& properties);
#endif /* PROPERTYVALUE_H_ */