cconfigoption.h Source File

API: cconfigoption.h Source File
API
cconfigoption.h
1//==========================================================================
2// CCONFIGOPTION.H - part of
3// OMNeT++/OMNEST
4// Discrete System Simulation in C++
5//
6//==========================================================================
7
8/*--------------------------------------------------------------*
9 Copyright (C) 1992-2017 Andras Varga
10 Copyright (C) 2006-2017 OpenSim Ltd.
11
12 This file is distributed WITHOUT ANY WARRANTY. See the file
13 `license' for details on this and other legal matters.
14*--------------------------------------------------------------*/
15
16#ifndef __OMNETPP_CCONFIGOPTION_H
17#define __OMNETPP_CCONFIGOPTION_H
18
19#include <string>
20#include "cownedobject.h"
21
22namespace omnetpp {
23
33class SIM_API cConfigOption : public cNoncopyableOwnedObject
34{
35 public:
37 enum Type {
38 CFG_BOOL,
39 CFG_INT,
40 CFG_DOUBLE,
41 CFG_STRING,
42 CFG_FILENAME,
43 CFG_FILENAMES,
44 CFG_PATH,
45 CFG_CUSTOM
46 };
47
50 KIND_NONE,
51 KIND_COMPONENT,
52 KIND_CHANNEL,
53 KIND_MODULE,
54 KIND_SIMPLE_MODULE,
55 KIND_UNSPECIFIED_TYPE, // for 'typename' option (object is submodule/channel declared with 'like')
56 KIND_PARAMETER,
57 KIND_STATISTIC,
58 KIND_SCALAR,
59 KIND_VECTOR,
60 KIND_OTHER
61 };
62
63 // note: option name (e.g. "sim-time-limit") is stored in object's name field
64 bool isPerObject_; // if true, entries must be in <object-full-path>.config-name format
65 bool isGlobal_; // if true, entries may only occur in the [General] section
66 ObjectKind objectKind; // kind of the object if isPerObject is true, KIND_NONE otherwise
67 Type type; // option data type
68 std::string unit; // if numeric, its unit ("s") or empty string
69 std::string defaultValue; // the default value in string form
70 std::string description; // help text
71
72 public:
75
78 cConfigOption(const char *name, bool isGlobal, Type type, const char *unit,
79 const char *defaultValue, const char *description);
80
84 cConfigOption(const char *name, ObjectKind kind, Type type, const char *unit,
85 const char *defaultValue, const char *description);
87
90 virtual std::string str() const override;
92
95
101 bool isPerObject() const {return isPerObject_;}
102
107 bool isGlobal() const {return isGlobal_;}
108
113 ObjectKind getObjectKind() const {return objectKind;}
114
118 static const char *getObjectKindName(ObjectKind kind);
119
123 Type getType() const {return type;}
124
128 static const char *getTypeName(Type type);
129
134 const char *getUnit() const {return unit.empty() ? nullptr : unit.c_str();}
135
139 const char *getDefaultValue() const {return defaultValue.empty() ? nullptr : defaultValue.c_str();}
140
145 const char *getDescription() const {return description.c_str();}
147
150
153 static cConfigOption *find(const char *name);
154
158 static cConfigOption *get(const char *name);
160};
161
162} // namespace omnetpp
163
164
165#endif
166
167
bool isGlobal() const
Definition cconfigoption.h:107
Type
Configuration option data types.
Definition cconfigoption.h:37
const char * getUnit() const
Definition cconfigoption.h:134
static cConfigOption * find(const char *name)
bool isPerObject() const
Definition cconfigoption.h:101
const char * getDefaultValue() const
Definition cconfigoption.h:139
static cConfigOption * get(const char *name)
ObjectKind getObjectKind() const
Definition cconfigoption.h:113
cConfigOption(const char *name, ObjectKind kind, Type type, const char *unit, const char *defaultValue, const char *description)
Type getType() const
Definition cconfigoption.h:123
const char * getDescription() const
Definition cconfigoption.h:145
static const char * getObjectKindName(ObjectKind kind)
cConfigOption(const char *name, bool isGlobal, Type type, const char *unit, const char *defaultValue, const char *description)
ObjectKind
Configuration option kinds.
Definition cconfigoption.h:49
virtual std::string str() const override
static const char * getTypeName(Type type)