Coverage Report

Created: 2026-06-30 11:14

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libreoffice/chart2/source/tools/RegressionCurveModel.cxx
Line
Count
Source
1
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
/*
3
 * This file is part of the LibreOffice project.
4
 *
5
 * This Source Code Form is subject to the terms of the Mozilla Public
6
 * License, v. 2.0. If a copy of the MPL was not distributed with this
7
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8
 *
9
 * This file incorporates work covered by the following license notice:
10
 *
11
 *   Licensed to the Apache Software Foundation (ASF) under one or more
12
 *   contributor license agreements. See the NOTICE file distributed
13
 *   with this work for additional information regarding copyright
14
 *   ownership. The ASF licenses this file to you under the Apache
15
 *   License, Version 2.0 (the "License"); you may not use this file
16
 *   except in compliance with the License. You may obtain a copy of
17
 *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
18
 */
19
20
#include <RegressionCurveModel.hxx>
21
#include <LinePropertiesHelper.hxx>
22
#include <RegressionCurveCalculator.hxx>
23
#include <RegressionCurveHelper.hxx>
24
#include "RegressionEquation.hxx"
25
#include <CloneHelper.hxx>
26
#include <PropertyHelper.hxx>
27
#include <ModifyListenerHelper.hxx>
28
#include <cppuhelper/supportsservice.hxx>
29
#include <com/sun/star/beans/PropertyAttribute.hpp>
30
31
namespace com::sun::star::uno { class XComponentContext; }
32
33
using namespace ::com::sun::star;
34
35
using ::com::sun::star::beans::Property;
36
37
namespace
38
{
39
enum
40
{
41
    PROPERTY_DEGREE,
42
    PROPERTY_PERIOD,
43
    PROPERTY_EXTRAPOLATE_FORWARD,
44
    PROPERTY_EXTRAPOLATE_BACKWARD,
45
    PROPERTY_FORCE_INTERCEPT,
46
    PROPERTY_INTERCEPT_VALUE,
47
    PROPERTY_CURVE_NAME,
48
    PROPERTY_MOVING_AVERAGE_TYPE
49
};
50
51
void lcl_AddPropertiesToVector(
52
    std::vector< Property > & rOutProperties )
53
0
{
54
0
    rOutProperties.emplace_back( "PolynomialDegree",
55
0
                PROPERTY_DEGREE,
56
0
                cppu::UnoType<sal_Int32>::get(),
57
0
                beans::PropertyAttribute::BOUND |
58
0
                beans::PropertyAttribute::MAYBEDEFAULT );
59
60
0
    rOutProperties.emplace_back( "MovingAveragePeriod",
61
0
                PROPERTY_PERIOD,
62
0
                cppu::UnoType<sal_Int32>::get(),
63
0
                beans::PropertyAttribute::BOUND |
64
0
                beans::PropertyAttribute::MAYBEDEFAULT );
65
66
0
    rOutProperties.emplace_back( "MovingAverageType",
67
0
                PROPERTY_MOVING_AVERAGE_TYPE,
68
0
                cppu::UnoType<sal_Int32>::get(),
69
0
                beans::PropertyAttribute::BOUND |
70
0
                beans::PropertyAttribute::MAYBEDEFAULT );
71
72
0
    rOutProperties.emplace_back( "ExtrapolateForward",
73
0
                PROPERTY_EXTRAPOLATE_FORWARD,
74
0
                cppu::UnoType<double>::get(),
75
0
                beans::PropertyAttribute::BOUND |
76
0
                beans::PropertyAttribute::MAYBEDEFAULT );
77
78
0
    rOutProperties.emplace_back( "ExtrapolateBackward",
79
0
                PROPERTY_EXTRAPOLATE_BACKWARD,
80
0
                cppu::UnoType<double>::get(),
81
0
                beans::PropertyAttribute::BOUND |
82
0
                beans::PropertyAttribute::MAYBEDEFAULT );
83
84
0
    rOutProperties.emplace_back( "ForceIntercept",
85
0
                  PROPERTY_FORCE_INTERCEPT,
86
0
                  cppu::UnoType<bool>::get(),
87
0
                  beans::PropertyAttribute::BOUND
88
0
                  | beans::PropertyAttribute::MAYBEDEFAULT );
89
90
0
    rOutProperties.emplace_back( "InterceptValue",
91
0
                PROPERTY_INTERCEPT_VALUE,
92
0
                cppu::UnoType<double>::get(),
93
0
                beans::PropertyAttribute::BOUND |
94
0
                beans::PropertyAttribute::MAYBEDEFAULT );
95
96
0
    rOutProperties.emplace_back( "CurveName",
97
0
                PROPERTY_CURVE_NAME,
98
0
                cppu::UnoType<OUString>::get(),
99
0
                beans::PropertyAttribute::BOUND );
100
0
}
101
102
const ::chart::tPropertyValueMap & GetStaticXXXDefaults()
103
0
{
104
0
    static ::chart::tPropertyValueMap aStaticDefaults =
105
0
        [](){
106
0
            ::chart::tPropertyValueMap aTmp;
107
0
            ::chart::LinePropertiesHelper::AddDefaultsToMap( aTmp );
108
0
            return aTmp;
109
0
        }();
110
0
    return aStaticDefaults;
111
0
};
112
113
::cppu::OPropertyArrayHelper& GetStaticRegressionCurveInfoHelper()
114
0
{
115
0
    static ::cppu::OPropertyArrayHelper aPropHelper =
116
0
    [](){
117
0
        std::vector< css::beans::Property > aProperties;
118
0
        lcl_AddPropertiesToVector( aProperties );
119
0
        ::chart::LinePropertiesHelper::AddPropertiesToVector( aProperties );
120
121
0
        std::sort( aProperties.begin(), aProperties.end(),
122
0
                     ::chart::PropertyNameLess() );
123
124
0
        return comphelper::containerToSequence( aProperties );
125
0
    }();
126
0
    return aPropHelper;
127
0
};
128
129
uno::Reference< beans::XPropertySetInfo >& GetStaticRegressionCurveInfo()
130
0
{
131
0
    static uno::Reference< beans::XPropertySetInfo > xPropertySetInfo(
132
0
         ::cppu::OPropertySetHelper::createPropertySetInfo(GetStaticRegressionCurveInfoHelper() ) );
133
0
    return xPropertySetInfo;
134
0
};
135
136
} // anonymous namespace
137
138
namespace chart
139
{
140
141
RegressionCurveModel::RegressionCurveModel( tCurveType eCurveType ) :
142
0
    m_eRegressionCurveType( eCurveType ),
143
0
    m_xModifyEventForwarder( new ModifyEventForwarder() ),
144
0
    m_xEquationProperties( new RegressionEquation )
145
0
{
146
    // set 0 line width (default) hard, so that it is always written to XML,
147
    // because the old implementation uses different defaults
148
0
    setFastPropertyValue_NoBroadcast(
149
0
        LinePropertiesHelper::PROP_LINE_WIDTH, uno::Any( sal_Int32( 0 )));
150
0
    ModifyListenerHelper::addListener( m_xEquationProperties, m_xModifyEventForwarder );
151
0
}
152
153
RegressionCurveModel::RegressionCurveModel( const RegressionCurveModel & rOther ) :
154
0
    impl::RegressionCurveModel_Base(rOther),
155
0
    ::property::OPropertySet( rOther ),
156
0
    m_eRegressionCurveType( rOther.m_eRegressionCurveType ),
157
0
    m_xModifyEventForwarder( new ModifyEventForwarder() )
158
0
{
159
0
    m_xEquationProperties.set( CloneHelper::CreateRefClone< beans::XPropertySet >()( rOther.m_xEquationProperties ));
160
0
    ModifyListenerHelper::addListener( m_xEquationProperties, m_xModifyEventForwarder );
161
0
}
162
163
RegressionCurveModel::~RegressionCurveModel()
164
0
{}
165
166
// ____ XRegressionCurve ____
167
uno::Reference< chart2::XRegressionCurveCalculator > SAL_CALL
168
    RegressionCurveModel::getCalculator()
169
0
{
170
0
    return RegressionCurveHelper::createRegressionCurveCalculatorByServiceName( getServiceName());
171
0
}
172
173
rtl::Reference< RegressionCurveCalculator >
174
    RegressionCurveModel::getCurveCalculator()
175
0
{
176
0
    return RegressionCurveHelper::createRegressionCurveCalculatorByServiceName( getServiceName());
177
0
}
178
179
uno::Reference< beans::XPropertySet > SAL_CALL RegressionCurveModel::getEquationProperties()
180
0
{
181
0
    return m_xEquationProperties;
182
0
}
183
184
void SAL_CALL RegressionCurveModel::setEquationProperties( const uno::Reference< beans::XPropertySet >& xEquationProperties )
185
0
{
186
0
    if( xEquationProperties.is())
187
0
    {
188
0
        if( m_xEquationProperties.is())
189
0
            ModifyListenerHelper::removeListener( m_xEquationProperties, m_xModifyEventForwarder );
190
191
0
        m_xEquationProperties.set( xEquationProperties );
192
0
        setPropertyMayHaveR2();
193
0
        ModifyListenerHelper::addListener( m_xEquationProperties, m_xModifyEventForwarder );
194
0
        fireModifyEvent();
195
0
    }
196
0
}
197
198
void RegressionCurveModel::setPropertyMayHaveR2()
199
0
{
200
0
    if( m_xEquationProperties.is()) {
201
0
        bool bMayHaveR2 = m_eRegressionCurveType != CURVE_TYPE_MOVING_AVERAGE;
202
0
        m_xEquationProperties->setPropertyValue( u"MayHaveCorrelationCoefficient"_ustr, uno::Any( bMayHaveR2 ) );
203
0
    }
204
0
}
205
206
// ____ XServiceName ____
207
OUString SAL_CALL RegressionCurveModel::getServiceName()
208
0
{
209
0
    switch( m_eRegressionCurveType )
210
0
    {
211
0
        case CURVE_TYPE_MEAN_VALUE:
212
0
            return u"com.sun.star.chart2.MeanValueRegressionCurve"_ustr;
213
0
        case CURVE_TYPE_LINEAR:
214
0
            return u"com.sun.star.chart2.LinearRegressionCurve"_ustr;
215
0
        case CURVE_TYPE_LOGARITHM:
216
0
            return u"com.sun.star.chart2.LogarithmicRegressionCurve"_ustr;
217
0
        case CURVE_TYPE_EXPONENTIAL:
218
0
            return u"com.sun.star.chart2.ExponentialRegressionCurve"_ustr;
219
0
        case CURVE_TYPE_POWER:
220
0
            return u"com.sun.star.chart2.PotentialRegressionCurve"_ustr;
221
0
        case CURVE_TYPE_POLYNOMIAL:
222
0
            return u"com.sun.star.chart2.PolynomialRegressionCurve"_ustr;
223
0
        case CURVE_TYPE_MOVING_AVERAGE:
224
0
            return u"com.sun.star.chart2.MovingAverageRegressionCurve"_ustr;
225
0
    }
226
227
0
    return OUString();
228
0
}
229
230
// ____ XModifyBroadcaster ____
231
void SAL_CALL RegressionCurveModel::addModifyListener( const uno::Reference< util::XModifyListener >& aListener )
232
0
{
233
0
    m_xModifyEventForwarder->addModifyListener( aListener );
234
0
}
235
236
void SAL_CALL RegressionCurveModel::removeModifyListener( const uno::Reference< util::XModifyListener >& aListener )
237
0
{
238
0
    m_xModifyEventForwarder->removeModifyListener( aListener );
239
0
}
240
241
// ____ XModifyListener ____
242
void SAL_CALL RegressionCurveModel::modified( const lang::EventObject& aEvent )
243
0
{
244
0
    m_xModifyEventForwarder->modified( aEvent );
245
0
}
246
247
// ____ XEventListener (base of XModifyListener) ____
248
void SAL_CALL RegressionCurveModel::disposing( const lang::EventObject& /* Source */ )
249
0
{
250
    // nothing
251
0
}
252
253
// ____ OPropertySet ____
254
void RegressionCurveModel::firePropertyChangeEvent()
255
0
{
256
0
    setPropertyMayHaveR2();
257
0
    fireModifyEvent();
258
0
}
259
260
void RegressionCurveModel::fireModifyEvent()
261
0
{
262
0
    m_xModifyEventForwarder->modified( lang::EventObject( static_cast< uno::XWeak* >( this )));
263
0
}
264
265
// ____ OPropertySet ____
266
void RegressionCurveModel::GetDefaultValue( sal_Int32 nHandle, uno::Any& rAny ) const
267
0
{
268
0
    const tPropertyValueMap& rStaticDefaults = GetStaticXXXDefaults();
269
0
    tPropertyValueMap::const_iterator aFound( rStaticDefaults.find( nHandle ) );
270
0
    if( aFound == rStaticDefaults.end() )
271
0
        rAny.clear();
272
0
    else
273
0
        rAny = (*aFound).second;
274
0
}
275
276
::cppu::IPropertyArrayHelper & SAL_CALL RegressionCurveModel::getInfoHelper()
277
0
{
278
0
    return GetStaticRegressionCurveInfoHelper();
279
0
}
280
281
// ____ XPropertySet ____
282
uno::Reference< beans::XPropertySetInfo > SAL_CALL RegressionCurveModel::getPropertySetInfo()
283
0
{
284
0
    return GetStaticRegressionCurveInfo();
285
0
}
286
287
// needed by MSC compiler
288
using impl::RegressionCurveModel_Base;
289
290
IMPLEMENT_FORWARD_XINTERFACE2( RegressionCurveModel, RegressionCurveModel_Base, OPropertySet )
291
IMPLEMENT_FORWARD_XTYPEPROVIDER2( RegressionCurveModel, RegressionCurveModel_Base, OPropertySet )
292
293
// implementations
294
295
MeanValueRegressionCurve::MeanValueRegressionCurve()
296
0
        : RegressionCurveModel( RegressionCurveModel::CURVE_TYPE_MEAN_VALUE )
297
0
{}
298
MeanValueRegressionCurve::MeanValueRegressionCurve(
299
    const MeanValueRegressionCurve & rOther ) :
300
0
        RegressionCurveModel( rOther )
301
0
{}
302
MeanValueRegressionCurve::~MeanValueRegressionCurve()
303
{}
304
305
OUString SAL_CALL MeanValueRegressionCurve::getImplementationName()
306
0
{
307
0
    return u"com.sun.star.comp.chart2.MeanValueRegressionCurve"_ustr;
308
0
}
309
310
sal_Bool SAL_CALL MeanValueRegressionCurve::supportsService( const OUString& rServiceName )
311
0
{
312
0
    return cppu::supportsService(this, rServiceName);
313
0
}
314
315
css::uno::Sequence< OUString > SAL_CALL MeanValueRegressionCurve::getSupportedServiceNames()
316
0
{
317
0
    return { u"com.sun.star.chart2.RegressionCurve"_ustr, u"com.sun.star.chart2.MeanValueRegressionCurve"_ustr };
318
0
}
319
320
uno::Reference< util::XCloneable > SAL_CALL MeanValueRegressionCurve::createClone()
321
0
{
322
0
    return uno::Reference< util::XCloneable >( new MeanValueRegressionCurve( *this ));
323
0
}
324
325
LinearRegressionCurve::LinearRegressionCurve()
326
0
        : RegressionCurveModel( RegressionCurveModel::CURVE_TYPE_LINEAR )
327
0
{}
328
LinearRegressionCurve::LinearRegressionCurve(
329
    const LinearRegressionCurve & rOther ) :
330
0
        RegressionCurveModel( rOther )
331
0
{}
332
LinearRegressionCurve::~LinearRegressionCurve()
333
{}
334
335
OUString SAL_CALL LinearRegressionCurve::getImplementationName()
336
0
{
337
0
    return u"com.sun.star.comp.chart2.LinearRegressionCurve"_ustr;
338
0
}
339
340
sal_Bool SAL_CALL LinearRegressionCurve::supportsService( const OUString& rServiceName )
341
0
{
342
0
    return cppu::supportsService(this, rServiceName);
343
0
}
344
345
css::uno::Sequence< OUString > SAL_CALL LinearRegressionCurve::getSupportedServiceNames()
346
0
{
347
0
    return { u"com.sun.star.chart2.RegressionCurve"_ustr, u"com.sun.star.chart2.LinearRegressionCurve"_ustr };
348
0
}
349
350
uno::Reference< util::XCloneable > SAL_CALL LinearRegressionCurve::createClone()
351
0
{
352
0
    return uno::Reference< util::XCloneable >( new LinearRegressionCurve( *this ));
353
0
}
354
355
LogarithmicRegressionCurve::LogarithmicRegressionCurve()
356
0
        : RegressionCurveModel( RegressionCurveModel::CURVE_TYPE_LOGARITHM )
357
0
{}
358
LogarithmicRegressionCurve::LogarithmicRegressionCurve(
359
    const LogarithmicRegressionCurve & rOther ) :
360
0
        RegressionCurveModel( rOther )
361
0
{}
362
LogarithmicRegressionCurve::~LogarithmicRegressionCurve()
363
{}
364
365
OUString SAL_CALL LogarithmicRegressionCurve::getImplementationName()
366
0
{
367
0
    return u"com.sun.star.comp.chart2.LogarithmicRegressionCurve"_ustr;
368
0
}
369
370
sal_Bool SAL_CALL LogarithmicRegressionCurve::supportsService( const OUString& rServiceName )
371
0
{
372
0
    return cppu::supportsService(this, rServiceName);
373
0
}
374
375
css::uno::Sequence< OUString > SAL_CALL LogarithmicRegressionCurve::getSupportedServiceNames()
376
0
{
377
0
    return { u"com.sun.star.chart2.RegressionCurve"_ustr, u"com.sun.star.chart2.LogarithmicRegressionCurve"_ustr };
378
0
}
379
380
uno::Reference< util::XCloneable > SAL_CALL LogarithmicRegressionCurve::createClone()
381
0
{
382
0
    return uno::Reference< util::XCloneable >( new LogarithmicRegressionCurve( *this ));
383
0
}
384
385
ExponentialRegressionCurve::ExponentialRegressionCurve()
386
0
        : RegressionCurveModel( RegressionCurveModel::CURVE_TYPE_EXPONENTIAL )
387
0
{}
388
ExponentialRegressionCurve::ExponentialRegressionCurve(
389
    const ExponentialRegressionCurve & rOther ) :
390
0
        RegressionCurveModel( rOther )
391
0
{}
392
ExponentialRegressionCurve::~ExponentialRegressionCurve()
393
{}
394
395
OUString SAL_CALL ExponentialRegressionCurve::getImplementationName()
396
0
{
397
0
    return u"com.sun.star.comp.chart2.ExponentialRegressionCurve"_ustr;
398
0
}
399
400
sal_Bool SAL_CALL ExponentialRegressionCurve::supportsService( const OUString& rServiceName )
401
0
{
402
0
    return cppu::supportsService(this, rServiceName);
403
0
}
404
405
css::uno::Sequence< OUString > SAL_CALL ExponentialRegressionCurve::getSupportedServiceNames()
406
0
{
407
0
    return { u"com.sun.star.chart2.RegressionCurve"_ustr, u"com.sun.star.chart2.ExponentialRegressionCurve"_ustr };
408
0
}
409
410
uno::Reference< util::XCloneable > SAL_CALL ExponentialRegressionCurve::createClone()
411
0
{
412
0
    return uno::Reference< util::XCloneable >( new ExponentialRegressionCurve( *this ));
413
0
}
414
415
PotentialRegressionCurve::PotentialRegressionCurve()
416
0
        : RegressionCurveModel( RegressionCurveModel::CURVE_TYPE_POWER )
417
0
{}
418
PotentialRegressionCurve::PotentialRegressionCurve(
419
    const PotentialRegressionCurve & rOther ) :
420
0
        RegressionCurveModel( rOther )
421
0
{}
422
PotentialRegressionCurve::~PotentialRegressionCurve()
423
{}
424
425
OUString SAL_CALL PotentialRegressionCurve::getImplementationName()
426
0
{
427
0
    return u"com.sun.star.comp.chart2.PotentialRegressionCurve"_ustr;
428
0
}
429
430
sal_Bool SAL_CALL PotentialRegressionCurve::supportsService( const OUString& rServiceName )
431
0
{
432
0
    return cppu::supportsService(this, rServiceName);
433
0
}
434
435
css::uno::Sequence< OUString > SAL_CALL PotentialRegressionCurve::getSupportedServiceNames()
436
0
{
437
0
    return { u"com.sun.star.chart2.RegressionCurve"_ustr, u"com.sun.star.chart2.PotentialRegressionCurve"_ustr };
438
0
}
439
440
uno::Reference< util::XCloneable > SAL_CALL PotentialRegressionCurve::createClone()
441
0
{
442
0
    return uno::Reference< util::XCloneable >( new PotentialRegressionCurve( *this ));
443
0
}
444
445
PolynomialRegressionCurve::PolynomialRegressionCurve()
446
0
        : RegressionCurveModel( RegressionCurveModel::CURVE_TYPE_POLYNOMIAL )
447
0
{}
448
PolynomialRegressionCurve::PolynomialRegressionCurve(
449
    const PolynomialRegressionCurve & rOther ) :
450
0
        RegressionCurveModel( rOther )
451
0
{}
452
PolynomialRegressionCurve::~PolynomialRegressionCurve()
453
{}
454
455
OUString SAL_CALL PolynomialRegressionCurve::getImplementationName()
456
0
{
457
0
    return u"com.sun.star.comp.chart2.PolynomialRegressionCurve"_ustr;
458
0
}
459
460
sal_Bool SAL_CALL PolynomialRegressionCurve::supportsService( const OUString& rServiceName )
461
0
{
462
0
    return cppu::supportsService(this, rServiceName);
463
0
}
464
465
css::uno::Sequence< OUString > SAL_CALL PolynomialRegressionCurve::getSupportedServiceNames()
466
0
{
467
0
    return { u"com.sun.star.chart2.RegressionCurve"_ustr, u"com.sun.star.chart2.PolynomialRegressionCurve"_ustr };
468
0
}
469
470
uno::Reference< util::XCloneable > SAL_CALL PolynomialRegressionCurve::createClone()
471
0
{
472
0
    return uno::Reference< util::XCloneable >( new PolynomialRegressionCurve( *this ));
473
0
}
474
475
MovingAverageRegressionCurve::MovingAverageRegressionCurve()
476
0
        : RegressionCurveModel( RegressionCurveModel::CURVE_TYPE_MOVING_AVERAGE )
477
0
{}
478
MovingAverageRegressionCurve::MovingAverageRegressionCurve(
479
    const MovingAverageRegressionCurve & rOther ) :
480
0
        RegressionCurveModel( rOther )
481
0
{}
482
MovingAverageRegressionCurve::~MovingAverageRegressionCurve()
483
{}
484
485
OUString SAL_CALL MovingAverageRegressionCurve::getImplementationName()
486
0
{
487
0
    return u"com.sun.star.comp.chart2.MovingAverageRegressionCurve"_ustr;
488
0
}
489
490
sal_Bool SAL_CALL MovingAverageRegressionCurve::supportsService( const OUString& rServiceName )
491
0
{
492
0
    return cppu::supportsService(this, rServiceName);
493
0
}
494
495
css::uno::Sequence< OUString > SAL_CALL MovingAverageRegressionCurve::getSupportedServiceNames()
496
0
{
497
0
    return { u"com.sun.star.chart2.RegressionCurve"_ustr, u"com.sun.star.chart2.MovingAverageRegressionCurve"_ustr };
498
0
}
499
500
uno::Reference< util::XCloneable > SAL_CALL MovingAverageRegressionCurve::createClone()
501
0
{
502
0
    return uno::Reference< util::XCloneable >( new MovingAverageRegressionCurve( *this ));
503
0
}
504
505
} //  namespace chart
506
507
extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface *
508
com_sun_star_comp_chart2_ExponentialRegressionCurve_get_implementation(css::uno::XComponentContext *,
509
        css::uno::Sequence<css::uno::Any> const &)
