Skip to content

Commit e3f7c48

Browse files
committed
Use create(Rules|Extensions) for symmetry with createDatabase
This eliminates the 'initialize' member function in the Extension class. The constructor should handle what is needed to initialize the class. Signed-off-by: Shaun Ruffell <[email protected]>
1 parent 2990c04 commit e3f7c48

File tree

6 files changed

+35
-19
lines changed

6 files changed

+35
-19
lines changed

Diff for: src/Extensions.cpp

+4-2
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
#include <algorithm>
3737

3838
////////////////////////////////////////////////////////////////////////////////
39-
void Extensions::initialize (const std::string& location)
39+
Extensions::Extensions (const std::string& location)
4040
{
4141
// Scan extension directory.
4242
Directory d (location);
@@ -47,7 +47,9 @@ void Extensions::initialize (const std::string& location)
4747
std::sort (_scripts.begin (), _scripts.end ());
4848
}
4949
else
50+
{
5051
throw std::string ("Extension directory not readable: ") + d._data;
52+
}
5153
}
5254

5355
////////////////////////////////////////////////////////////////////////////////
@@ -57,7 +59,7 @@ void Extensions::debug ()
5759
}
5860

5961
////////////////////////////////////////////////////////////////////////////////
60-
std::vector <std::string> Extensions::all () const
62+
const std::vector <std::string>& Extensions::all () const
6163
{
6264
return _scripts;
6365
}

Diff for: src/Extensions.h

+8-3
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,15 @@
3333
class Extensions
3434
{
3535
public:
36-
Extensions () = default;
37-
void initialize (const std::string&);
36+
Extensions () = delete;
37+
Extensions (const std::string&);
38+
Extensions (const Extensions&) = delete;
39+
Extensions (Extensions&&) = default;
40+
Extensions& operator= (const Extensions&) = delete;
41+
Extensions& operator= (Extensions&&) = default;
42+
3843
void debug ();
39-
std::vector <std::string> all () const;
44+
const std::vector <std::string>& all () const;
4045
int callExtension (const std::string&, const std::vector <std::string>&, std::vector <std::string>&) const;
4146
std::string dump () const;
4247

Diff for: src/Rules.h

+5
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@ class Rules
3838
{
3939
public:
4040
Rules ();
41+
Rules (const Rules&) = delete;
42+
Rules (Rules&&) = default;
43+
Rules& operator= (const Rules&) = delete;
44+
Rules& operator= (Rules&&) = default;
45+
4146
void load (const std::string&, int next = 1);
4247
std::string file () const;
4348

Diff for: src/init.cpp

+14-7
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,9 @@ void initializeEntities (CLI& cli)
120120
}
121121

122122
////////////////////////////////////////////////////////////////////////////////
123-
void initializeRules (const CLI& cli, Rules& rules)
123+
Rules createRules (const CLI& cli)
124124
{
125+
Rules rules;
125126
// Rose tint my world, make me safe from my trouble and pain.
126127
rules.set ("color", isatty (STDOUT_FILENO) ? "on" : "off");
127128

@@ -210,6 +211,8 @@ void initializeRules (const CLI& cli, Rules& rules)
210211
debug (format ("Configuration override {1} = {2}", arg.attribute ("name"), arg.attribute ("value")));
211212
}
212213
}
214+
215+
return rules;
213216
}
214217

215218
////////////////////////////////////////////////////////////////////////////////
@@ -229,23 +232,27 @@ Database createDatabase (Rules& rules)
229232
}
230233

231234
////////////////////////////////////////////////////////////////////////////////
232-
void initializeExtensions (
233-
CLI& cli,
234-
const Rules& rules,
235-
Extensions& extensions)
235+
Extensions createExtensions (CLI& cli, const Rules& rules)
236236
{
237+
237238
Directory extDir (rules.get ("temp.db"));
238239
extDir += "extensions";
239240

240-
extensions.initialize (extDir._data);
241+
Extensions extensions {extDir._data};
241242

242243
// Add extensions as CLI entities.
243-
for (auto& ext : extensions.all ())
244+
for (const auto& ext : extensions.all ())
245+
{
244246
cli.entity ("extension", File (ext).name ());
247+
}
245248

246249
// Extensions have a debug mode.
247250
if (rules.getBoolean ("debug"))
251+
{
248252
extensions.debug ();
253+
}
254+
255+
return extensions;
249256
}
250257

251258
////////////////////////////////////////////////////////////////////////////////

Diff for: src/timew.cpp

+2-5
Original file line numberDiff line numberDiff line change
@@ -81,14 +81,11 @@ int main (int argc, const char** argv)
8181
cli.analyze ();
8282

8383
// Prepare the database, but do not read data.
84-
Rules rules;
85-
initializeRules (cli, rules);
84+
Rules rules = createRules (cli);
8685
Database database = createDatabase (rules);
86+
Extensions extensions = createExtensions (cli, rules);
8787

88-
// Load extension script info.
8988
// Re-analyze command because of the new extension entities.
90-
Extensions extensions;
91-
initializeExtensions (cli, rules, extensions);
9289
cli.analyze ();
9390

9491
// Dispatch to commands.

Diff for: src/timew.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,9 @@ void validate (const CLI& cli, const Rules& rules, Database&, Interval&);
6464
// init.cpp
6565
bool lightweightVersionCheck (int, const char**);
6666
void initializeEntities (CLI&);
67-
void initializeRules (const CLI&, Rules&);
67+
Rules createRules (const CLI&);
6868
Database createDatabase (Rules&);
69-
void initializeExtensions (CLI&, const Rules&, Extensions&);
69+
Extensions createExtensions (CLI&, const Rules&);
7070
int dispatchCommand (const CLI&, Database&, Rules&, const Extensions&);
7171

7272
// helper.cpp

0 commit comments

Comments
 (0)