Skip to content

Commit bac3654

Browse files
committed
Move Shader from filename constructor back to glow
1 parent 1ea71bb commit bac3654

File tree

17 files changed

+50
-67
lines changed

17 files changed

+50
-67
lines changed

source/examples/bindless-textures/main.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,8 @@ class EventHandler : public ExampleWindowEventHandler, glowutils::AbstractCoordi
9494

9595
m_program = new glow::Program;
9696
m_program->attach(
97-
glowutils::createShaderFromFile(gl::GL_VERTEX_SHADER, "data/bindless-textures/shader.vert"),
98-
glowutils::createShaderFromFile(gl::GL_FRAGMENT_SHADER, "data/bindless-textures/shader.frag")
97+
glow::Shader::fromFile(gl::GL_VERTEX_SHADER, "data/bindless-textures/shader.vert"),
98+
glow::Shader::fromFile(gl::GL_FRAGMENT_SHADER, "data/bindless-textures/shader.frag")
9999
);
100100

101101
std::array<glow::TextureHandle, std::tuple_size<decltype(m_textures)>::value> handles;

source/examples/computeshader/main.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ void EventHandler::createAndSetupTexture()
168168
void EventHandler::createAndSetupShaders()
169169
{
170170
m_computeProgram = new glow::Program();
171-
m_computeProgram->attach(glowutils::createShaderFromFile(gl::GL_COMPUTE_SHADER, "data/computeshader/cstest.comp"));
171+
m_computeProgram->attach(glow::Shader::fromFile(gl::GL_COMPUTE_SHADER, "data/computeshader/cstest.comp"));
172172

173173
m_computeProgram->setUniform("destTex", 0);
174174
}

source/examples/gpu-particles/ComputeShaderParticles.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,9 @@ void ComputeShaderParticles::initialize()
7171

7272
m_drawProgram = new Program();
7373
m_drawProgram->attach(
74-
glowutils::createShaderFromFile(gl::GL_VERTEX_SHADER, "data/gpu-particles/points.vert")
75-
, glowutils::createShaderFromFile(gl::GL_GEOMETRY_SHADER, "data/gpu-particles/points.geom")
76-
, glowutils::createShaderFromFile(gl::GL_FRAGMENT_SHADER, "data/gpu-particles/points.frag"));
74+
glow::Shader::fromFile(gl::GL_VERTEX_SHADER, "data/gpu-particles/points.vert")
75+
, glow::Shader::fromFile(gl::GL_GEOMETRY_SHADER, "data/gpu-particles/points.geom")
76+
, glow::Shader::fromFile(gl::GL_FRAGMENT_SHADER, "data/gpu-particles/points.frag"));
7777

7878
m_positionsSSBO = new Buffer();
7979
m_velocitiesSSBO = new Buffer();
@@ -114,7 +114,7 @@ void ComputeShaderParticles::initialize()
114114

115115
m_quad = new glowutils::ScreenAlignedQuad(m_color);
116116
m_clear = new glowutils::ScreenAlignedQuad(
117-
glowutils::createShaderFromFile(gl::GL_FRAGMENT_SHADER, "data/gpu-particles/clear.frag"));
117+
glow::Shader::fromFile(gl::GL_FRAGMENT_SHADER, "data/gpu-particles/clear.frag"));
118118
}
119119

120120
void ComputeShaderParticles::reset()

source/examples/gpu-particles/FragmentShaderParticles.cpp

+5-5
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ void FragmentShaderParticles::initialize()
6666

6767
// Create screen aligned quad for particle update
6868
m_quadUpdate = new ScreenAlignedQuad(
69-
createShaderFromFile(gl::GL_FRAGMENT_SHADER, "data/gpu-particles/particle.frag"),
69+
Shader::fromFile(gl::GL_FRAGMENT_SHADER, "data/gpu-particles/particle.frag"),
7070
m_texPositions );
7171
m_quadUpdate->program()->setUniform("vertices", 0);
7272
m_quadUpdate->program()->setUniform("velocities", 1);
@@ -88,15 +88,15 @@ void FragmentShaderParticles::initialize()
8888

