Status ifstream::open(const Path &path, std::ios_base::openmode mode) { CHECK_M(!is_open(), "Attempted to re-open file without closing"); // Sanity check. This should have the 'in' flag on it. const bool hasRequiredMode = mode & std::ios::in; ASSERT(hasRequiredMode); if (!hasRequiredMode) { return Status::BAD_ARGUMENT; } // Sanity check. Many modes aren't supported! const bool hasNoInvalidModes = (mode & (std::ios::out | std::ios::app | std::ios::ate | std::ios::trunc)) == 0; ASSERT(hasNoInvalidModes); if (!hasNoInvalidModes) { return Status::BAD_ARGUMENT; } // Attempt open filters::streamfilter *filebuf = vfs::open(path, mode); if (!filebuf) { return Status::NOT_FOUND; } // Make sure we can actually connect this through. filters::passthrough *handle = dynamic_cast< filters::passthrough * >(rdbuf()); if (!handle->chain(filebuf, mode)) { vfs::close(filebuf); return Status::GENERIC_ERROR; } return Status::OK; }
/** * @description: setup a specify field's content by specify the field no and content * @param: filedNo - the field's no * @param: content - the field's content * @param: contentLen - the field's content's length * @retval: ERR_INVALID_FIELDNO - the field no is out of ranges * @retval: 0 - at return zero means success */ int setFieldContent(unsigned char filedNo, void *content, unsigned short contentLen) { if (filedNo > FS.size - 1) { return ERR_INVALID_FIELDNO; } if (CHECK_M(FS.fdSet[filedNo - 1].content.value) || (FS.fdSet[filedNo - 1].content.length < contentLen)) { FS.fdSet[filedNo - 1].content.value = (unsigned char *) malloc( sizeof(unsigned char) * (contentLen + 2)); if (CHECK_M(FS.fdSet[filedNo - 1].content.value)) { return ERR_ALOM_FAILED; } } memset(FS.fdSet[filedNo - 1].content.value, 0x00, (contentLen + 2)); memcpy(FS.fdSet[filedNo - 1].content.value, content, contentLen); FS.fdSet[filedNo - 1].content.length = contentLen; return 0; }
DebugDraw::DebugDraw() { // Init Shader ShaderDef def; const char *vertProgram = "" "#version 430\n" "uniform mat4 mat_projview;\n" "uniform mat4 mat_model;\n" "in vec4 position;\n" "in vec4 color0;\n" "out vec4 vertex_color;\n" "void main(void) {\n" " mat4 mat_mv = mat_projview * mat_model;\n" " gl_Position = mat_mv * vec4(position.xyz, 1.0);\n" " vertex_color = color0 / 255.0;\n" "}\n"; const char *fragProgram = "" "#version 430\n" "precision highp float;\n" "in vec4 vertex_color;\n" "out vec4 out_Color;\n" "void main(void) {\n" " out_Color = vertex_color;\n" "}\n"; bool ret = wrappers::opengl::CreateShaderFromProgram(def, vertProgram, fragProgram); CHECK_M(ret, "Unable to compile DebugDraw shader"); ret = m_shader.loadFromDef(def); CHECK_M(ret, "Unable to create DebugDraw shader from program"); ret = m_shader.activate(); CHECK_M(ret, "Unable to activate DebugDraw shader"); ret = m_shader.getUniform("mat_projview", m_pProjViewMat); CHECK_M(ret, "Unable to locate mat_projview uniform"); ret = m_shader.getUniform("mat_model", m_pModelMat); CHECK_M(ret, "Unable to locate mat_model uniform"); ret = m_shader.deactivate(); ASSERT(ret); // Init vertex buffer VertexFormatDef::Builder vertexFormatDef; vertexFormatDef.add_elem(VertexFormatDefElem::Builder() .set_name("position") .set_count(4) .set_size(sizeof(float)) .set_pad(0) .set_type(GL_FLOAT) .build()); vertexFormatDef.add_elem(VertexFormatDefElem::Builder() .set_name("color0") .set_count(4) .set_size(sizeof(u8)) .set_pad(0) .set_type(GL_UNSIGNED_BYTE) .build()); VertexFormatDesc vertexFormat(&m_shader, vertexFormatDef.build()); ret = m_vbo.setFormat(vertexFormat); CHECK_M(ret, "Unable to create DebugDraw vertex buffer."); }
void ifstream::close() { if (!is_open()) { return; } CHECK_M(m_filterDepth == 0, "Filters still attached to file!"); filters::streamfilter *handle = dynamic_cast< filters::streamfilter * >(rdbuf()); filters::streamfilter *filebuf = dynamic_cast< filters::streamfilter * >(handle->getNext()); CHECK(vfs::close(filebuf)); handle->chain(nullptr, std::ios::in); }
core::memory::Blob Packet::getMutablePayload(const size_t sz) { const size_t requestSz = sz + sizeof(Header); CHECK_M(requestSz <= PACKET_MAX_SIZE_TCP, "Error packet too large"); const size_t origSize = m_payloadLarge.size(); if ((requestSz > PACKET_MAX_SIZE_UDP && requestSz > m_payloadLarge.size()) || origSize > 0) { if (requestSz > origSize) { m_payloadLarge.resize(requestSz, 0); } if (origSize == 0) { memcpy(&m_payloadLarge[0], m_payloadSmall, PACKET_MAX_SIZE_UDP); } reinterpret_cast<Header *>(&m_payloadLarge[0])->m_size = sz; return core::memory::Blob(&m_payloadLarge[0] + sizeof(Header), sz); } else { reinterpret_cast<Header *>(m_payloadSmall)->m_size = sz; return core::memory::Blob(m_payloadSmall + sizeof(Header), sz); } }
int CSkeleton::CBone::ReadXMLAttrib( TiXmlElement* poElement ) { if( !poElement ) return 0; TiXmlAttribute* poAttrib = poElement->FirstAttribute(); int i = 0; int iVal; double dVal; static char acName_[256]; while( poAttrib ) { const char *pcName = poAttrib->Name(); if( !strcmp( pcName, "name" ) ) { SKELETON_STR_COPY( acName_, sizeof(acName_), poAttrib->Value() ); SKELETON_LOG( "name: %s\n", acName_ ); m_oName = acName_; } else if( !strcmp( pcName, "parent_index" ) ) { if( poAttrib->QueryIntValue( &iVal ) == TIXML_SUCCESS ) { SKELETON_LOG( "%s: %d\n", poAttrib->Name(), iVal ); m_iIndexParent = iVal; } } else if( !strcmp( pcName, "head_x" ) ) { if( poAttrib->QueryDoubleValue( &dVal ) == TIXML_SUCCESS ) { SKELETON_LOG( "%s: %f\n", poAttrib->Name(), float( dVal ) ); m_oHead[0] = float( dVal ); } } else if( !strcmp( pcName, "head_y" ) ) { if( poAttrib->QueryDoubleValue( &dVal ) == TIXML_SUCCESS ) { SKELETON_LOG( "%s: %f\n", poAttrib->Name(), float( dVal ) ); m_oHead[1] = float( dVal ); } } else if( !strcmp( pcName, "head_z" ) ) { if( poAttrib->QueryDoubleValue( &dVal ) == TIXML_SUCCESS ) { SKELETON_LOG( "%s: %f\n", poAttrib->Name(), float( dVal ) ); m_oHead[2] = float( dVal ); } } else if( !strcmp( pcName, "tail_x" ) ) { if( poAttrib->QueryDoubleValue( &dVal ) == TIXML_SUCCESS ) { SKELETON_LOG( "%s: %f\n", poAttrib->Name(), float( dVal ) ); m_oTail[0] = float( dVal ); } } else if( !strcmp( pcName, "tail_y" ) ) { if( poAttrib->QueryDoubleValue( &dVal ) == TIXML_SUCCESS ) { SKELETON_LOG( "%s: %f\n", poAttrib->Name(), float( dVal ) ); m_oTail[1] = float( dVal ); } } else if( !strcmp( pcName, "tail_z" ) ) { if( poAttrib->QueryDoubleValue( &dVal ) == TIXML_SUCCESS ) { SKELETON_LOG( "%s: %f\n", poAttrib->Name(), float( dVal ) ); m_oTail[2] = float( dVal ); } } #define CHECK_M( i, j ) \ else if( !strcmp( pcName, "m" #i #j ) ) \ { \ if( poAttrib->QueryDoubleValue( &dVal ) == TIXML_SUCCESS ) \ { \ SKELETON_LOG( "%s: %f\n", poAttrib->Name(), float( dVal ) ); \ m_oTransform( i, j ) = float( dVal ); \ } \ } CHECK_M( 0, 0 ) CHECK_M( 1, 0 ) CHECK_M( 2, 0 ) CHECK_M( 3, 0 ) CHECK_M( 0, 1 ) CHECK_M( 1, 1 ) CHECK_M( 2, 1 ) CHECK_M( 3, 1 ) CHECK_M( 0, 2 ) CHECK_M( 1, 2 ) CHECK_M( 2, 2 ) CHECK_M( 3, 2 ) CHECK_M( 0, 3 ) CHECK_M( 1, 3 ) CHECK_M( 2, 3 ) CHECK_M( 3, 3 ) #undef CHECK_M else { //m_bError = true; SKELETON_ERR( "undefined attribute, %s\n", pcName ); } i++; poAttrib = poAttrib->Next(); } return i; }
iFlagBase::iFlagBase(const char *name, const char *desc) : m_name(name), m_desc(desc), m_set(false) { CHECK_M(RegisterFlag(this), "Flag --" << getName() << " already registered!"); }