C++ API Reference for Intel® Data Analytics Acceleration Library 2019 Update 5

sql/modifier.h
1 /* file: modifier.h */
2 /*******************************************************************************
3 * Copyright 2014-2019 Intel Corporation.
4 *
5 * This software and the related documents are Intel copyrighted materials, and
6 * your use of them is governed by the express license under which they were
7 * provided to you (License). Unless the License provides otherwise, you may not
8 * use, modify, copy, publish, distribute, disclose or transmit this software or
9 * the related documents without Intel's prior written permission.
10 *
11 * This software and the related documents are provided as is, with no express
12 * or implied warranties, other than those that are expressly stated in the
13 * License.
14 *******************************************************************************/
15 
16 #ifndef __DATA_SOURCE_MODIFIERS_SQL_MODIFIER_H__
17 #define __DATA_SOURCE_MODIFIERS_SQL_MODIFIER_H__
18 
19 #include "data_management/data_source/modifiers/modifier.h"
20 
21 namespace daal
22 {
23 namespace data_management
24 {
25 namespace modifiers
26 {
30 namespace sql
31 {
35 namespace interface1
36 {
48 class ConfigIface : public modifiers::ConfigIface { };
49 
55 class Config : public Base, public ConfigIface { };
56 
61 class ContextIface : public modifiers::ContextIface
62 {
63 public:
68  virtual size_t getNumberOfColumns() const = 0;
69 
75  virtual services::BufferView<char> getRawValue(size_t columnIndex) const = 0;
76 };
77 
83 class Context : public Base, public ContextIface
84 {
85 public:
86  template<typename T>
87  T getValue(size_t columnIndex) const
88  {
89  /* Very simple implementation of conversion between C and SQL types.
90  * There is no guarantee that returned value contains valid data if the
91  * type does not match the type of SQL column. For more information see
92  * https://docs.microsoft.com/en-us/sql/odbc/reference/appendixes/conve
93  * rting-data-from-sql-to-c-data-types */
94  const services::BufferView<char> rawValue = getRawValue(columnIndex);
95  DAAL_ASSERT( rawValue.size() == sizeof(T) );
96  return *( (const T *)(rawValue.data()) );
97  }
98 };
99 
104 class FeatureModifierIface : public modifiers::FeatureModifierIface<Config, Context> { };
105 typedef services::SharedPtr<FeatureModifierIface> FeatureModifierIfacePtr;
106 
111 class FeatureModifier : public Base, public FeatureModifierIface
112 {
113 public:
118  virtual void initialize(Config &config) DAAL_C11_OVERRIDE { }
119 
124  virtual void finalize(Config &config) DAAL_C11_OVERRIDE { }
125 };
126 typedef services::SharedPtr<FeatureModifier> FeatureModifierPtr;
127 
128 
129 /* Specifications of the Context::getValue method */
130 
131 template<>
132 services::StringView Context::getValue<services::StringView>(size_t columnIndex) const
133 {
134  const services::BufferView<char> buffer = getRawValue(columnIndex);
135  return services::StringView( buffer.data(), buffer.size() );
136 }
137 
138 template<>
139 std::string Context::getValue<std::string>(size_t columnIndex) const
140 {
141  const services::BufferView<char> buffer = getRawValue(columnIndex);
142  return std::string( buffer.data(), buffer.size() );
143 }
144 
145 template<>
146 std::vector<char> Context::getValue<std::vector<char> >(size_t columnIndex) const
147 {
148  const services::BufferView<char> buffer = getRawValue(columnIndex);
149  return std::vector<char>( buffer.data(), buffer.data() + buffer.size() );
150 }
151 
153 } // namespace interface1
154 
155 using interface1::Config;
156 using interface1::Context;
157 using interface1::FeatureModifierIface;
158 using interface1::FeatureModifierIfacePtr;
159 using interface1::FeatureModifier;
160 using interface1::FeatureModifierPtr;
161 
162 } // namespace sql
163 } // namespace modifiers
164 } // namespace data_management
165 } // namespace daal
166 
167 #endif
daal
Definition: algorithm_base_common.h:31
daal::data_management::modifiers::sql::interface1::ConfigIface
Abstract class that defines interface of modifier configuration.
Definition: sql/modifier.h:48
daal::data_management::modifiers::sql::interface1::ContextIface
Abstract class that defines interface of modifier context.
Definition: sql/modifier.h:61
daal::data_management::modifiers::sql::interface1::FeatureModifier::finalize
virtual void finalize(Config &config) DAAL_C11_OVERRIDE
Definition: sql/modifier.h:124
daal::data_management::modifiers::sql::interface1::FeatureModifierIface
Specialization of modifiers::FeatureModifierIface for SQL feature modifier.
Definition: sql/modifier.h:104
daal::data_management::modifiers::sql::interface1::ContextIface::getNumberOfColumns
virtual size_t getNumberOfColumns() const =0
daal::data_management::modifiers::sql::interface1::Config
Base class that represents modifier configuration, object of that class is passed to the modifier on ...
Definition: sql/modifier.h:55
daal::data_management::modifiers::sql::interface1::Context
Base class that represents modifier context, object of that class is passed to the modifier as an arg...
Definition: sql/modifier.h:83
daal::data_management::modifiers::sql::interface1::ContextIface::getRawValue
virtual services::BufferView< char > getRawValue(size_t columnIndex) const =0
Gets the raw buffer retrieved from SQL table.
daal::Base
Base class for Intel(R) Data Analytics Acceleration Library objects
Definition: base.h:39
daal::data_management::modifiers::sql::interface1::FeatureModifier::initialize
virtual void initialize(Config &config) DAAL_C11_OVERRIDE
Definition: sql/modifier.h:118
daal::data_management::modifiers::sql::interface1::FeatureModifier
Base class for feature modifier, intended for inheritance from the user side.
Definition: sql/modifier.h:111

For more complete information about compiler optimizations, see our Optimization Notice.