Removed shared_ptr shim

Since C++17 is now the default mosh version, remove the shared_ptr
shim in favor of std::shared_ptr.
This commit is contained in:
Alex Chernyakhovsky
2023-07-30 17:20:33 -04:00
committed by Alex Chernyakhovsky
parent 2224465cc9
commit 38c84a9330
13 changed files with 65 additions and 157 deletions
+3 -2
View File
@@ -33,12 +33,13 @@
#include <termios.h>
#include <unistd.h>
#include <memory>
#include "src/statesync/user.h"
#include "src/util/fatal_assert.h"
#include "src/util/pty_compat.h"
#include "src/network/networktransport-impl.h"
#include "src/util/select.h"
#include "src/util/shared.h"
using namespace Network;
@@ -50,7 +51,7 @@ int main( int argc, char *argv[] )
char *port;
UserStream me, remote;
typedef shared::shared_ptr<Transport<UserStream, UserStream> > NetworkPointer;
using NetworkPointer = std::shared_ptr<Transport<UserStream, UserStream>>;
Transport<UserStream, UserStream> *raw_n;
try {
if ( argc > 1 ) {
+1 -1
View File
@@ -424,7 +424,7 @@ static int run_server( const char *desired_ip, const char *desired_port,
/* open network */
Network::UserStream blank;
typedef shared::shared_ptr<ServerConnection> NetworkPointer;
using NetworkPointer = std::shared_ptr<ServerConnection>;
NetworkPointer network( new ServerConnection( terminal, blank, desired_ip, desired_port ) );
network->set_verbose( verbose );
+2 -2
View File
@@ -36,11 +36,11 @@
#include <sys/ioctl.h>
#include <termios.h>
#include <string>
#include <memory>
#include "src/statesync/completeterminal.h"
#include "src/network/networktransport.h"
#include "src/statesync/user.h"
#include "src/util/shared.h"
#include "src/frontend/terminaloverlay.h"
class STMClient {
@@ -62,7 +62,7 @@ private:
Terminal::Framebuffer local_framebuffer, new_state;
Overlay::OverlayManager overlays;
typedef Network::Transport< Network::UserStream, Terminal::Complete > NetworkType;
typedef shared::shared_ptr< NetworkType > NetworkPointer;
using NetworkPointer = std::shared_ptr<NetworkType>;
NetworkPointer network;
Terminal::Display display;
+2 -3
View File
@@ -33,11 +33,10 @@
#ifndef PARSERACTION_HPP
#define PARSERACTION_HPP
#include <memory>
#include <string>
#include <vector>
#include "src/util/shared.h"
namespace Terminal {
class Emulator;
}
@@ -59,7 +58,7 @@ namespace Parser {
virtual ~Action() {};
};
typedef shared::shared_ptr<Action> ActionPointer;
using ActionPointer = std::shared_ptr<Action>;
typedef std::vector<ActionPointer> Actions;
class Ignore : public Action {
+39 -38
View File
@@ -30,9 +30,10 @@
also delete it here.
*/
#include <memory>
#include "parserstate.h"
#include "parserstatefamily.h"
#include "src/util/shared.h"
using namespace Parser;
@@ -42,7 +43,7 @@ Transition State::anywhere_rule( wchar_t ch ) const
|| ((0x80 <= ch) && (ch <= 0x8F))
|| ((0x91 <= ch) && (ch <= 0x97))
|| (ch == 0x99) || (ch == 0x9A) ) {
return Transition( shared::make_shared<Execute>(), &family->s_Ground );
return Transition( std::make_shared<Execute>(), &family->s_Ground );
} else if ( ch == 0x9C ) {
return Transition( &family->s_Ground );
} else if ( ch == 0x1B ) {
@@ -93,11 +94,11 @@ static bool GLGR ( wchar_t ch )
Transition Ground::input_state_rule( wchar_t ch ) const
{
if ( C0_prime( ch ) ) {
return Transition( shared::make_shared< Execute >() );
return Transition( std::make_shared<Execute>() );
}
if ( GLGR( ch ) ) {
return Transition( shared::make_shared< Print >() );
return Transition( std::make_shared<Print>() );
}
return Transition();
@@ -105,17 +106,17 @@ Transition Ground::input_state_rule( wchar_t ch ) const
ActionPointer Escape::enter( void ) const
{
return shared::make_shared< Clear >();
return std::make_shared<Clear>();
}
Transition Escape::input_state_rule( wchar_t ch ) const
{
if ( C0_prime( ch ) ) {
return Transition( shared::make_shared< Execute >() );
return Transition( std::make_shared<Execute>() );
}
if ( (0x20 <= ch) && (ch <= 0x2F) ) {
return Transition( shared::make_shared< Collect >(), &family->s_Escape_Intermediate );
return Transition( std::make_shared<Collect>(), &family->s_Escape_Intermediate );
}
if ( ( (0x30 <= ch) && (ch <= 0x4F) )
@@ -124,7 +125,7 @@ Transition Escape::input_state_rule( wchar_t ch ) const
|| ( ch == 0x5A )
|| ( ch == 0x5C )
|| ( (0x60 <= ch) && (ch <= 0x7E) ) ) {
return Transition( shared::make_shared< Esc_Dispatch >(), &family->s_Ground );
return Transition( std::make_shared<Esc_Dispatch>(), &family->s_Ground );
}
if ( ch == 0x5B ) {
@@ -149,15 +150,15 @@ Transition Escape::input_state_rule( wchar_t ch ) const
Transition Escape_Intermediate::input_state_rule( wchar_t ch ) const
{
if ( C0_prime( ch ) ) {
return Transition( shared::make_shared< Execute >() );
return Transition( std::make_shared<Execute>() );
}
if ( (0x20 <= ch) && (ch <= 0x2F) ) {
return Transition( shared::make_shared< Collect >() );
return Transition( std::make_shared<Collect>() );
}
if ( (0x30 <= ch) && (ch <= 0x7E) ) {
return Transition( shared::make_shared< Esc_Dispatch >(), &family->s_Ground );
return Transition( std::make_shared<Esc_Dispatch>(), &family->s_Ground );
}
return Transition();
@@ -165,26 +166,26 @@ Transition Escape_Intermediate::input_state_rule( wchar_t ch ) const
ActionPointer CSI_Entry::enter( void ) const
{
return shared::make_shared< Clear >();
return std::make_shared<Clear>();
}
Transition CSI_Entry::input_state_rule( wchar_t ch ) const
{
if ( C0_prime( ch ) ) {
return Transition( shared::make_shared< Execute >() );
return Transition( std::make_shared<Execute>() );
}
if ( (0x40 <= ch) && (ch <= 0x7E) ) {
return Transition( shared::make_shared< CSI_Dispatch >(), &family->s_Ground );
return Transition( std::make_shared<CSI_Dispatch>(), &family->s_Ground );
}
if ( ( (0x30 <= ch) && (ch <= 0x39) )
|| ( ch == 0x3B ) ) {
return Transition( shared::make_shared< Param >(), &family->s_CSI_Param );
return Transition( std::make_shared<Param>(), &family->s_CSI_Param );
}
if ( (0x3C <= ch) && (ch <= 0x3F) ) {
return Transition( shared::make_shared< Collect >(), &family->s_CSI_Param );
return Transition( std::make_shared<Collect>(), &family->s_CSI_Param );
}
if ( ch == 0x3A ) {
@@ -192,7 +193,7 @@ Transition CSI_Entry::input_state_rule( wchar_t ch ) const
}
if ( (0x20 <= ch) && (ch <= 0x2F) ) {
return Transition( shared::make_shared< Collect >(), &family->s_CSI_Intermediate );
return Transition( std::make_shared<Collect>(), &family->s_CSI_Intermediate );
}
return Transition();
@@ -201,11 +202,11 @@ Transition CSI_Entry::input_state_rule( wchar_t ch ) const
Transition CSI_Param::input_state_rule( wchar_t ch ) const
{
if ( C0_prime( ch ) ) {
return Transition( shared::make_shared< Execute >() );
return Transition( std::make_shared<Execute>() );
}
if ( ( (0x30 <= ch) && (ch <= 0x39) ) || ( ch == 0x3B ) ) {
return Transition( shared::make_shared< Param >() );
return Transition( std::make_shared<Param>() );
}
if ( ( ch == 0x3A ) || ( (0x3C <= ch) && (ch <= 0x3F) ) ) {
@@ -213,11 +214,11 @@ Transition CSI_Param::input_state_rule( wchar_t ch ) const
}
if ( (0x20 <= ch) && (ch <= 0x2F) ) {
return Transition( shared::make_shared< Collect >(), &family->s_CSI_Intermediate );
return Transition( std::make_shared<Collect>(), &family->s_CSI_Intermediate );
}
if ( (0x40 <= ch) && (ch <= 0x7E) ) {
return Transition( shared::make_shared< CSI_Dispatch >(), &family->s_Ground );
return Transition( std::make_shared<CSI_Dispatch>(), &family->s_Ground );
}
return Transition();
@@ -226,15 +227,15 @@ Transition CSI_Param::input_state_rule( wchar_t ch ) const
Transition CSI_Intermediate::input_state_rule( wchar_t ch ) const
{
if ( C0_prime( ch ) ) {
return Transition( shared::make_shared< Execute >() );
return Transition( std::make_shared<Execute>() );
}
if ( (0x20 <= ch) && (ch <= 0x2F) ) {
return Transition( shared::make_shared< Collect >() );
return Transition( std::make_shared<Collect>() );
}
if ( (0x40 <= ch) && (ch <= 0x7E) ) {
return Transition( shared::make_shared< CSI_Dispatch >(), &family->s_Ground );
return Transition( std::make_shared<CSI_Dispatch>(), &family->s_Ground );
}
if ( (0x30 <= ch) && (ch <= 0x3F) ) {
@@ -247,7 +248,7 @@ Transition CSI_Intermediate::input_state_rule( wchar_t ch ) const
Transition CSI_Ignore::input_state_rule( wchar_t ch ) const
{
if ( C0_prime( ch ) ) {
return Transition( shared::make_shared< Execute >() );
return Transition( std::make_shared<Execute>() );
}
if ( (0x40 <= ch) && (ch <= 0x7E) ) {
@@ -259,13 +260,13 @@ Transition CSI_Ignore::input_state_rule( wchar_t ch ) const
ActionPointer DCS_Entry::enter( void ) const
{
return shared::make_shared< Clear >();
return std::make_shared<Clear>();
}
Transition DCS_Entry::input_state_rule( wchar_t ch ) const
{
if ( (0x20 <= ch) && (ch <= 0x2F) ) {
return Transition( shared::make_shared< Collect >(), &family->s_DCS_Intermediate );
return Transition( std::make_shared<Collect>(), &family->s_DCS_Intermediate );
}
if ( ch == 0x3A ) {
@@ -273,11 +274,11 @@ Transition DCS_Entry::input_state_rule( wchar_t ch ) const
}
if ( ( (0x30 <= ch) && (ch <= 0x39) ) || ( ch == 0x3B ) ) {
return Transition( shared::make_shared< Param >(), &family->s_DCS_Param );
return Transition( std::make_shared<Param>(), &family->s_DCS_Param );
}
if ( (0x3C <= ch) && (ch <= 0x3F) ) {
return Transition( shared::make_shared< Collect >(), &family->s_DCS_Param );
return Transition( std::make_shared<Collect>(), &family->s_DCS_Param );
}
if ( (0x40 <= ch) && (ch <= 0x7E) ) {
@@ -290,7 +291,7 @@ Transition DCS_Entry::input_state_rule( wchar_t ch ) const
Transition DCS_Param::input_state_rule( wchar_t ch ) const
{
if ( ( (0x30 <= ch) && (ch <= 0x39) ) || ( ch == 0x3B ) ) {
return Transition( shared::make_shared< Param >() );
return Transition( std::make_shared<Param>() );
}
if ( ( ch == 0x3A ) || ( (0x3C <= ch) && (ch <= 0x3F) ) ) {
@@ -298,7 +299,7 @@ Transition DCS_Param::input_state_rule( wchar_t ch ) const
}
if ( (0x20 <= ch) && (ch <= 0x2F) ) {
return Transition( shared::make_shared< Collect >(), &family->s_DCS_Intermediate );
return Transition( std::make_shared<Collect>(), &family->s_DCS_Intermediate );
}
if ( (0x40 <= ch) && (ch <= 0x7E) ) {
@@ -311,7 +312,7 @@ Transition DCS_Param::input_state_rule( wchar_t ch ) const
Transition DCS_Intermediate::input_state_rule( wchar_t ch ) const
{
if ( (0x20 <= ch) && (ch <= 0x2F) ) {
return Transition( shared::make_shared< Collect >() );
return Transition( std::make_shared<Collect>() );
}
if ( (0x40 <= ch) && (ch <= 0x7E) ) {
@@ -327,18 +328,18 @@ Transition DCS_Intermediate::input_state_rule( wchar_t ch ) const
ActionPointer DCS_Passthrough::enter( void ) const
{
return shared::make_shared< Hook >();
return std::make_shared<Hook>();
}
ActionPointer DCS_Passthrough::exit( void ) const
{
return shared::make_shared< Unhook >();
return std::make_shared<Unhook>();
}
Transition DCS_Passthrough::input_state_rule( wchar_t ch ) const
{
if ( C0_prime( ch ) || ( (0x20 <= ch) && (ch <= 0x7E) ) ) {
return Transition( shared::make_shared< Put >() );
return Transition( std::make_shared<Put>() );
}
if ( ch == 0x9C ) {
@@ -359,18 +360,18 @@ Transition DCS_Ignore::input_state_rule( wchar_t ch ) const
ActionPointer OSC_String::enter( void ) const
{
return shared::make_shared< OSC_Start >();
return std::make_shared<OSC_Start>();
}
ActionPointer OSC_String::exit( void ) const
{
return shared::make_shared< OSC_End >();
return std::make_shared<OSC_End>();
}
Transition OSC_String::input_state_rule( wchar_t ch ) const
{
if ( (0x20 <= ch) && (ch <= 0x7F) ) {
return Transition( shared::make_shared< OSC_Put >() );
return Transition( std::make_shared<OSC_Put>() );
}
if ( (ch == 0x9C) || (ch == 0x07) ) { /* 0x07 is xterm non-ANSI variant */
+2 -2
View File
@@ -50,8 +50,8 @@ namespace Parser {
public:
void setfamily( StateFamily *s_family ) { family = s_family; }
Transition input( wchar_t ch ) const;
virtual ActionPointer enter( void ) const { return shared::make_shared< Ignore >(); }
virtual ActionPointer exit( void ) const { return shared::make_shared< Ignore >(); }
virtual ActionPointer enter( void ) const { return std::make_shared<Ignore>(); }
virtual ActionPointer exit( void ) const { return std::make_shared<Ignore>(); }
State() : family( NULL ) {};
virtual ~State() {};
+2 -2
View File
@@ -58,14 +58,14 @@ namespace Parser {
return *this;
}
Transition( ActionPointer s_action=shared::make_shared< Ignore >(), State *s_next_state=NULL )
Transition( ActionPointer s_action = std::make_shared<Ignore>(), State *s_next_state=NULL )
: action( s_action ), next_state( s_next_state )
{}
// This is only ever used in the 1-argument form;
// we use this instead of an initializer to
// tell Coverity the object never owns *action.
Transition( State *s_next_state, ActionPointer s_action=shared::make_shared< Ignore >() )
Transition( State *s_next_state, ActionPointer s_action = std::make_shared<Ignore>() )
: action( s_action ), next_state( s_next_state )
{}
};
+3 -3
View File
@@ -160,7 +160,7 @@ std::string Display::new_frame( bool initialized, const Framebuffer &last, const
/* Extend rows if we've gotten a resize and new is wider than old */
if ( frame.last_frame.ds.get_width() < f.ds.get_width() ) {
for ( Framebuffer::rows_type::iterator p = rows.begin(); p != rows.end(); p++ ) {
*p = make_shared<Row>( **p );
*p = std::make_shared<Row>( **p );
(*p)->cells.resize( f.ds.get_width(), Cell( f.ds.get_background_rendition() ) );
}
}
@@ -169,7 +169,7 @@ std::string Display::new_frame( bool initialized, const Framebuffer &last, const
// get a proper blank row
const size_t w = f.ds.get_width();
const color_type c = 0;
blank_row = make_shared<Row>( w, c );
blank_row = std::make_shared<Row>( w, c );
rows.resize( f.ds.get_height(), blank_row );
}
@@ -215,7 +215,7 @@ std::string Display::new_frame( bool initialized, const Framebuffer &last, const
if ( blank_row.get() == NULL ) {
const size_t w = f.ds.get_width();
const color_type c = 0;
blank_row = make_shared<Row>( w, c );
blank_row = std::make_shared<Row>( w, c );
}
frame.update_rendition( initial_rendition(), true );
+2 -2
View File
@@ -84,7 +84,7 @@ Framebuffer::Framebuffer( int s_width, int s_height )
assert( s_width > 0 );
const size_t w = s_width;
const color_type c = 0;
rows = rows_type(s_height, row_pointer(make_shared<Row>( w, c )));
rows = rows_type(s_height, row_pointer(std::make_shared<Row>( w, c )));
}
Framebuffer::Framebuffer( const Framebuffer &other )
@@ -417,7 +417,7 @@ void Framebuffer::resize( int s_width, int s_height )
for ( rows_type::iterator i = rows.begin();
i != rows.end() && *i != blankrow;
i++ ) {
*i = make_shared<Row>( **i );
*i = std::make_shared<Row>( **i );
(*i)->set_wrap( false );
(*i)->cells.resize( s_width, Cell( ds.get_background_rendition() ) );
}
+6 -9
View File
@@ -37,18 +37,15 @@
#include <limits.h>
#include <stdint.h>
#include <vector>
#include <deque>
#include <string>
#include <list>
#include "src/util/shared.h"
#include <memory>
#include <string>
#include <vector>
/* Terminal framebuffer */
namespace Terminal {
using shared::shared_ptr;
using shared::make_shared;
typedef uint32_t color_type;
class Renditions {
@@ -372,7 +369,7 @@ namespace Terminal {
// * If no row is shared, the frame has not been modified.
public:
typedef std::vector<wchar_t> title_type;
typedef shared_ptr<Row> row_pointer;
typedef std::shared_ptr<Row> row_pointer;
typedef std::vector<row_pointer> rows_type; /* can be either std::vector or std::deque */
private:
@@ -387,7 +384,7 @@ namespace Terminal {
{
const size_t w = ds.get_width();
const color_type c = ds.get_background_rendition();
return make_shared<Row>( w, c );
return std::make_shared<Row>( w, c );
}
public:
@@ -422,7 +419,7 @@ namespace Terminal {
row_pointer &mutable_row = rows.at( row );
// If the row is shared, copy it.
if (!mutable_row.unique()) {
mutable_row = make_shared<Row>( *mutable_row );
mutable_row = std::make_shared<Row>( *mutable_row );
}
return mutable_row.get();
}
+2 -2
View File
@@ -40,13 +40,13 @@
#include <stdint.h>
#include <string.h>
#include <stdlib.h>
#include <memory>
#include "src/crypto/ae.h"
#include "src/crypto/crypto.h"
#include "src/crypto/prng.h"
#include "src/util/fatal_assert.h"
#include "test_utils.h"
#include "src/util/shared.h"
#define KEY_LEN 16
#define NONCE_LEN 12
@@ -61,7 +61,7 @@ static bool equal( const AlignedBuffer &a, const AlignedBuffer &b ) {
&& !memcmp( a.data(), b.data(), a.len() );
}
typedef shared::shared_ptr< AlignedBuffer > AlignedPointer;
using AlignedPointer = std::shared_ptr<AlignedBuffer>;
static AlignedBuffer *get_ctx( const AlignedBuffer &key ) {
AlignedBuffer *ctx_buf = new AlignedBuffer( ae_ctx_sizeof() );
+1 -1
View File
@@ -2,4 +2,4 @@ AM_CXXFLAGS = -I$(top_srcdir)/ $(WARNING_CXXFLAGS) $(PICKY_CXXFLAGS) $(HARDEN_CF
noinst_LIBRARIES = libmoshutil.a
libmoshutil_a_SOURCES = locale_utils.cc locale_utils.h swrite.cc swrite.h dos_assert.h fatal_assert.h select.h select.cc timestamp.h timestamp.cc pty_compat.cc pty_compat.h shared.h
libmoshutil_a_SOURCES = locale_utils.cc locale_utils.h swrite.cc swrite.h dos_assert.h fatal_assert.h select.h select.cc timestamp.h timestamp.cc pty_compat.cc pty_compat.h
-90
View File
@@ -1,90 +0,0 @@
/*
Mosh: the mobile shell
Copyright 2012 Keith Winstein
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
In addition, as a special exception, the copyright holders give
permission to link the code of portions of this program with the
OpenSSL library under certain conditions as described in each
individual source file, and distribute linked combinations including
the two.
You must obey the GNU General Public License in all respects for all
of the code used other than OpenSSL. If you modify file(s) with this
exception, you may extend this exception to your version of the
file(s), but you are not obligated to do so. If you do not wish to do
so, delete this exception statement from your version. If you delete
this exception statement from all source files in the program, then
also delete it here.
*/
#ifndef SHARED_HPP
#define SHARED_HPP
#include "src/include/config.h"
#ifdef HAVE_MEMORY
#include <memory>
#endif
#ifdef HAVE_TR1_MEMORY
#include <tr1/memory>
#endif
namespace shared {
#ifdef HAVE_STD_SHARED_PTR
using std::shared_ptr;
using std::make_shared;
#else
#ifdef HAVE_STD_TR1_SHARED_PTR
using std::tr1::shared_ptr;
// make_shared emulation.
template<typename Tp>
inline shared_ptr<Tp>
make_shared()
{
return shared_ptr<Tp>(new Tp());
}
template<typename Tp, typename A1>
inline shared_ptr<Tp>
make_shared(const A1& a1)
{
return shared_ptr<Tp>(new Tp(a1));
}
template<typename Tp, typename A1, typename A2>
inline shared_ptr<Tp>
make_shared(const A1& a1, const A2& a2)
{
return shared_ptr<Tp>(new Tp(a1, a2));
}
template<typename Tp, typename A1, typename A2, typename A3>
inline shared_ptr<Tp>
make_shared(const A1& a1, const A2& a2, const A3& a3)
{
return shared_ptr<Tp>(new Tp(a1, a2, a3));
}
template<typename Tp, typename A1, typename A2, typename A3, typename A4>
inline shared_ptr<Tp>
make_shared(const A1& a1, const A2& a2, const A3& a3, const A4& a4)
{
return shared_ptr<Tp>(new Tp(a1, a2, a3, a4));
}
#else
#error Need a shared_ptr class. Try Boost::TR1.
#endif
#endif
}
#endif