Projekt

Allgemein

Profil

Feature #713 » liblepto_20260327.diff

Maximilian Seesslen, 27.03.2026 18:30

Unterschiede anzeigen:

CMakeLists.txt
5 5
#------------------------------------------------------------------------------
6 6

  
7 7

  
8
cmake_minimum_required(VERSION 3.11)
8
# 3.18.4: Debian Bullsyeye
9
# 3.10.2: Ubuntu Bionic
10
cmake_minimum_required(VERSION 3.10.2)
9 11
project(lepto LANGUAGES CXX)
10 12

  
11 13

  
......
15 17
   set(CMAKE_AUTOUIC ON)
16 18
   set(CMAKE_AUTOMOC ON)
17 19
   set(CMAKE_AUTORCC ON)
18
   set( QT_COMPONENTS Core Widgets Network Xml )
20
   set( QT_COMPONENTS Core Network Xml )
19 21

  
20 22
   # Check either Qt6 or Qt5
21 23
   find_package( QT NAMES Qt5 Qt6 COMPONENTS ${QT_COMPONENTS} REQUIRED )
......
25 27
   set( MCU_PLATFORM "linux" )
26 28
endif()
27 29

  
28
if( PROJECT_IS_TOP_LEVEL )
30
if (CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) # PROJECT_IS_TOP_LEVEL
29 31
   # Let the tests work out of box
30 32
   add_definitions(
31 33
      -DCONFIG_LEPTO_RING_SUPPORT_VOLATILE=1
......
33 35
   )
34 36
endif()
35 37

  
36
set( USE_LEPTO 1 PARENT_SCOPE )
38
if( NOT CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR ) # NOT PROJECT_IS_TOP_LEVEL
39
    set( USE_LEPTO 1 PARENT_SCOPE )
40
endif()
37 41

  
38 42
set(
39 43
   headers
include/lepto/signal.hpp
66 66
{
67 67
   friend class CSignal<sigReturn, sigTypes...>;
68 68
       typedef const CFunctor<sigReturn, sigTypes...> CConstFunctor;
69
       CFunctor *m_next;
69
       CFunctor *m_next=nullptr;
70 70
   public:
71 71
      virtual sigReturn emitSignal( sigTypes ... args ) const = 0;
72 72
};
include/lepto/signalDeferred.hpp
64 64
         {
65 65
            lFatal("CNPS");
66 66
         }
67
         p.push_back( STuple<sigTypes ...>( my_forward<sigTypes>(args)... ) );
67
         p.push_back( STuple<sigTypes ...>( doForward<sigTypes>(args)... ) );
68 68
      }
69 69

  
70 70
      virtual_eventLoop void eventLoop() override_eventLoop
include/lepto/signalPool.hpp
54 54
      };
55 55
      virtual void shot() // overload;
56 56
      {
57
         m_signal.emitSignal( m_storedArg );
57
         m_signal.emit( m_storedArg );
58 58
      };
59 59
};
60 60

  
......
126 126
      template <typename sigReturn, typename sigType1>
127 127
      void enqueueSignal( CSignal<sigReturn, sigType1> &signal, sigType1 arg)
128 128
      {
129
         pendingSignalList.push_back( new CPendingSignal( signal, arg ) );
129
         pendingSignalList.push_back( new CPendingSignal<sigReturn, sigType1>( signal, arg ) );
130 130
         return;
131 131
      };
132 132

  
133 133
      template <typename sigReturn, typename sigType1, typename sigType2>
134 134
      void enqueueSignal( CSignal<sigReturn, sigType1, sigType2> &signal, sigType1 arg1, sigType2 arg2)
135 135
      {
136
         pendingSignalList.push_back( new CPendingSignal2( signal, arg1, arg2 ) );
136
         pendingSignalList.push_back( new CPendingSignal2<sigReturn,sigType1,sigType2>( signal, arg1, arg2 ) );
137 137
         return;
138 138
      };
139 139

  
......
148 148
      template <typename sigReturn>
149 149
      void enqueueSignal( CSignal<sigReturn> &signal)
150 150
      {
151
         pendingSignalList.push_back( new CPendingSignal0( signal ) );
151
         pendingSignalList.push_back( new CPendingSignal0<sigReturn>( signal ) );
152 152
         return;
153 153
      };
154 154
};
include/lepto/tuple.hpp
39 39
    STuple<Ts...> tail;
40 40
    STuple() = default;
41 41
    STuple(T&& h, Ts&&... ts)
42
        : head(my_forward<T>(h)), tail(my_forward<Ts>(ts)...) {}
42
        : head(doForward<T>(h)), tail(doForward<Ts>(ts)...) {}
43 43
};
44 44

  
45 45
// No remaining arguments-> call method
tests/CMakeLists.txt
5 5
#------------------------------------------------------------------------------
6 6

  
7 7

  
8
cmake_minimum_required(VERSION 3.11)
8
cmake_minimum_required(VERSION 3.10.2)
9 9
project(lepto_tests)
10 10

  
11
find_package( Catch2 3 )
11
find_package( Catch2 )
12 12
if( NOT Catch2_FOUND )
13 13
   find_package( Catch )
