소스 검색

Removing exceptions

Panagiotis Christopoulos Charitos 11 년 전
부모
커밋
3736b3133b
4개의 변경된 파일33개의 추가작업 그리고 10개의 파일을 삭제
  1. 2 1
      include/anki/gl/GlProgramPipeline.h
  2. 4 1
      include/anki/util/String.h
  3. 16 0
      include/anki/util/String.inl.h
  4. 11 8
      src/gl/GlProgramPipeline.cpp

+ 2 - 1
include/anki/gl/GlProgramPipeline.h

@@ -28,7 +28,8 @@ public:
 	}
 
 	ANKI_USE_RESULT Error create(
-		const GlProgramHandle* progsBegin, const GlProgramHandle* progsEnd);
+		const GlProgramHandle* progsBegin, const GlProgramHandle* progsEnd,
+		GlAllocator<U8>& alloc);
 
 	GlProgramHandle getAttachedProgram(GLenum type) const;
 

+ 4 - 1
include/anki/util/String.h

@@ -301,7 +301,10 @@ public:
 	ANKI_USE_RESULT Error create(Allocator alloc,
 		ConstIterator first, ConstIterator last);
 
-	/// Copy one string to another.
+	/// Initialize using a character.
+	ANKI_USE_RESULT Error create(Allocator alloc, Char c, PtrSize length);
+
+	/// Copy one string to this one.
 	ANKI_USE_RESULT Error create(Allocator alloc, const Self& b)
 	{
 		return create(alloc, b.toCString());

+ 16 - 0
include/anki/util/String.inl.h

@@ -38,6 +38,22 @@ Error StringBase<TAlloc>::create(
 	return err;
 }
 
+//==============================================================================
+template<typename TAlloc>
+Error StringBase<TAlloc>::create(Allocator alloc, Char c, PtrSize length)
+{
+	ANKI_ASSERT(c != '\0');
+	Error err = m_data.create(alloc, length + 1);
+
+	if(!err)
+	{
+		std::memset(&m_data[0], c, length);
+		m_data[length] = '\0';
+	}
+
+	return err;
+}
+
 //==============================================================================
 template<typename TAlloc>
 Error StringBase<TAlloc>::appendInternal(

+ 11 - 8
src/gl/GlProgramPipeline.cpp

@@ -11,7 +11,8 @@ namespace anki {
 
 //==============================================================================
 Error GlProgramPipeline::create(
-	const GlProgramHandle* progsBegin, const GlProgramHandle* progsEnd)
+	const GlProgramHandle* progsBegin, const GlProgramHandle* progsEnd,
+	GlAllocator<U8>& alloc)
 {
 	ANKI_ASSERT(progsBegin != nullptr && progsEnd != nullptr);
 	ANKI_ASSERT(progsBegin != progsEnd);
@@ -50,18 +51,20 @@ Error GlProgramPipeline::create(
 	{
 		GLint infoLen = 0;
 		GLint charsWritten = 0;
-		String infoLogTxt;
+		DArray<char> infoLogTxt;
 
 		glGetProgramPipelineiv(m_glName, GL_INFO_LOG_LENGTH, &infoLen);
 
-		infoLogTxt.resize(infoLen + 1);
-		glGetProgramPipelineInfoLog(
-			m_glName, infoLen, &charsWritten, &infoLogTxt[0]);
+		err = infoLogTxt.create(alloc, infoLen + 1);
 
-		infoLogTxt = "Ppline error log follows:\n" + infoLogTxt;
+		if(!err)
+		{
+			glGetProgramPipelineInfoLog(
+				m_glName, infoLen, &charsWritten, &infoLogTxt[0]);
 
-		ANKI_LOGE("%s", &infoLogTxt[0]);
-		err = ErrorCode::USER_DATA;
+			ANKI_LOGE("Ppline error log follows:\n%s", &infoLogTxt[0]);
+			err = ErrorCode::USER_DATA;
+		}
 	}
 
 	glBindProgramPipeline(0);