refactor StringFixedSize, auto str = String64()() use form was not doing copy elision
This commit is contained in:
parent
f6a040c27b
commit
b4e44bc8ed
|
|
@ -37,8 +37,11 @@ public:
|
|||
StringFixedSize() {
|
||||
clear();
|
||||
}
|
||||
explicit StringFixedSize( const char* string ){
|
||||
operator()( string );
|
||||
template<typename ... Args, typename = std::enable_if_t<sizeof...(Args) != 1 || //prevent override of copy constructor
|
||||
!std::is_same_v<StringFixedSize,
|
||||
std::decay_t<std::tuple_element_t<0, std::tuple<Args...>>>>>>
|
||||
explicit StringFixedSize( Args&& ... args ){
|
||||
operator()( std::forward<Args>( args ) ... );
|
||||
}
|
||||
std::size_t write( const char* buffer, std::size_t length ) override {
|
||||
if( m_length + length < SIZE ){
|
||||
|
|
@ -53,15 +56,14 @@ public:
|
|||
return length;
|
||||
}
|
||||
|
||||
StringFixedSize& operator=( const char* string ){
|
||||
return operator()( string );
|
||||
void operator=( const char* string ){
|
||||
operator()( string );
|
||||
}
|
||||
|
||||
template<typename ... Args>
|
||||
StringFixedSize& operator()( Args&& ... args ){
|
||||
void operator()( Args&& ... args ){
|
||||
clear();
|
||||
( *this << ... << std::forward<Args>( args ) );
|
||||
return *this;
|
||||
}
|
||||
|
||||
operator const char*() const {
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ static void ProcessAdvertisements() {
|
|||
bspAdvertisement_t& ad = bspAds.emplace_back();
|
||||
ad.cellId = e.intForKey( "cellId" );
|
||||
// copy and clear the rest of memory // check for overflow by String64
|
||||
const auto modelKey = String64()( e.valueForKey( "model" ) );
|
||||
const String64 modelKey( e.valueForKey( "model" ) );
|
||||
strncpy( ad.model, modelKey, sizeof( ad.model ) );
|
||||
|
||||
const bspModel_t& adModel = bspModels[atoi( modelKey.c_str() + 1 )];
|
||||
|
|
@ -396,8 +396,7 @@ static void ProcessWorldModel( entity_t& e ){
|
|||
|
||||
/* ydnar: fog hull */
|
||||
if ( e.read_keyvalue( value, "_foghull" ) ) {
|
||||
const auto shader = String64()( "textures/", value );
|
||||
MakeFogHullSurfs( shader );
|
||||
MakeFogHullSurfs( String64( "textures/", value ) );
|
||||
}
|
||||
|
||||
/* ydnar: bug 645: do flares for lights */
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ static void SwapBSPFile(){
|
|||
const shaderInfo_t *si = ShaderInfoForShader( shader.shader );
|
||||
if ( !strEmptyOrNull( si->remapShader ) ) {
|
||||
// copy and clear the rest of memory // check for overflow by String64
|
||||
const auto remap = String64()( si->remapShader );
|
||||
const String64 remap( si->remapShader );
|
||||
strncpy( shader.shader, remap, sizeof( shader.shader ) );
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1002,7 +1002,7 @@ static void ParseRawBrush( bool onlyLights ){
|
|||
|
||||
/* read shader name */
|
||||
GetToken( false );
|
||||
const auto shader = String64()( "textures/", token );
|
||||
const String64 shader( "textures/", token );
|
||||
|
||||
/* set default flags and values */
|
||||
shaderInfo_t *si = onlyLights? &shaderInfo[ 0 ]
|
||||
|
|
@ -1440,7 +1440,7 @@ static void LoadEntityIndexMap( entity_t& e ){
|
|||
if ( space == NULL ) {
|
||||
space = offset + strlen( offset );
|
||||
}
|
||||
im->offsets[ i ] = atof( String64()( StringRange( offset, space ) ) );
|
||||
im->offsets[ i ] = atof( String64( StringRange( offset, space ) ) );
|
||||
if ( space == NULL ) {
|
||||
break;
|
||||
}
|
||||
|
|
@ -1576,7 +1576,7 @@ static bool ParseMapEntity( bool onlyLights, bool noCollapseGroups, int mapEntit
|
|||
const char *value;
|
||||
if( mapEnt.read_keyvalue( value, "_celshader" ) ||
|
||||
entities[ 0 ].read_keyvalue( value, "_celshader" ) ){
|
||||
celShader = ShaderInfoForShader( String64()( "textures/", value ) );
|
||||
celShader = ShaderInfoForShader( String64( "textures/", value ) );
|
||||
Sys_Printf( "Entity %d (%s) has cel shader %s\n", mapEnt.mapEntityNum, classname, celShader->shader.c_str() );
|
||||
}
|
||||
else{
|
||||
|
|
|
|||
|
|
@ -1127,14 +1127,7 @@ void InsertModel( const char *name, const char *skin, int frame, const Matrix4&
|
|||
|
||||
/* shader renaming for sof2 */
|
||||
if ( renameModelShaders ) {
|
||||
auto shaderName = String64()( PathExtensionless( picoShaderName ) );
|
||||
if ( spawnFlags & eRMG_BSP ) {
|
||||
shaderName << "_RMG_BSP";
|
||||
}
|
||||
else{
|
||||
shaderName << "_BSP";
|
||||
}
|
||||
si = ShaderInfoForShader( shaderName );
|
||||
si = ShaderInfoForShader( String64( PathExtensionless( picoShaderName ), ( spawnFlags & eRMG_BSP )? "_RMG_BSP" : "_BSP" ) );
|
||||
}
|
||||
else{
|
||||
si = ShaderInfoForShader( picoShaderName );
|
||||
|
|
@ -1382,7 +1375,7 @@ void AddTriangleModels( entity_t& eparent ){
|
|||
shaderInfo_t *celShader;
|
||||
if( const char *value; e.read_keyvalue( value, "_celshader" ) ||
|
||||
entities[ 0 ].read_keyvalue( value, "_celshader" ) ){
|
||||
celShader = ShaderInfoForShader( String64()( "textures/", value ) );
|
||||
celShader = ShaderInfoForShader( String64( "textures/", value ) );
|
||||
}
|
||||
else{
|
||||
celShader = globalCelShader.empty() ? NULL : ShaderInfoForShader( globalCelShader );
|
||||
|
|
|
|||
|
|
@ -206,7 +206,7 @@ void ParsePatch( bool onlyLights, entity_t& mapEnt, int mapPrimitiveNum ){
|
|||
|
||||
/* get shader name */
|
||||
GetToken( true );
|
||||
const auto shader = String64()( "textures/", token );
|
||||
const String64 shader( "textures/", token );
|
||||
|
||||
Parse1DMatrix( 5, info );
|
||||
m.width = info[0];
|
||||
|
|
|
|||
|
|
@ -759,7 +759,7 @@ shaderInfo_t *ShaderInfoForShader( const char *shaderName ){
|
|||
}
|
||||
|
||||
/* strip off extension */
|
||||
auto shader = String64()( PathExtensionless( shaderName ) );
|
||||
String64 shader( PathExtensionless( shaderName ) );
|
||||
|
||||
/* search for it */
|
||||
deprecationDepth = 0;
|
||||
|
|
|
|||
|
|
@ -667,8 +667,8 @@ static shaderInfo_t *GetIndexedShader( const shaderInfo_t *parent, const indexMa
|
|||
|
||||
/* get the shader */
|
||||
shaderInfo_t *si = ShaderInfoForShader( ( minShaderIndex == maxShaderIndex )?
|
||||
String64()( "textures/", im->shader.c_str(), '_', int(maxShaderIndex) ):
|
||||
String64()( "textures/", im->shader.c_str(), '_', int(minShaderIndex), "to", int(maxShaderIndex) ) );
|
||||
String64( "textures/", im->shader, '_', int(maxShaderIndex) ):
|
||||
String64( "textures/", im->shader, '_', int(minShaderIndex), "to", int(maxShaderIndex) ) );
|
||||
|
||||
/* inherit a few things from parent shader */
|
||||
if ( parent->globalTexture ) {
|
||||
|
|
@ -759,10 +759,10 @@ mapDrawSurface_t *DrawSurfaceForSide( const entity_t& e, const brush_t& b, const
|
|||
}
|
||||
|
||||
/* ydnar: sky hack/fix for GL_CLAMP borders on ati cards */
|
||||
if ( skyFixHack && !strEmpty( si->skyParmsImageBase ) ) {
|
||||
if ( skyFixHack && !si->skyParmsImageBase.empty() ) {
|
||||
//% Sys_FPrintf( SYS_VRB, "Enabling sky hack for shader %s using env %s\n", si->shader, si->skyParmsImageBase );
|
||||
for( const auto suffix : { "_lf", "_rt", "_ft", "_bk", "_up", "_dn" } )
|
||||
DrawSurfaceForShader( String64()( si->skyParmsImageBase, suffix ) );
|
||||
DrawSurfaceForShader( String64( si->skyParmsImageBase, suffix ) );
|
||||
}
|
||||
|
||||
/* ydnar: gs mods */
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user