From 0bfaf034ee13ca3bc1850f348a2e1f3c03489206 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Thu, 19 Mar 2015 00:01:17 -0700 Subject: [PATCH] use emplace_back to construct objects in place --- src/glyphs.cpp | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/glyphs.cpp b/src/glyphs.cpp index d132346..300bc60 100644 --- a/src/glyphs.cpp +++ b/src/glyphs.cpp @@ -174,10 +174,12 @@ struct FaceMetadata { std::string family_name; std::string style_name; std::vector points; - FaceMetadata() : - family_name(), - style_name(), - points() {} + FaceMetadata(std::string const& _family_name, + std::string const& _style_name, + std::vector && _points) : + family_name(_family_name), + style_name(_style_name), + points(std::move(_points)) {} }; struct LoadBaton { @@ -233,7 +235,6 @@ void LoadAsync(uv_work_t* req) { baton->error_name = std::string("could not open Face") + baton->file_name; return; } - FaceMetadata face; std::vector points; if (num_faces == 0) num_faces = ft_face->num_faces; @@ -242,18 +243,13 @@ void LoadAsync(uv_work_t* req) { charcode = FT_Get_First_Char(ft_face, &gindex); while (gindex != 0) { charcode = FT_Get_Next_Char(ft_face, charcode, &gindex); - if (charcode != 0) points.push_back(charcode); + if (charcode != 0) points.emplace_back(charcode); } std::sort(points.begin(), points.end()); auto last = std::unique(points.begin(), points.end()); points.erase(last, points.end()); - - face.points = std::move(points); - face.family_name = ft_face->family_name; - face.style_name = ft_face->style_name; - - baton->faces.push_back(std::move(face)); + baton->faces.emplace_back(ft_face->family_name,ft_face->style_name,std::move(points)); if (ft_face) { FT_Done_Face(ft_face); }