510
0
{
511
0
    return cppu::acquire(new ::chart::ExponentialRegressionCurve );
512
0
}
513
514
extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface *
515
com_sun_star_comp_chart2_LinearRegressionCurve_get_implementation(css::uno::XComponentContext *,
516
        css::uno::Sequence<css::uno::Any> const &)
517
0
{
518
0
    return cppu::acquire(new ::chart::LinearRegressionCurve );
519
0
}
520
521
extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface *
522
com_sun_star_comp_chart2_LogarithmicRegressionCurve_get_implementation(css::uno::XComponentContext *,
523
        css::uno::Sequence<css::uno::Any> const &)
524
0
{
525
0
    return cppu::acquire(new ::chart::LogarithmicRegressionCurve );
526
0
}
527
528
extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface *
529
com_sun_star_comp_chart2_MeanValueRegressionCurve_get_implementation(css::uno::XComponentContext *,
530
        css::uno::Sequence<css::uno::Any> const &)
531
0
{
532
0
    return cppu::acquire(new ::chart::MeanValueRegressionCurve );
533
0
}
534
535
extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface *
536
com_sun_star_comp_chart2_PotentialRegressionCurve_get_implementation(css::uno::XComponentContext *,
537
        css::uno::Sequence<css::uno::Any> const &)
538
0
{
539
0
    return cppu::acquire(new ::chart::PotentialRegressionCurve );
540
0
}
541
542
extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface *
543
com_sun_star_comp_chart2_PolynomialRegressionCurve_get_implementation(css::uno::XComponentContext *,
544
        css::uno::Sequence<css::uno::Any> const &)
545
0
{
546
0
    return cppu::acquire(new ::chart::PolynomialRegressionCurve );
547
0
}
548
549
extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface *
550
com_sun_star_comp_chart2_MovingAverageRegressionCurve_get_implementation(css::uno::XComponentContext *,
551
        css::uno::Sequence<css::uno::Any> const &)
552
0
{
553
0
    return cppu::acquire(new ::chart::MovingAverageRegressionCurve );
554
0
}
555
556
557
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */