aboutsummaryrefslogtreecommitdiffstats
path: root/document/src
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-10-08 09:54:10 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2020-10-08 09:54:10 +0000
commit9a44ca55274035fc9aad518c1bba424daa6c0181 (patch)
tree570da9eb7a31a5cb7a7468774fe624d27241af27 /document/src
parent3acc8a7761d2f16366fd3ad888d191e805d57abf (diff)
Let c++11 take care of proper locking
Diffstat (limited to 'document/src')
-rw-r--r--document/src/vespa/document/datatype/positiondatatype.cpp15
-rw-r--r--document/src/vespa/document/datatype/positiondatatype.h2
-rw-r--r--document/src/vespa/document/datatype/urldatatype.cpp20
-rw-r--r--document/src/vespa/document/datatype/urldatatype.h2
4 files changed, 6 insertions, 33 deletions
diff --git a/document/src/vespa/document/datatype/positiondatatype.cpp b/document/src/vespa/document/datatype/positiondatatype.cpp
index 8b323d20fb5..69e63d2ff72 100644
--- a/document/src/vespa/document/datatype/positiondatatype.cpp
+++ b/document/src/vespa/document/datatype/positiondatatype.cpp
@@ -1,19 +1,15 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "positiondatatype.h"
-#include <mutex>
namespace document {
namespace {
const vespalib::string ZCURVE("_zcurve");
-std::mutex _G_lock;
}
-StructDataType::UP PositionDataType::_instance;
-
const vespalib::string PositionDataType::STRUCT_NAME("position");
const vespalib::string PositionDataType::FIELD_X("x");
const vespalib::string PositionDataType::FIELD_Y("y");
@@ -21,7 +17,7 @@ const vespalib::string PositionDataType::FIELD_Y("y");
StructDataType::UP
PositionDataType::createInstance()
{
- StructDataType::UP type(new StructDataType(PositionDataType::STRUCT_NAME));
+ auto type = std::make_unique<StructDataType>(PositionDataType::STRUCT_NAME);
type->addField(Field(PositionDataType::FIELD_X, *DataType::INT));
type->addField(Field(PositionDataType::FIELD_Y, *DataType::INT));
return type;
@@ -30,13 +26,8 @@ PositionDataType::createInstance()
const StructDataType &
PositionDataType::getInstance()
{
- if ( ! _instance) {
- std::lock_guard guard(_G_lock);
- if ( ! _instance) {
- _instance = createInstance();
- }
- }
- return *_instance;
+ static StructDataType::UP instance = createInstance();
+ return *instance;
}
vespalib::string
diff --git a/document/src/vespa/document/datatype/positiondatatype.h b/document/src/vespa/document/datatype/positiondatatype.h
index c7cf1926159..45ac35b1388 100644
--- a/document/src/vespa/document/datatype/positiondatatype.h
+++ b/document/src/vespa/document/datatype/positiondatatype.h
@@ -7,8 +7,6 @@ namespace document {
class PositionDataType {
private:
- static StructDataType::UP _instance;
-
PositionDataType();
static StructDataType::UP createInstance();
diff --git a/document/src/vespa/document/datatype/urldatatype.cpp b/document/src/vespa/document/datatype/urldatatype.cpp
index bc8c2bee2c7..4db16f4705d 100644
--- a/document/src/vespa/document/datatype/urldatatype.cpp
+++ b/document/src/vespa/document/datatype/urldatatype.cpp
@@ -1,18 +1,9 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "urldatatype.h"
-#include <mutex>
namespace document {
-namespace {
-
-std::mutex _G_lock;
-
-}
-
-StructDataType::UP UrlDataType::_instance;
-
const vespalib::string UrlDataType::STRUCT_NAME("url");
const vespalib::string UrlDataType::FIELD_ALL("all");
const vespalib::string UrlDataType::FIELD_SCHEME("scheme");
@@ -25,7 +16,7 @@ const vespalib::string UrlDataType::FIELD_FRAGMENT("fragment");
StructDataType::UP
UrlDataType::createInstance()
{
- StructDataType::UP type(new StructDataType(UrlDataType::STRUCT_NAME));
+ auto type = std::make_unique<StructDataType>(UrlDataType::STRUCT_NAME);
type->addField(Field(UrlDataType::FIELD_ALL, *DataType::STRING));
type->addField(Field(UrlDataType::FIELD_SCHEME, *DataType::STRING));
type->addField(Field(UrlDataType::FIELD_HOST, *DataType::STRING));
@@ -39,13 +30,8 @@ UrlDataType::createInstance()
const StructDataType &
UrlDataType::getInstance()
{
- if ( ! _instance ) {
- std::lock_guard guard(_G_lock);
- if ( ! _instance ) {
- _instance = createInstance();
- }
- }
- return *_instance;
+ static StructDataType::UP instance = createInstance();
+ return *instance;
}
} // document
diff --git a/document/src/vespa/document/datatype/urldatatype.h b/document/src/vespa/document/datatype/urldatatype.h
index df28b9e56b9..19ae6dde2e1 100644
--- a/document/src/vespa/document/datatype/urldatatype.h
+++ b/document/src/vespa/document/datatype/urldatatype.h
@@ -7,8 +7,6 @@ namespace document {
class UrlDataType {
private:
- static StructDataType::UP _instance;
-
UrlDataType() { /* hide */ }
static StructDataType::UP createInstance();