8989
// Create screen aligned quads for clear and rendering
9090
m_clear = new ScreenAlignedQuad(
91-
createShaderFromFile(gl::GL_FRAGMENT_SHADER, "data/gpu-particles/clear.frag") );
91+
Shader::fromFile(gl::GL_FRAGMENT_SHADER, "data/gpu-particles/clear.frag") );
9292
m_quad = new ScreenAlignedQuad(m_colorBuffer);
9393

9494
// Create draw program
9595
m_drawProgram = new Program();
9696
m_drawProgram->attach(
97-
createShaderFromFile(gl::GL_VERTEX_SHADER, "data/gpu-particles/points_fragment.vert")
98-
, createShaderFromFile(gl::GL_GEOMETRY_SHADER, "data/gpu-particles/points.geom")
99-
, createShaderFromFile(gl::GL_FRAGMENT_SHADER, "data/gpu-particles/points.frag"));
97+
Shader::fromFile(gl::GL_VERTEX_SHADER, "data/gpu-particles/points_fragment.vert")
98+
, Shader::fromFile(gl::GL_GEOMETRY_SHADER, "data/gpu-particles/points.geom")
99+
, Shader::fromFile(gl::GL_FRAGMENT_SHADER, "data/gpu-particles/points.frag"));
100100
}
101101

102102
void FragmentShaderParticles::reset()

source/examples/gpu-particles/TransformFeedbackParticles.cpp

+5-5
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ void TransformFeedbackParticles::initialize()
4444
reset();
4545

4646
m_transformFeedbackProgram = new glow::Program();
47-
m_transformFeedbackProgram->attach(glowutils::createShaderFromFile(gl::GL_VERTEX_SHADER, "data/gpu-particles/transformfeedback.vert"));
47+
m_transformFeedbackProgram->attach(glow::Shader::fromFile(gl::GL_VERTEX_SHADER, "data/gpu-particles/transformfeedback.vert"));
4848

4949
m_transformFeedbackProgram->link();
5050

@@ -53,9 +53,9 @@ void TransformFeedbackParticles::initialize()
5353

5454
m_drawProgram = new Program();
5555
m_drawProgram->attach(
56-
glowutils::createShaderFromFile(gl::GL_VERTEX_SHADER, "data/gpu-particles/points.vert")
57-
, glowutils::createShaderFromFile(gl::GL_GEOMETRY_SHADER, "data/gpu-particles/points.geom")
58-
, glowutils::createShaderFromFile(gl::GL_FRAGMENT_SHADER, "data/gpu-particles/points.frag"));
56+
glow::Shader::fromFile(gl::GL_VERTEX_SHADER, "data/gpu-particles/points.vert")
57+
, glow::Shader::fromFile(gl::GL_GEOMETRY_SHADER, "data/gpu-particles/points.geom")
58+
, glow::Shader::fromFile(gl::GL_FRAGMENT_SHADER, "data/gpu-particles/points.frag"));
5959

6060
m_vao = new VertexArrayObject();
6161
m_vao->bind();
@@ -90,7 +90,7 @@ void TransformFeedbackParticles::initialize()
9090

9191
m_quad = new glowutils::ScreenAlignedQuad(m_color);
9292
m_clear = new glowutils::ScreenAlignedQuad(
93-
glowutils::createShaderFromFile(gl::GL_FRAGMENT_SHADER, "data/gpu-particles/clear.frag"));
93+
glow::Shader::fromFile(gl::GL_FRAGMENT_SHADER, "data/gpu-particles/clear.frag"));
9494
}
9595

9696
void TransformFeedbackParticles::reset()

source/examples/simple-transformfeedback/main.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -181,12 +181,12 @@ void EventHandler::createAndSetupShaders()
181181
{
182182
m_shaderProgram = new glow::Program();
183183
m_shaderProgram->attach(
184-
glowutils::createShaderFromFile(gl::GL_VERTEX_SHADER, "data/transformfeedback/simple.vert")
185-
, glowutils::createShaderFromFile(gl::GL_FRAGMENT_SHADER, "data/transformfeedback/simple.frag"));
184+
glow::Shader::fromFile(gl::GL_VERTEX_SHADER, "data/transformfeedback/simple.vert")
185+
, glow::Shader::fromFile(gl::GL_FRAGMENT_SHADER, "data/transformfeedback/simple.frag"));
186186

187187
m_transformFeedbackProgram = new glow::Program();
188188
m_transformFeedbackProgram->attach(
189-
glowutils::createShaderFromFile(gl::GL_VERTEX_SHADER, "data/transformfeedback/transformfeedback.vert"));
189+
glow::Shader::fromFile(gl::GL_VERTEX_SHADER, "data/transformfeedback/transformfeedback.vert"));
190190
m_transformFeedbackProgram->setUniform("deltaT", 0.0f);
191191
}
192192

source/examples/ssbo/main.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class EventHandler : public ExampleWindowEventHandler
4040
gl::glClearColor(0.2f, 0.3f, 0.4f, 1.f);
4141

4242

43-
m_quad = new glowutils::ScreenAlignedQuad(glowutils::createShaderFromFile(gl::GL_FRAGMENT_SHADER, "data/ssbo/ssbo.frag"));
43+
m_quad = new glowutils::ScreenAlignedQuad(glow::Shader::fromFile(gl::GL_FRAGMENT_SHADER, "data/ssbo/ssbo.frag"));
4444

4545
m_quad->program()->setUniform("maximum", 10);
4646
m_quad->program()->setUniform("rowCount", 10);

source/examples/tessellation/main.cpp

+6-6
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,12 @@ class EventHandler : public ExampleWindowEventHandler
5959

6060
m_sphere = new glow::Program();
6161
m_sphere->attach(
62-
glowutils::createShaderFromFile(gl::GL_VERTEX_SHADER, "data/tessellation/sphere.vert")
63-
, glowutils::createShaderFromFile(gl::GL_TESS_CONTROL_SHADER, "data/tessellation/sphere.tcs")
64-
, glowutils::createShaderFromFile(gl::GL_TESS_EVALUATION_SHADER, "data/tessellation/sphere.tes")
65-
, glowutils::createShaderFromFile(gl::GL_GEOMETRY_SHADER, "data/tessellation/sphere.geom")
66-
, glowutils::createShaderFromFile(gl::GL_FRAGMENT_SHADER, "data/tessellation/sphere.frag")
67-
, glowutils::createShaderFromFile(gl::GL_FRAGMENT_SHADER, "data/common/phong.frag"));
62+
glow::Shader::fromFile(gl::GL_VERTEX_SHADER, "data/tessellation/sphere.vert")
63+
, glow::Shader::fromFile(gl::GL_TESS_CONTROL_SHADER, "data/tessellation/sphere.tcs")
64+
, glow::Shader::fromFile(gl::GL_TESS_EVALUATION_SHADER, "data/tessellation/sphere.tes")
65+
, glow::Shader::fromFile(gl::GL_GEOMETRY_SHADER, "data/tessellation/sphere.geom")
66+
, glow::Shader::fromFile(gl::GL_FRAGMENT_SHADER, "data/tessellation/sphere.frag")
67+
, glow::Shader::fromFile(gl::GL_FRAGMENT_SHADER, "data/common/phong.frag"));
6868

6969
m_icosahedron = new glowutils::Icosahedron();
7070
m_agrid = new glowutils::AdaptiveGrid(16U);

source/examples/transparency/ABufferAlgorithm.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ void ABufferAlgorithm::initialize(const std::string & transparencyShaderFilePath
4242
glow::NamedString::create("/transparency/abuffer.glsl", new glow::File(transparencyShaderFilePath + "abuffer.glsl"));
4343

4444
m_program = new glow::Program();
45-
m_program->attach(glowutils::createShaderFromFile(gl::GL_FRAGMENT_SHADER, transparencyShaderFilePath + "abuffer.frag"));
45+
m_program->attach(glow::Shader::fromFile(gl::GL_FRAGMENT_SHADER, transparencyShaderFilePath + "abuffer.frag"));
4646
m_program->attach(vertexShader);
4747
if (geometryShader != nullptr) m_program->attach(geometryShader);
4848

@@ -63,7 +63,7 @@ void ABufferAlgorithm::initialize(const std::string & transparencyShaderFilePath
6363
m_counter = new glow::Buffer();
6464
m_counter->setName("A Buffer Counter");
6565

66-
m_quad = new glowutils::ScreenAlignedQuad(glowutils::createShaderFromFile(gl::GL_FRAGMENT_SHADER, transparencyShaderFilePath + "abuffer_post.frag"));
66+
m_quad = new glowutils::ScreenAlignedQuad(glow::Shader::fromFile(gl::GL_FRAGMENT_SHADER, transparencyShaderFilePath + "abuffer_post.frag"));
6767

6868
m_colorBuffer = createColorTex();
6969
m_postFbo = new glow::FrameBufferObject;

source/examples/transparency/GlBlendAlgorithm.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ void GlBlendAlgorithm::initialize(const std::string & transparencyShaderFilePath
1515
assert(vertexShader != nullptr);
1616

1717
m_program = new glow::Program();
18-
m_program->attach(glowutils::createShaderFromFile(gl::GL_FRAGMENT_SHADER, transparencyShaderFilePath + "glblend.frag"));
18+
m_program->attach(glow::Shader::fromFile(gl::GL_FRAGMENT_SHADER, transparencyShaderFilePath + "glblend.frag"));
1919
m_program->attach(vertexShader);
2020
if (geometryShader != nullptr) m_program->attach(geometryShader);
2121

source/examples/transparency/HybridAlgorithm.cpp

+5-5
Original file line numberDiff line numberDiff line change
@@ -27,20 +27,20 @@ void HybridAlgorithm::initialize(const std::string & transparencyShaderFilePath,
2727

2828
m_opaqueProgram = new glow::Program;
2929
m_opaqueProgram->attach(vertexShader);
30-
m_opaqueProgram->attach(glowutils::createShaderFromFile(gl::GL_FRAGMENT_SHADER, transparencyShaderFilePath + "hybrid_opaque.frag"));
30+
m_opaqueProgram->attach(glow::Shader::fromFile(gl::GL_FRAGMENT_SHADER, transparencyShaderFilePath + "hybrid_opaque.frag"));
3131
if (geometryShader != nullptr) m_opaqueProgram->attach(geometryShader);
3232

3333
m_depthKTabProgram = new glow::Program;
3434
m_depthKTabProgram->attach(vertexShader);
35-
m_depthKTabProgram->attach(glowutils::createShaderFromFile(gl::GL_FRAGMENT_SHADER, transparencyShaderFilePath + "hybrid_depthktab.frag"));
35+
m_depthKTabProgram->attach(glow::Shader::fromFile(gl::GL_FRAGMENT_SHADER, transparencyShaderFilePath + "hybrid_depthktab.frag"));
3636
if (geometryShader != nullptr) m_depthKTabProgram->attach(geometryShader);
3737

3838
m_visibilityKTabProgram = new glow::Program;
39-
m_visibilityKTabProgram->attach(glowutils::createShaderFromFile(gl::GL_COMPUTE_SHADER, transparencyShaderFilePath + "hybrid_visibilityktab.comp"));
39+
m_visibilityKTabProgram->attach(glow::Shader::fromFile(gl::GL_COMPUTE_SHADER, transparencyShaderFilePath + "hybrid_visibilityktab.comp"));
4040

4141
m_colorProgram = new glow::Program;
4242
m_colorProgram->attach(vertexShader);
43-
m_colorProgram->attach(glowutils::createShaderFromFile(gl::GL_FRAGMENT_SHADER, transparencyShaderFilePath + "hybrid_color.frag"));
43+
m_colorProgram->attach(glow::Shader::fromFile(gl::GL_FRAGMENT_SHADER, transparencyShaderFilePath + "hybrid_color.frag"));
4444
if (geometryShader != nullptr) m_colorProgram->attach(geometryShader);
4545

4646
m_depthBuffer = new glow::RenderBufferObject;
@@ -62,7 +62,7 @@ void HybridAlgorithm::initialize(const std::string & transparencyShaderFilePath,
6262
m_colorFbo->attachRenderBuffer(gl::GL_DEPTH_ATTACHMENT, m_depthBuffer.get());
6363
m_colorFbo->setDrawBuffers({ gl::GL_COLOR_ATTACHMENT0, gl::GL_COLOR_ATTACHMENT1 });
6464

65-
m_compositionQuad = new glowutils::ScreenAlignedQuad(glowutils::createShaderFromFile(gl::GL_FRAGMENT_SHADER, transparencyShaderFilePath + "hybrid_post.frag"));
65+
m_compositionQuad = new glowutils::ScreenAlignedQuad(glow::Shader::fromFile(gl::GL_FRAGMENT_SHADER, transparencyShaderFilePath + "hybrid_post.frag"));
6666
m_compositionFbo = new glow::FrameBufferObject;
6767
m_compositionFbo->attachTexture2D(gl::GL_COLOR_ATTACHMENT0, m_colorBuffer.get());
6868
m_compositionFbo->setDrawBuffer(gl::GL_COLOR_ATTACHMENT0);

source/examples/transparency/WeightedAverageAlgorithm.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@
1414
void WeightedAverageAlgorithm::initialize(const std::string & transparencyShaderFilePath, glow::Shader *vertexShader, glow::Shader *geometryShader) {
1515

1616
m_opaqueProgram = new glow::Program;
17-
m_opaqueProgram->attach(glowutils::createShaderFromFile(gl::GL_FRAGMENT_SHADER, transparencyShaderFilePath + "wavg_opaque.frag"));
17+
m_opaqueProgram->attach(glow::Shader::fromFile(gl::GL_FRAGMENT_SHADER, transparencyShaderFilePath + "wavg_opaque.frag"));
1818
m_opaqueProgram->attach(vertexShader);
1919
if (geometryShader != nullptr) m_opaqueProgram->attach(geometryShader);
2020

2121
m_accumulationProgram = new glow::Program;
22-
m_accumulationProgram->attach(glowutils::createShaderFromFile(gl::GL_FRAGMENT_SHADER, transparencyShaderFilePath + "wavg_translucent.frag"));
22+
m_accumulationProgram->attach(glow::Shader::fromFile(gl::GL_FRAGMENT_SHADER, transparencyShaderFilePath + "wavg_translucent.frag"));
2323
m_accumulationProgram->attach(vertexShader);
2424
if (geometryShader != nullptr) m_accumulationProgram->attach(geometryShader);
2525

@@ -35,7 +35,7 @@ void WeightedAverageAlgorithm::initialize(const std::string & transparencyShader
3535
m_renderFbo->attachRenderBuffer(gl::GL_DEPTH_ATTACHMENT, m_depthBuffer);
3636
m_renderFbo->setDrawBuffers({ gl::GL_COLOR_ATTACHMENT0, gl::GL_COLOR_ATTACHMENT1 });
3737

38-
m_quad = new glowutils::ScreenAlignedQuad(glowutils::createShaderFromFile(gl::GL_FRAGMENT_SHADER, transparencyShaderFilePath + "wavg_post.frag"));
38+
m_quad = new glowutils::ScreenAlignedQuad(glow::Shader::fromFile(gl::GL_FRAGMENT_SHADER, transparencyShaderFilePath + "wavg_post.frag"));
3939

4040
m_colorBuffer = createColorTex();
4141
m_postFbo = new glow::FrameBufferObject;

source/examples/transparency/main.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ class EventHandler : public ExampleWindowEventHandler, glowutils::AbstractCoordi
6060
gl::glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
6161

6262

63-
glow::Shader* vertexShader = glowutils::createShaderFromFile(gl::GL_VERTEX_SHADER, "data/transparency/transparency.vert");
63+
glow::Shader* vertexShader = glow::Shader::fromFile(gl::GL_VERTEX_SHADER, "data/transparency/transparency.vert");
6464

6565
m_algos.push_back(new GlBlendAlgorithm);
6666
m_algos.push_back(new ABufferAlgorithm);
@@ -76,8 +76,8 @@ class EventHandler : public ExampleWindowEventHandler, glowutils::AbstractCoordi
7676

7777
// Setup the screen aligned quad stuff
7878
glow::Program* quadProgram = new glow::Program();
79-
quadProgram->attach(glowutils::createShaderFromFile(gl::GL_FRAGMENT_SHADER, "data/transparency/quad.frag"));
80-
quadProgram->attach(glowutils::createShaderFromFile(gl::GL_VERTEX_SHADER, "data/transparency/quad.vert"));
79+
quadProgram->attach(glow::Shader::fromFile(gl::GL_FRAGMENT_SHADER, "data/transparency/quad.frag"));
80+
quadProgram->attach(glow::Shader::fromFile(gl::GL_VERTEX_SHADER, "data/transparency/quad.vert"));
8181
m_quad = new glowutils::ScreenAlignedQuad(quadProgram);
8282

8383
m_aabb.extend(glm::vec3(-1.f, -0.5f, -10.5f));

source/glow/include/glow/Shader.h

+1
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ class GLOW_API Shader : public Object, protected ChangeListener, public Changeab
4040

4141
public:
4242
static Shader * fromString(const gl::GLenum type, const std::string & sourceString);
43+
static Shader * fromFile(const gl::GLenum type, const std::string & filename);
4344

4445
public:
4546
Shader(const gl::GLenum type);

source/glow/source/Shader.cpp

+6
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include <glowbase/Version.h>
1111
#include <glowbase/AbstractStringSource.h>
1212
#include <glowbase/StaticStringSource.h>
13+
#include <glowbase/File.h>
1314

1415
#include <glow/Program.h>
1516
#include <glow/logging.h>
@@ -68,6 +69,11 @@ Shader * Shader::fromString(const gl::GLenum type, const std::string & sourceStr
6869
return new Shader(type, new StaticStringSource(sourceString));
6970
}
7071

72+
Shader * Shader::fromFile(const gl::GLenum type, const std::string & filename)
73+
{
74+
return new Shader(type, new File(filename));
75+
}
76+
7177
Shader::~Shader()
7278
{
7379
if (m_source)
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,12 @@
11
#pragma once
22

33
#include <string>
4-
#include <vector>
5-
6-
#include <glbinding/types.h>
74

85
#include <glowutils/glowutils_api.h>
96

10-
namespace glow
11-
{
12-
13-
class Shader;
14-
15-
}
16-
177
namespace glowutils
188
{
199

20-
GLOWUTILS_API glow::Shader * createShaderFromFile(gl::GLenum type, const std::string & fileName);
21-
GLOWUTILS_API glow::Shader * createShaderFromFile(gl::GLenum type, const std::string & fileName, const std::vector<std::string> & includePaths);
22-
2310
GLOWUTILS_API void scanDirectory(const std::string & directory, const std::string & fileExtension);
2411

2512
} // namespace glowutils

source/glowutils/source/glowutils.cpp

+2-13
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
#include <glowutils/glowutils.h>
22

3+
#include <glowbase/File.h>
4+
35
#include <glow/logging.h>
46
#include <glow/NamedString.h>
5-
#include <glow/Shader.h>
6-
7-
#include <glowbase/File.h>
87

98
#ifdef _MSC_VER
109
#include "windows.h"
@@ -59,16 +58,6 @@ using namespace glow;
5958
namespace glowutils
6059
{
6160

62-
Shader * createShaderFromFile(const gl::GLenum type, const std::string& fileName)
63-
{
64-
return new Shader(type, new File(fileName));
65-
}
66-
67-
Shader * createShaderFromFile(gl::GLenum type, const std::string & fileName, const std::vector<std::string> & includePaths)
68-
{
69-
return new Shader(type, new File(fileName), includePaths);
70-
}
71-
7261
void scanDirectory(const std::string & directory, const std::string & fileExtension)
7362
{
7463
for (const std::string & file: getFiles(directory))

0 commit comments

Comments
 (0)