RDKit
Open-source cheminformatics and machine learning.
Toggle main menu visibility
Loading...
Searching...
No Matches
DatastructsStreamOps.h
Go to the documentation of this file.
1
// Copyright (c) 2019, Novartis Institutes for BioMedical Research Inc.
2
// All rights reserved.
3
//
4
// Redistribution and use in source and binary forms, with or without
5
// modification, are permitted provided that the following conditions are
6
// met:
7
//
8
// * Redistributions of source code must retain the above copyright
9
// notice, this list of conditions and the following disclaimer.
10
// * Redistributions in binary form must reproduce the above
11
// copyright notice, this list of conditions and the following
12
// disclaimer in the documentation and/or other materials provided
13
// with the distribution.
14
// * Neither the name of Novartis Institutes for BioMedical Research Inc.
15
// nor the names of its contributors may be used to endorse or promote
16
// products derived from this software without specific prior written
17
// permission.
18
//
19
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
//
31
#ifndef RDKIT_DATASTRUCTS_STREAMOPS
32
#define RDKIT_DATASTRUCTS_STREAMOPS
33
#include <
RDGeneral/StreamOps.h
>
34
#include <
DataStructs/ExplicitBitVect.h
>
35
#include <typeinfo>
36
#include <any>
37
38
namespace
RDKit
{
39
class
DataStructsExplicitBitVecPropHandler
:
public
CustomPropHandler
{
40
public
:
41
const
char
*
getPropName
()
const override
{
return
"ExplicitBVProp"
; }
42
bool
canSerialize
(
const
RDValue
&value)
const override
{
43
return
rdvalue_is<ExplicitBitVect>
(value);
44
}
45
46
bool
read
(std::istream &ss,
RDValue
&value)
const override
{
47
std::string v;
48
int
version = 0;
49
streamRead
(ss, v, version);
50
ExplicitBitVect
bv(v);
51
value = bv;
52
return
true
;
53
}
54
55
bool
write
(std::ostream &ss,
const
RDValue
&value)
const override
{
56
try
{
57
std::string output =
58
rdvalue_cast<const ExplicitBitVect &>
(value).toString();
59
streamWrite
(ss, output);
60
return
true
;
61
}
catch
(std::bad_any_cast &) {
62
return
false
;
63
}
64
}
65
66
CustomPropHandler
*
clone
()
const override
{
67
return
new
DataStructsExplicitBitVecPropHandler
;
68
}
69
};
70
71
}
// namespace RDKit
72
#endif
ExplicitBitVect.h
StreamOps.h
ExplicitBitVect
a class for bit vectors that are densely occupied
Definition
ExplicitBitVect.h:29
RDKit::CustomPropHandler
Definition
StreamOps.h:371
RDKit::DataStructsExplicitBitVecPropHandler
Definition
DatastructsStreamOps.h:39
RDKit::DataStructsExplicitBitVecPropHandler::getPropName
const char * getPropName() const override
Definition
DatastructsStreamOps.h:41
RDKit::DataStructsExplicitBitVecPropHandler::canSerialize
bool canSerialize(const RDValue &value) const override
Definition
DatastructsStreamOps.h:42
RDKit::DataStructsExplicitBitVecPropHandler::clone
CustomPropHandler * clone() const override
Definition
DatastructsStreamOps.h:66
RDKit::DataStructsExplicitBitVecPropHandler::read
bool read(std::istream &ss, RDValue &value) const override
Definition
DatastructsStreamOps.h:46
RDKit::DataStructsExplicitBitVecPropHandler::write
bool write(std::ostream &ss, const RDValue &value) const override
Definition
DatastructsStreamOps.h:55
RDKit
Std stuff.
Definition
Abbreviations.h:19
RDKit::rdvalue_is
bool rdvalue_is(const RDValue_cast_t)
Definition
RDValue-doublemagic.h:371
RDKit::streamRead
void streamRead(std::istream &ss, T &loc)
does a binary read of an object from a stream
Definition
StreamOps.h:286
RDKit::rdvalue_cast
T rdvalue_cast(RDValue_cast_t v)
Definition
RDValue-doublemagic.h:419
RDKit::streamWrite
void streamWrite(std::ostream &ss, const T &val)
does a binary write of an object to a stream
Definition
StreamOps.h:264
RDKit::RDValue
Definition
RDValue-doublemagic.h:165
DataStructs
DatastructsStreamOps.h
Generated on
for RDKit by
1.17.0