From d3ebbabb27127be4790f11e69c697c4c6ec6030f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Tue, 30 Apr 2013 01:15:34 +0200 Subject: [PATCH] Properly count line numbers in shaders. Now line 41 of third added file is marked as 3(41). Source 0 is the `#version` string added in Shader constructor. Huh, deinlining that Shader::addSource() function also significantly reduced debug binary sizes. --- src/Shader.cpp | 8 ++++++++ src/Shader.h | 5 +---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/Shader.cpp b/src/Shader.cpp index 72777fbae..12d6d1b22 100644 --- a/src/Shader.cpp +++ b/src/Shader.cpp @@ -79,6 +79,14 @@ Shader& Shader::operator=(Shader&& other) { return *this; } +Shader& Shader::addSource(const std::string& source) { + if(_state == State::Initialized) + /* Fix line numbers, so line 41 of third added file is marked as 3(41). + Source 0 is the #version string added in constructor. */ + sources.push_back("#line 1 " + std::to_string(sources.size()) + '\n' + source); + return *this; +} + Shader& Shader::addFile(const std::string& filename) { /* Open file */ std::ifstream file(filename.c_str()); diff --git a/src/Shader.h b/src/Shader.h index 2b5e9936c..b47f4ee33 100644 --- a/src/Shader.h +++ b/src/Shader.h @@ -142,10 +142,7 @@ class MAGNUM_EXPORT Shader { * one source. * @see addFile() */ - inline Shader& addSource(const std::string& source) { - if(_state == State::Initialized) sources.push_back(source); - return *this; - } + Shader& addSource(const std::string& source); /** * @brief Add source file