diff --git a/alib2data/src/XmlApi.cpp b/alib2data/src/XmlApi.cpp index a57d498705d2dbd2dbcfe44817d6ffd64aea8a47..633850c5cbf810a96c241568c859fc5d61837b6a 100644 --- a/alib2data/src/XmlApi.cpp +++ b/alib2data/src/XmlApi.cpp @@ -27,6 +27,12 @@ #include "label/LabelPairLabel.h" #include "label/UniqueLabel.h" +#include "primitive/Primitive.h" +#include "primitive/Bool.h" +#include "primitive/Integer.h" +#include "primitive/String.h" +#include "primitive/Character.h" + namespace alib { const label::LabelFromXMLParser FromXMLParsers::labelParser; diff --git a/alib2data/src/object/ObjectBase.h b/alib2data/src/object/ObjectBase.h index 6aa7f24739ee5303f995054827ede6ffe5925414..0be8d812b4f558a331863b755771443e522f29b7 100644 --- a/alib2data/src/object/ObjectBase.h +++ b/alib2data/src/object/ObjectBase.h @@ -102,15 +102,7 @@ class ObjectsMap; } -namespace primitive { - -class String; -class Integer; -class Character; -class Unsigned; -class Bool; - -} +#include "../primitive/PrimitiveFeatures.h" namespace tree { diff --git a/alib2data/src/primitive/Bool.h b/alib2data/src/primitive/Bool.h index 2aa5440bb713282c1530ddb6fe5ae3b8f09af8ef..071d1d422463e0fdf4a2fbcddf76511bd0bf496d 100644 --- a/alib2data/src/primitive/Bool.h +++ b/alib2data/src/primitive/Bool.h @@ -8,8 +8,6 @@ #ifndef PRIMITIVE_BOOL_H_ #define PRIMITIVE_BOOL_H_ -#include <ostream> - #include "PrimitiveBase.h" namespace primitive { diff --git a/alib2data/src/primitive/Character.h b/alib2data/src/primitive/Character.h index 80fb729afd2336318aa34b22ddf7e259f5688a25..6a9d4d8149a85be99d630351392a62205ecfd12f 100644 --- a/alib2data/src/primitive/Character.h +++ b/alib2data/src/primitive/Character.h @@ -8,9 +8,6 @@ #ifndef PRIMITIVE_CHARACTER_H_ #define PRIMITIVE_CHARACTER_H_ -#include <string> -#include <ostream> - #include "PrimitiveBase.h" namespace primitive { diff --git a/alib2data/src/primitive/Integer.h b/alib2data/src/primitive/Integer.h index f27b08c8d70fa8ce240905437a3c86967600f6a6..a9edd8f08dd94dee7eeb0014cd68438cbf05e2fb 100644 --- a/alib2data/src/primitive/Integer.h +++ b/alib2data/src/primitive/Integer.h @@ -8,8 +8,6 @@ #ifndef PRIMITIVE_INTEGER_H_ #define PRIMITIVE_INTEGER_H_ -#include <ostream> - #include "PrimitiveBase.h" namespace primitive { diff --git a/alib2data/src/primitive/NextPrimitive.cpp b/alib2data/src/primitive/NextPrimitive.cpp index ee065e7b01eb0e6f12aa2ea6636c2a5f88a95b7b..dbaae49c6dfc04c2bd5f48a22bd4fa601612f958 100644 --- a/alib2data/src/primitive/NextPrimitive.cpp +++ b/alib2data/src/primitive/NextPrimitive.cpp @@ -6,12 +6,12 @@ */ #include "NextPrimitive.h" +#include "Primitive.h" #include "Integer.h" #include "String.h" #include "Character.h" #include "Unsigned.h" #include "Bool.h" -#include <string> namespace primitive { diff --git a/alib2data/src/primitive/NextPrimitive.h b/alib2data/src/primitive/NextPrimitive.h index aa92bda252bef6a694f213732f550f2a7dbafc88..e549dff658c0dae41e7b2c50c7cc87f621f43a80 100644 --- a/alib2data/src/primitive/NextPrimitive.h +++ b/alib2data/src/primitive/NextPrimitive.h @@ -8,9 +8,8 @@ #ifndef NEXT_PRIMITIVE_H_ #define NEXT_PRIMITIVE_H_ -#include <list> -#include "Primitive.h" -#include "../sax/Token.h" +#include "PrimitiveFeatures.h" +#include "PrimitiveBase.h" namespace primitive { diff --git a/alib2data/src/primitive/Primitive.h b/alib2data/src/primitive/Primitive.h index 4e11ba5f3d935efeac3647d59da89842f266f913..2a9752f9878c336ce77e39c936ddd77f5c584444 100644 --- a/alib2data/src/primitive/Primitive.h +++ b/alib2data/src/primitive/Primitive.h @@ -8,15 +8,26 @@ #ifndef PRIMITIVE_H_ #define PRIMITIVE_H_ -#include "../common/wrapper.hpp" #include "PrimitiveBase.h" +#include "../common/wrapper.hpp" namespace primitive { /** * Wrapper around primitive data types. */ -typedef alib::wrapper<PrimitiveBase> Primitive; +class Primitive : public alib::wrapper<PrimitiveBase> { +public: + explicit Primitive(PrimitiveBase* data) : alib::wrapper<PrimitiveBase>(data) { + } + + explicit Primitive(const PrimitiveBase& data) : alib::wrapper<PrimitiveBase>(data.clone()) { + } + + explicit Primitive(PrimitiveBase&& data) : alib::wrapper<PrimitiveBase>(std::move(data).plunder()) { + } + +}; Primitive primitiveFrom(int number); Primitive primitiveFrom(char character); diff --git a/alib2data/src/primitive/PrimitiveFeatures.h b/alib2data/src/primitive/PrimitiveFeatures.h index 2aec1a3b52f6df7002f9c5aebb3cc754577da827..3fdbc4a8d363731b4a3df43a98f584e01a878ea5 100644 --- a/alib2data/src/primitive/PrimitiveFeatures.h +++ b/alib2data/src/primitive/PrimitiveFeatures.h @@ -18,6 +18,14 @@ enum class FEATURES { BOOL }; +class Primitive; + +class String; +class Integer; +class Character; +class Unsigned; +class Bool; + } /* namespace primitive */ #endif /* PRIMITIVE_FEATURES_H_ */ diff --git a/alib2data/src/primitive/PrimitiveFromStringLexer.h b/alib2data/src/primitive/PrimitiveFromStringLexer.h index 035cbed24dfc51b6a326e1ea9f177ec3c8665354..5037551b472b88e22cfd6f88c552c106753d2c96 100644 --- a/alib2data/src/primitive/PrimitiveFromStringLexer.h +++ b/alib2data/src/primitive/PrimitiveFromStringLexer.h @@ -9,7 +9,7 @@ #define PRIMITIVE_FROM_STRING_LEXER_H_ #include <string> -#include <sstream> +#include <istream> namespace primitive { diff --git a/alib2data/src/primitive/PrimitiveFromStringParser.cpp b/alib2data/src/primitive/PrimitiveFromStringParser.cpp index 598952916778af1e94b01c25cf747a23b530da93..8e43db245cf54c9a63b23bddd52800b108802912 100644 --- a/alib2data/src/primitive/PrimitiveFromStringParser.cpp +++ b/alib2data/src/primitive/PrimitiveFromStringParser.cpp @@ -7,10 +7,10 @@ #include "PrimitiveFromStringParser.h" #include "../exception/AlibException.h" +#include "Primitive.h" #include "String.h" #include "Integer.h" #include "Character.h" -#include <algorithm> namespace primitive { diff --git a/alib2data/src/primitive/PrimitiveFromStringParser.h b/alib2data/src/primitive/PrimitiveFromStringParser.h index 117d913970d87cc507e1e2196a79a4b6774c3cb3..b04e90589cbf0bbbc7ce23be6d3430a18d7b893b 100644 --- a/alib2data/src/primitive/PrimitiveFromStringParser.h +++ b/alib2data/src/primitive/PrimitiveFromStringParser.h @@ -8,12 +8,10 @@ #ifndef PRIMITIVE_FROM_STRING_PARSER_H_ #define PRIMITIVE_FROM_STRING_PARSER_H_ -#include "Primitive.h" +#include "PrimitiveFromStringLexer.h" #include "PrimitiveFeatures.h" #include <set> -#include "PrimitiveFromStringLexer.h" - namespace alib { template<typename T> diff --git a/alib2data/src/primitive/PrimitiveFromXMLParser.cpp b/alib2data/src/primitive/PrimitiveFromXMLParser.cpp index a0e46cc877f16f7c8b3b3a4fd4f62a9ed7b9192a..68dff68c69c150e80175ce40709f9b021c5f813b 100644 --- a/alib2data/src/primitive/PrimitiveFromXMLParser.cpp +++ b/alib2data/src/primitive/PrimitiveFromXMLParser.cpp @@ -7,11 +7,15 @@ #include "PrimitiveFromXMLParser.h" #include "../sax/ParserException.h" -#include <algorithm> -#include <string> - #include "../XmlApi.hpp" +#include "Primitive.h" +#include "String.h" +#include "Integer.h" +#include "Character.h" +#include "Unsigned.h" +#include "Bool.h" + namespace primitive { Primitive PrimitiveFromXMLParser::parsePrimitive(std::deque<sax::Token>::iterator& input) const { diff --git a/alib2data/src/primitive/PrimitiveFromXMLParser.h b/alib2data/src/primitive/PrimitiveFromXMLParser.h index 6c06cca3d95c8ab7692314b74e35bc1bded14a17..1de49e8132b3bdc3e2d191f83c515d024c96be1b 100644 --- a/alib2data/src/primitive/PrimitiveFromXMLParser.h +++ b/alib2data/src/primitive/PrimitiveFromXMLParser.h @@ -10,13 +10,7 @@ #include "../sax/FromXMLParserHelper.h" #include <set> -#include "Primitive.h" #include "PrimitiveFeatures.h" -#include "String.h" -#include "Integer.h" -#include "Character.h" -#include "Unsigned.h" -#include "Bool.h" #include "../sax/Token.h" namespace alib { diff --git a/alib2data/src/primitive/PrimitiveToXMLComposer.cpp b/alib2data/src/primitive/PrimitiveToXMLComposer.cpp index 5991f919df79b25120cda89bf9ccba1f70f99797..44532e60c30c2bb4f1949fc5bd7e360b619168ce 100644 --- a/alib2data/src/primitive/PrimitiveToXMLComposer.cpp +++ b/alib2data/src/primitive/PrimitiveToXMLComposer.cpp @@ -6,12 +6,14 @@ */ #include "PrimitiveToXMLComposer.h" + +#include "../XmlApi.hpp" + +#include "Primitive.h" +#include "Bool.h" #include "Integer.h" #include "String.h" #include "Character.h" -#include <string> - -#include "../XmlApi.hpp" namespace primitive { diff --git a/alib2data/src/primitive/PrimitiveToXMLComposer.h b/alib2data/src/primitive/PrimitiveToXMLComposer.h index b7f28d8f782fae5b80c3ea4bed980801e3898486..fab4070830ad445670baf1ac000c061fab033644 100644 --- a/alib2data/src/primitive/PrimitiveToXMLComposer.h +++ b/alib2data/src/primitive/PrimitiveToXMLComposer.h @@ -9,7 +9,6 @@ #define PRIMITIVE_TO_XML_COMPOSER_H_ #include <deque> -#include <string> #include "Primitive.h" #include "../sax/Token.h" diff --git a/alib2data/src/primitive/String.h b/alib2data/src/primitive/String.h index 671134632c26e1a026d2fa24c3e677dd92c95864..f69d2e72b13d13bce49fae9e270006031e7c5665 100644 --- a/alib2data/src/primitive/String.h +++ b/alib2data/src/primitive/String.h @@ -9,8 +9,6 @@ #define PRIMITIVE_STRING_H_ #include <string> -#include <ostream> - #include "PrimitiveBase.h" namespace primitive { diff --git a/alib2data/src/primitive/Unsigned.h b/alib2data/src/primitive/Unsigned.h index 6157ccd77e87a6958fe7ae0df2ddd58a3fa2d5ca..54efd8d869ba2ce3e63c689f9514132c56543c66 100644 --- a/alib2data/src/primitive/Unsigned.h +++ b/alib2data/src/primitive/Unsigned.h @@ -8,8 +8,6 @@ #ifndef PRIMITIVE_UNSIGNED_H_ #define PRIMITIVE_UNSIGNED_H_ -#include <ostream> - #include "PrimitiveBase.h" namespace primitive {