14 14
   if( NOT Catch_FOUND )
......
27 27
   endif( NOT Catch_FOUND )
28 28
   add_definitions( "-DCATCH_V1" )
29 29
else( NOT Catch2_FOUND)
30
   add_definitions( "-DCATCH_V3" )
31
   set( CATCH_LIBRARY "Catch2::Catch2WithMain" )
30
   if( EXISTS /usr/include/catch2/catch_test_macros.hpp )
31
      add_definitions( "-DCATCH_V3" )
32
      set( CATCH_LIBRARY "Catch2::Catch2WithMain" )
33
   else( )
34
      add_definitions( "-DCATCH_V2" )
35
   endif( )
32 36
endif( NOT Catch2_FOUND )
33 37

  
34 38
set(
tests/test_ring_threaded.hpp
18 18
#include <lepto/bufferRing.hpp>
19 19
#include <QThread>
20 20
#include <QCoreApplication>
21

  
21
#include <QElapsedTimer>
22 22

  
23 23
#define TEST_ALL
24 24
#define STOP_ON_FAIL
......
96 96
{
97 97
   private:
98 98
      CRing<SElement> m_ring;
99
      CProducer m_producers[ PRODUCERS ];
100 99
      bool m_finished[ PRODUCERS ];
100
      CProducer *m_producers[ PRODUCERS ];
101 101
      int m_counters[ PRODUCERS ];
102 102
      int m_loops=0;
103 103
      int m_errors=0;
......
106 106
   public:
107 107
      CConsumer()
108 108
         :m_ring( RING_SIZE )
109
   #if 0
110
         ,m_finished{0}
109 111
         ,m_producers{
110 112
               {0, m_finished[0], m_ring},
111 113
               {1, m_finished[1], m_ring},
......
126 128
               #endif // >= 6
127 129
               #endif // >= 4
128 130
          }
129
         ,m_finished{0}
131
                  #endif
130 132
         ,m_counters{
131 133
               0,
132 134
               10000,
......
142 144
               #endif
143 145
             }
144 146
      {
147
         // Static list does not work with GCC 10.
148
         for (int i = 0; i < PRODUCERS; ++i)
149
         {
150
            m_finished[i]=false;
151
            m_producers[i]=new CProducer(i, m_finished[i], m_ring);
152
         }
145 153
         return;
146 154
      }
147 155
      void run() override
148 156
      {
149 157
         for(int i1=0; i1<PRODUCERS; i1++)
150 158
         {
151
            m_producers[i1].start();
159
            m_producers[i1]->start();
152 160
         }
153 161

  
154 162
         if( allProducerFinished() )
......
156 164
            lWarning("Not plausible");
157 165
         }
158 166
         int noDAtaCounter=0;
159
         QElapsedTimer timer;
167

  
168
         #if QT_VERSION >= QT_VERSION_CHECK(4, 7, 0)
169
            QElapsedTimer timer;
170
         #else
171
            QTimer timer;
172
         #endif
173

  
160 174
         timer.start();
161 175
         qint64 maxNoData=0;
162 176
         
tests/test_signal.cpp
26 26
#include <lepto/signal.hpp>
27 27
#include <lepto/signalPool.hpp>
28 28
#include <lepto/signalPoolStatic.hpp>
29
#include <lepto/signalDeferred.hpp>
29 30

  
30 31

  
31 32
#define TEST_ALL
......
91 92

  
92 93
      //lHint << "Checking adding to list";
93 94
      for(int i1=0; i1<0x10; i1++)
94
         sig.emitSignal(0, i1);
95
         sig.emit(0, i1);
95 96

  
96 97
      // 15 + 14 ... + 3 + 2 + 1
97 98
      REQUIRE( obj.getCounter() == 0x78 + START_VALUE );
......
105 106

  
106 107
      //lHint << "Checking adding to list";
107 108
      for(int i1=0; i1<0x10; i1++)
108
         sig.emitSignal(i1);
109
         sig.emit(i1);
109 110

  
110 111
      // 15 + 14 ... + 3 + 2 + 1
111 112
      REQUIRE( getCounter() == 0x78 + START_VALUE );
......
157 158

  
158 159
      REQUIRE( obj.getCounter() == 0x10 + START_VALUE );
159 160
   }
161

  
162
   SECTION( "Deferred Signal" )
163
   {
164
      C1 obj;
165
      constexpr int sigCount=0x10;
166
      CSignalDeferred<void> sig( sigCount );
167

  
168
      sig.connect(&obj, &C1::_slot3);
169

  
170
      //lHint << "Checking adding to list";
171
      for(int i1=0; i1<sigCount; i1++)
172
      {
173
         sig.emitDeferred();
174
      }
175

  
176
      // Nothing should have happen yet
177
      REQUIRE( obj.getCounter() == START_VALUE );
178

  
179
      sig.eventLoop();
180

  
181
      REQUIRE( obj.getCounter() == START_VALUE + sigCount );
182
   }
160 183
}
161 184

  
162 185

  
(3-3/3)