Adjustments for Windows build with MSVC2019 (VC 16.10.31419.357)

1. removed some duplicate symbol linker error
2. removed many compiler warnings (mainly size_t/int compatibility)
3. consistent definition of db::pcell_id_type
4. removed UTF-8 character codes from string constants
5. float constants for float arguments
6. timeout in tlHttp when no openssl lib is found (instead of stalling
   app)
This commit is contained in:
klayoutmatthias 2021-07-17 00:20:55 +02:00
parent 7031c6faf4
commit 1555daf68c
41 changed files with 3216 additions and 3200 deletions

View File

@ -114,13 +114,15 @@ bool bs_boxes_overlap (const Box &b1, const Box &b2, typename Box::coord_type en
template <class Obj, class Prop>
struct box_scanner_receiver
{
virtual ~box_scanner_receiver () { }
/**
* @brief Indicates that the given object is no longer used
*
* The finish method is called when an object is no longer in the queue and can be
* discarded.
*/
void finish (const Obj * /*obj*/, const Prop & /*prop*/) { }
virtual void finish (const Obj * /*obj*/, const Prop & /*prop*/) { }
/**
* @brief Callback for an interaction of o1 with o2.
@ -128,7 +130,7 @@ struct box_scanner_receiver
* This method is called when the object o1 interacts with o2 within the current
* definition.
*/
void add (const Obj * /*o1*/, const Prop & /*p1*/, const Obj * /*o2*/, const Prop & /*p2*/) { }
virtual void add (const Obj * /*o1*/, const Prop & /*p1*/, const Obj * /*o2*/, const Prop & /*p2*/) { }
/**
* @brief Indicates whether the scanner may stop
@ -136,14 +138,14 @@ struct box_scanner_receiver
* The scanner will stop if this method returns true. This feature can be used to
* terminate the scan process early if the outcome is known.
*/
bool stop () const { return false; }
virtual bool stop () const { return false; }
/**
* @brief Pre-scanning operations
*
* This method is called before the scanning starts.
*/
void initialize () { }
virtual void initialize () { }
/**
* @brief Post-scanning operations
@ -151,7 +153,7 @@ struct box_scanner_receiver
* This method is called after the scan has finished (without exception). The argument is the
* return value (false if "stop" stopped the process).
*/
void finalize (bool) { }
virtual void finalize (bool) { }
};
/**

View File

@ -81,7 +81,7 @@ CommonReader::cell_by_name (const std::string &cn) const
if (iname != m_name_map.end ()) {
return std::make_pair (true, iname->second.second);
} else {
return std::make_pair (false, size_t (0));
return std::make_pair (false, db::cell_index_type (0));
}
}
@ -126,7 +126,7 @@ CommonReader::cell_by_id (size_t id) const
if (iid != m_id_map.end ()) {
return std::make_pair (true, iid->second.second);
} else {
return std::make_pair (false, size_t (0));
return std::make_pair (false, db::cell_index_type (0));
}
}

View File

@ -981,9 +981,9 @@ CompoundRegionLogicalCaseSelectOperationNode::result_type () const
ResultType result = Region;
for (size_t i = 1; i < children (); i += 2) {
if (i == 1) {
result = child (i)->result_type ();
result = child ((unsigned int) i)->result_type ();
} else {
tl_assert (result == child (i)->result_type ());
tl_assert (result == child ((unsigned int) i)->result_type ());
}
}
return result;
@ -1136,9 +1136,9 @@ CompoundRegionJoinOperationNode::result_type () const
ResultType result = Region;
for (size_t i = 0; i < children (); ++i) {
if (i == 0) {
result = child (i)->result_type ();
result = child ((unsigned int) i)->result_type ();
} else {
tl_assert (result == child (i)->result_type ());
tl_assert (result == child ((unsigned int) i)->result_type ());
}
}
return result;

View File

@ -501,7 +501,7 @@ protected:
unsigned int children () const
{
return m_children.size ();
return (unsigned int) m_children.size ();
}
CompoundRegionOperationNode *child (unsigned int index);

View File

@ -218,7 +218,7 @@ void Device::init_terminal_routes ()
size_t n = device_class ()->terminal_definitions ().size ();
for (size_t i = 0; i < n; ++i) {
m_reconnected_terminals [i].push_back (DeviceReconnectedTerminal (0, i));
m_reconnected_terminals [(unsigned int) i].push_back (DeviceReconnectedTerminal (0, (unsigned int) i));
}
}

View File

@ -137,8 +137,8 @@ public:
for (unsigned int ir = 0; ir < (unsigned int) std::abs (rows_per_columns); ++ir) {
db::Vector dr = m_row_step * long ((rows_per_columns > 0 ? -(ir + 1) : ir) + m_row_steps);
db::Vector dc = m_column_step * long ((columns_per_rows > 0 ? -(ic + 1) : ic) + m_column_steps);
db::Vector dr = m_row_step * long ((rows_per_columns > 0 ? -int (ir + 1) : ir) + m_row_steps);
db::Vector dc = m_column_step * long ((columns_per_rows > 0 ? -int (ic + 1) : ic) + m_column_steps);
am.reinitialize (db::Point (fp_left, fp_bottom) + dr + dc, db::Vector (ddx, ddy), m_dim, nx, ny);
@ -183,7 +183,7 @@ public:
unsigned int area_maps () const
{
return m_area_maps.size ();
return (unsigned int) m_area_maps.size ();
}
const db::AreaMap &area_map (unsigned int i) const
@ -308,7 +308,7 @@ fill_polygon_impl (db::Cell *cell, const db::Polygon &fp0, db::cell_index_type f
if (remaining_parts) {
if (am1.d ().y () == am1.p ().y ()) {
filled_regions.push_back (db::Polygon (db::Box (db::Point (), db::Point (am1.p ().x (), am1.p ().y () * (jj - j))).moved (kernel_origin + p0)));
filled_regions.push_back (db::Polygon (db::Box (db::Point (), db::Point (am1.p ().x (), am1.p ().y () * db::Coord (jj - j))).moved (kernel_origin + p0)));
} else {
for (size_t k = 0; k < jj - j; ++k) {
filled_regions.push_back (db::Polygon (db::Box (db::Point (), db::Point () + am1.p ()).moved (kernel_origin + p0 + db::Vector (0, am1.d ().y () * db::Coord (k)))));

View File

@ -466,7 +466,7 @@ subtract (std::unordered_set<db::PolygonRef> &res, const std::unordered_set<db::
template <class TS, class TI>
static void
subtract (std::unordered_set<db::Edge> &res, const std::unordered_set<db::Edge> &other, db::Layout *layout, const db::local_processor<TS, TI, db::Edge> *proc)
subtract (std::unordered_set<db::Edge> &res, const std::unordered_set<db::Edge> &other, db::Layout * /*layout*/, const db::local_processor<TS, TI, db::Edge> *proc)
{
if (other.empty ()) {
return;

View File

@ -514,7 +514,6 @@ private:
void next () const;
size_t get_progress () const;
void compute_contexts (db::local_processor_contexts<TS, TI, TR> &contexts, db::local_processor_cell_context<TS, TI, TR> *parent_context, db::Cell *subject_parent, db::Cell *subject_cell, const db::ICplxTrans &subject_cell_inst, const db::Cell *intruder_cell, const typename local_processor_cell_contexts<TS, TI, TR>::context_key_type &intruders, db::Coord dist) const;
void do_compute_contexts (db::local_processor_cell_context<TS, TI, TR> *cell_context, const db::local_processor_contexts<TS, TI, TR> &contexts, db::local_processor_cell_context<TS, TI, TR> *parent_context, db::Cell *subject_parent, db::Cell *subject_cell, const db::ICplxTrans &subject_cell_inst, const db::Cell *intruder_cell, const typename local_processor_cell_contexts<TS, TI, TR>::context_key_type &intruders, db::Coord dist) const;
void issue_compute_contexts (db::local_processor_contexts<TS, TI, TR> &contexts, db::local_processor_cell_context<TS, TI, TR> *parent_context, db::Cell *subject_parent, db::Cell *subject_cell, const db::ICplxTrans &subject_cell_inst, const db::Cell *intruder_cell, typename local_processor_cell_contexts<TS, TI, TR>::context_key_type &intruders, db::Coord dist) const;
void push_results (db::Cell *cell, unsigned int output_layer, const std::unordered_set<TR> &result) const;
void compute_local_cell (const db::local_processor_contexts<TS, TI, TR> &contexts, db::Cell *subject_cell, const db::Cell *intruder_cell, const local_operation<TS, TI, TR> *op, const typename local_processor_cell_contexts<TS, TI, TR>::context_key_type &intruders, std::vector<std::unordered_set<TR> > &result) const;

View File

@ -2253,7 +2253,7 @@ Layout::register_pcell (const std::string &name, pcell_declaration_type *declara
} else {
id = m_pcells.size ();
id = (unsigned int) m_pcells.size ();
m_pcells.push_back (new pcell_header_type (id, name, declaration));
m_pcell_ids.insert (std::make_pair (std::string (name), id));

View File

@ -503,7 +503,7 @@ public:
typedef cell_index_vector::const_iterator top_down_const_iterator;
typedef tl::vector<cell_type *> cell_ptr_vector;
typedef db::properties_id_type properties_id_type;
typedef size_t pcell_id_type;
typedef db::pcell_id_type pcell_id_type;
typedef std::map<std::string, pcell_id_type> pcell_name_map;
typedef pcell_name_map::const_iterator pcell_iterator;
typedef std::map<std::pair<lib_id_type, cell_index_type>, cell_index_type> lib_proxy_map;

View File

@ -797,7 +797,7 @@ LayoutToNetlistStandardReader::read_device (db::Netlist *netlist, db::LayoutToNe
size_t touter_id = terminal_id (dm.second, touter);
size_t tinner_id = terminal_id (dm.second, tinner);
device->reconnected_terminals () [touter_id].push_back (db::DeviceReconnectedTerminal (size_t (device_comp_index), tinner_id));
device->reconnected_terminals () [(unsigned int) touter_id].push_back (db::DeviceReconnectedTerminal (size_t (device_comp_index), (unsigned int) tinner_id));
} else if (test (skeys::terminal_key) || test (lkeys::terminal_key)) {
@ -859,7 +859,7 @@ LayoutToNetlistStandardReader::read_device (db::Netlist *netlist, db::LayoutToNe
br.done ();
if (id > 0) {
map.id2device.insert (std::make_pair (id, device.get ()));
map.id2device.insert (std::make_pair ((unsigned int) id, device.get ()));
}
device->set_trans (trans);
@ -896,7 +896,7 @@ LayoutToNetlistStandardReader::read_device (db::Netlist *netlist, db::LayoutToNe
if (! device->reconnected_terminals ().empty ()) {
const std::vector<db::DeviceReconnectedTerminal> *tr = device->reconnected_terminals_for (tid);
const std::vector<db::DeviceReconnectedTerminal> *tr = device->reconnected_terminals_for ((unsigned int) tid);
if (tr) {
for (std::vector<db::DeviceReconnectedTerminal>::const_iterator i = tr->begin (); i != tr->end (); ++i) {
@ -1040,7 +1040,7 @@ LayoutToNetlistStandardReader::read_subcircuit (db::Netlist *netlist, db::Layout
br.done ();
if (id > 0) {
map.id2subcircuit.insert (std::make_pair (id, subcircuit.get ()));
map.id2subcircuit.insert (std::make_pair ((unsigned int) id, subcircuit.get ()));
}
subcircuit->set_name (name);

View File

@ -160,7 +160,7 @@ static std::string net_id_to_s (const db::Net *net, const std::map<const db::Net
static void build_pin_index_map (const db::Circuit *c, std::map<const db::Pin *, unsigned int> &pin2index)
{
if (c) {
size_t pi = 0;
unsigned int pi = 0;
for (db::Circuit::const_pin_iterator p = c->begin_pins (); p != c->end_pins (); ++p, ++pi) {
pin2index.insert (std::make_pair (p.operator-> (), pi));
}

View File

@ -34,10 +34,9 @@
namespace db
{
typedef size_t pcell_id_type;
typedef std::vector<tl::Variant> pcell_parameters_type;
/**
/**
* @brief A declaration for one PCell parameter
*
* A parameter is described by a name (potentially a variable name), a description text (for a UI label),

View File

@ -29,15 +29,15 @@
namespace db
{
PCellVariant::PCellVariant (db::cell_index_type ci, db::Layout &layout, size_t pcell_id, const pcell_parameters_type &parameters)
PCellVariant::PCellVariant (db::cell_index_type ci, db::Layout &layout, db::pcell_id_type pcell_id, const pcell_parameters_type &parameters)
: Cell (ci, layout), m_parameters (parameters), m_pcell_id (pcell_id), m_registered (false)
{
reregister (); // actually, no "re-register", but the first registration ..
PCellVariant::reregister (); // actually, no "re-register", but the first registration ..
}
PCellVariant::~PCellVariant ()
{
unregister ();
PCellVariant::unregister ();
}
Cell *

View File

@ -49,7 +49,7 @@ public:
*
* The constructor gets the parameters that are unique for this variant.
*/
PCellVariant (db::cell_index_type ci, db::Layout &layout, size_t pcell_id, const pcell_parameters_type &parameters);
PCellVariant (db::cell_index_type ci, db::Layout &layout, db::pcell_id_type pcell_id, const pcell_parameters_type &parameters);
/**
* @brief The destructor
@ -83,7 +83,7 @@ public:
/**
* @brief Get the PCell Id for this variant
*/
size_t pcell_id () const
db::pcell_id_type pcell_id () const
{
return m_pcell_id;
}
@ -151,7 +151,7 @@ protected:
private:
pcell_parameters_type m_parameters;
mutable std::string m_display_name;
size_t m_pcell_id;
db::pcell_id_type m_pcell_id;
bool m_registered;
};

View File

@ -127,7 +127,7 @@ Edge2EdgeCheckBase::finish (const Edge *o, const size_t &p)
if (! any) {
put_negative (*o, p);
put_negative (*o, (int) p);
} else if (! fully_removed) {
@ -146,7 +146,7 @@ Edge2EdgeCheckBase::finish (const Edge *o, const size_t &p)
ec.finish ();
for (std::set<db::Edge>::const_iterator e = partial_edges.begin (); e != partial_edges.end (); ++e) {
put_negative (*e, p);
put_negative (*e, (int) p);
}
}

View File

@ -87,7 +87,7 @@ inline ld_type relative_ld (ld_type ld)
}
}
inline ld_type is_relative_ld (ld_type ld)
inline bool is_relative_ld (ld_type ld)
{
return ld < 0;
}

View File

@ -592,7 +592,7 @@ typedef size_t property_names_id_type;
/**
* @brief The type of the PCell id
*/
typedef size_t pcell_id_type;
typedef unsigned int pcell_id_type;
/**
* @brief The type of the library id

View File

@ -112,7 +112,7 @@ static size_t get_other_terminal_id (const db::DeviceReconnectedTerminal *obj)
return obj->other_terminal_id;
}
static void set_other_terminal_id (db::DeviceReconnectedTerminal *obj, size_t other_terminal_id)
static void set_other_terminal_id (db::DeviceReconnectedTerminal *obj, unsigned int other_terminal_id)
{
obj->other_terminal_id = other_terminal_id;
}
@ -201,7 +201,7 @@ static std::vector<db::DeviceReconnectedTerminal>::const_iterator begin_reconnec
{
static std::vector<db::DeviceReconnectedTerminal> empty;
const std::vector<db::DeviceReconnectedTerminal> *ti = device->reconnected_terminals_for (terminal_id);
const std::vector<db::DeviceReconnectedTerminal> *ti = device->reconnected_terminals_for ((unsigned int) terminal_id);
if (! ti) {
return empty.begin ();
} else {
@ -213,7 +213,7 @@ static std::vector<db::DeviceReconnectedTerminal>::const_iterator end_reconnecte
{
static std::vector<db::DeviceReconnectedTerminal> empty;
const std::vector<db::DeviceReconnectedTerminal> *ti = device->reconnected_terminals_for (terminal_id);
const std::vector<db::DeviceReconnectedTerminal> *ti = device->reconnected_terminals_for ((unsigned int) terminal_id);
if (! ti) {
return empty.end ();
} else {
@ -228,7 +228,7 @@ static void clear_reconnected_terminals (db::Device *device)
static void add_reconnected_terminals (db::Device *device, size_t outer_terminal, const db::DeviceReconnectedTerminal &t)
{
device->reconnected_terminals () [outer_terminal].push_back (t);
device->reconnected_terminals () [(unsigned int) outer_terminal].push_back (t);
}
static std::vector<db::DeviceAbstractRef>::const_iterator begin_other_abstracts (const db::Device *device)

View File

@ -1373,7 +1373,7 @@ TEST(62)
return;
}
size_t text_id = basic_lib->layout ().pcell_by_name ("TEXT").second;
db::pcell_id_type text_id = basic_lib->layout ().pcell_by_name ("TEXT").second;
const db::PCellDeclaration *text_decl = basic_lib->layout ().pcell_declaration (text_id);
std::vector<tl::Variant> values;
@ -1389,7 +1389,7 @@ TEST(62)
}
}
size_t v1t1 = basic_lib->layout ().get_pcell_variant (text_id, values);
db::cell_index_type v1t1 = basic_lib->layout ().get_pcell_variant (text_id, values);
values.clear ();
for (std::vector<db::PCellParameterDeclaration>::const_iterator p = pd.begin (); p != pd.end (); ++p) {
@ -1402,13 +1402,13 @@ TEST(62)
}
}
size_t v1t2 = basic_lib->layout ().get_pcell_variant (text_id, values);
db::cell_index_type v1t2 = basic_lib->layout ().get_pcell_variant (text_id, values);
db::Layout g;
init_layout (g);
size_t c3index = g.get_lib_proxy (basic_lib, db::cell_index_type (v1t1));
size_t c4index = g.get_lib_proxy (basic_lib, db::cell_index_type (v1t2));
size_t c3index = g.get_lib_proxy (basic_lib, v1t1);
size_t c4index = g.get_lib_proxy (basic_lib, v1t2);
db::Cell &c1 (g.cell (g.add_cell ("c1")));
db::Cell &c2 (g.cell (g.add_cell ("c2")));

View File

@ -238,6 +238,8 @@ TEST(1_ReaderBasic)
TEST(1b_ReaderBasicShort)
{
EXPECT_EQ (true, true); // removes "unreferenced _this" compiler warning
db::LayoutToNetlist l2n;
std::string in_path = tl::combine_path (tl::combine_path (tl::testdata (), "algo"), "l2n_reader_in_s.txt");

View File

@ -154,7 +154,7 @@ struct A
return int (x.size ());
}
int a3_ba (const std::vector<char> &x) {
return x.size ();
return int (x.size ());
}
#if defined(HAVE_QT)
int a3_qstr (const QString &x) {

View File

@ -86,13 +86,13 @@ struct cmp_cell_tree_item_vs_name_f
// --------------------------------------------------------------------
// CellTreeItem implementation
CellTreeItem::CellTreeItem (const db::Layout *layout, bool is_pcell, size_t cell_or_pcell_index, bool flat, CellTreeModel::Sorting s)
CellTreeItem::CellTreeItem (const db::Layout *layout, bool is_pcell, unsigned int cell_or_pcell_index, bool flat, CellTreeModel::Sorting s)
: mp_layout (layout), mp_parent (0), m_sorting (s), m_is_pcell (is_pcell),
m_index (0), m_tree_index (0),
m_children (), m_cell_or_pcell_index (cell_or_pcell_index)
{
if (! flat && ! is_pcell) {
m_child_count = int (mp_layout->cell (cell_or_pcell_index).child_cells ());
m_child_count = int (mp_layout->cell (db::cell_index_type (cell_or_pcell_index)).child_cells ());
} else {
m_child_count = 0;
}
@ -143,7 +143,7 @@ CellTreeItem::children () const
int
CellTreeItem::children_in (const std::set<const CellTreeItem *> &sel) const
{
size_t count = 0;
int count = 0;
for (std::vector<CellTreeItem *>::const_iterator c = m_children.begin (); c != m_children.end (); ++c) {
if (sel.find (*c) != sel.end ()) {
++count;
@ -885,7 +885,7 @@ CellTreeModel::rowCount (const QModelIndex &parent) const
}
} else {
if (m_filter_mode && m_is_filtered) {
size_t n = 0;
int n = 0;
for (std::vector <CellTreeItem *>::const_iterator i = m_toplevel.begin (); i != m_toplevel.end (); ++i) {
if (m_visible_cell_set.find (*i) != m_visible_cell_set.end ()) {
++n;

View File

@ -283,7 +283,7 @@ private:
class CellTreeItem
{
public:
CellTreeItem (const db::Layout *layout, bool is_pcell, size_t cell_or_pcell_index, bool flat, CellTreeModel::Sorting sorting);
CellTreeItem (const db::Layout *layout, bool is_pcell, unsigned int cell_or_pcell_index, bool flat, CellTreeModel::Sorting sorting);
~CellTreeItem ();
int children () const;
@ -338,7 +338,7 @@ private:
size_t m_index, m_tree_index;
std::vector<CellTreeItem *> m_children;
int m_child_count;
size_t m_cell_or_pcell_index;
unsigned int m_cell_or_pcell_index;
const char *name () const;
void ensure_children ();

View File

@ -440,7 +440,7 @@ LayerTreeModel::signal_layers_changed ()
for (QModelIndexList::const_iterator i = indexes.begin (); i != indexes.end (); ++i) {
lay::LayerPropertiesConstIterator li = iterator (*i);
if (! li.at_end ()) {
new_indexes.push_back (createIndex (li.child_index (), i->column (), (void *) (li.uint () + m_id_start)));
new_indexes.push_back (createIndex (int (li.child_index ()), i->column (), (void *) (li.uint () + m_id_start)));
} else {
new_indexes.push_back (QModelIndex ());
}

View File

@ -669,8 +669,8 @@ LibrariesView::do_update_content (int lib_index)
mp_cell_lists.pop_back ();
}
for (unsigned int i = imin; i < m_libraries.size () && i < (unsigned int) mp_selector->count () && i <= imax; ++i) {
mp_selector->setItemText (i, tl::to_qstring (display_string (i)));
for (size_t i = imin; i < m_libraries.size () && i < mp_selector->count () && i <= imax; ++i) {
mp_selector->setItemText (int (i), tl::to_qstring (display_string (int (i))));
}
while (mp_selector->count () < int (m_libraries.size ())) {
mp_selector->addItem (tl::to_qstring (display_string (mp_selector->count ())));
@ -687,11 +687,11 @@ LibrariesView::do_update_content (int lib_index)
mp_selector->setCurrentIndex (m_active_index);
mp_selector->setVisible (mp_cell_lists.size () > 1 && ! split_mode);
for (unsigned int i = imin; i < m_libraries.size () && i <= imax; ++i) {
for (size_t i = imin; i < m_libraries.size () && i <= imax; ++i) {
if (m_needs_update [i]) {
mp_cell_list_headers [i]->setText (tl::to_qstring (display_string (i)));
mp_cell_list_headers [i]->setText (tl::to_qstring (display_string (int (i))));
// draw the cells in the level of the current cell,
// add an "above" entry if there is a level above.

View File

@ -257,7 +257,7 @@ static std::string str_from_name (const Obj *obj, bool indicate_empty = false)
}
}
const std::string var_sep (" ");
const std::string var_sep (" \u21D4 ");
template <class Obj>
static std::string str_from_expanded_names (const std::pair<const Obj *, const Obj *> &objs, bool is_single)
@ -3049,7 +3049,7 @@ NetlistBrowserModel::parent (const QModelIndex &index) const
if (! d || ! d->parent ()) {
return QModelIndex ();
} else {
return createIndex (d->parent ()->index (), 0, (void *) d->parent ());
return createIndex ((int) d->parent ()->index (), 0, (void *) d->parent ());
}
}

View File

@ -37,7 +37,7 @@ namespace lay
// ----------------------------------------------------------------------------------
// NetlistBrowserTreeModel implementation
const std::string var_sep (" ");
const std::string var_sep (" \u21D4 ");
static inline size_t pop (void *&idp, size_t n)
{
@ -287,7 +287,7 @@ NetlistBrowserTreeModel::index_from_netpath (const NetlistObjectsPath &path) con
std::pair<const db::Circuit *, const db::Circuit *> cc = mp_indexer->child_circuit_from_index (circuit, n).first;
if (is_compatible (sc, cc)) {
circuit = cc;
idx = index (n, 0, idx);
idx = index (int (n), 0, idx);
break;
}
}
@ -388,7 +388,7 @@ NetlistBrowserTreeModel::index (int row, int column, const QModelIndex &parent)
{
if (! parent.isValid ()) {
return createIndex (row, column, reinterpret_cast<void *> (row + 1));
return createIndex (row, column, reinterpret_cast<void *> (size_t (row + 1)));
} else {

View File

@ -253,7 +253,7 @@ TEST (2)
EXPECT_EQ (model->rowCount (QModelIndex ()), 4);
EXPECT_EQ (tl::to_string (model->data (model->index (0, 0, QModelIndex ()), Qt::UserRole).toString ()), "INV2PAIRX");
EXPECT_EQ (tl::to_string (model->data (model->index (0, 0, QModelIndex ()), Qt::DisplayRole).toString ()), "- INV2PAIRX");
EXPECT_EQ (tl::to_string (model->data (model->index (0, 0, QModelIndex ()), Qt::DisplayRole).toString ()), "- \u21D4 INV2PAIRX");
EXPECT_EQ (tl::to_string (model->data (model->index (0, 2, QModelIndex ()), Qt::DisplayRole).toString ()), "");
EXPECT_EQ (tl::to_string (model->data (model->index (0, 3, QModelIndex ()), Qt::DisplayRole).toString ()), "INV2PAIRX");
EXPECT_EQ (tl::to_string (model->data (model->index (1, 0, QModelIndex ()), Qt::DisplayRole).toString ()), "INV2");
@ -308,7 +308,7 @@ TEST (2)
// first of nets in INV2 circuit
EXPECT_EQ (tl::to_string (model->data (model->index (0, 0, sn_nets), Qt::UserRole).toString ()), "$1|1");
EXPECT_EQ (tl::to_string (model->data (model->index (0, 0, sn_nets), Qt::DisplayRole).toString ()), "$1 1");
EXPECT_EQ (tl::to_string (model->data (model->index (0, 0, sn_nets), Qt::DisplayRole).toString ()), "$1 \u21D4 1");
EXPECT_EQ (tl::to_string (model->data (model->index (0, 2, sn_nets), Qt::DisplayRole).toString ()), "$1 (2)");
EXPECT_EQ (tl::to_string (model->data (model->index (0, 3, sn_nets), Qt::DisplayRole).toString ()), "1 (2)");
@ -349,7 +349,7 @@ TEST (2)
// second of nets in INV2 circuit
EXPECT_EQ (tl::to_string (model->data (model->index (1, 0, sn_nets), Qt::UserRole).toString ()), "BULK|6");
EXPECT_EQ (tl::to_string (model->data (model->index (1, 0, sn_nets), Qt::DisplayRole).toString ()), "BULK 6");
EXPECT_EQ (tl::to_string (model->data (model->index (1, 0, sn_nets), Qt::DisplayRole).toString ()), "BULK \u21D4 6");
EXPECT_EQ (tl::to_string (model->data (model->index (1, 2, sn_nets), Qt::DisplayRole).toString ()), "BULK (2)");
EXPECT_EQ (tl::to_string (model->data (model->index (1, 3, sn_nets), Qt::DisplayRole).toString ()), "6 (2)");
@ -371,13 +371,13 @@ TEST (2)
// first of pins in INV2 circuit
EXPECT_EQ (tl::to_string (model->data (model->index (0, 0, sn_pins), Qt::UserRole).toString ()), "$4");
EXPECT_EQ (tl::to_string (model->data (model->index (0, 0, sn_pins), Qt::DisplayRole).toString ()), "- $4");
EXPECT_EQ (tl::to_string (model->data (model->index (0, 0, sn_pins), Qt::DisplayRole).toString ()), "- \u21D4 $4");
EXPECT_EQ (tl::to_string (model->data (model->index (0, 2, sn_pins), Qt::DisplayRole).toString ()), "");
EXPECT_EQ (tl::to_string (model->data (model->index (0, 3, sn_pins), Qt::DisplayRole).toString ()), "");
// first of nets in INV2 circuit
EXPECT_EQ (tl::to_string (model->data (model->index (0, 0, sn_nets), Qt::UserRole).toString ()), "$4");
EXPECT_EQ (tl::to_string (model->data (model->index (0, 0, sn_nets), Qt::DisplayRole).toString ()), "$4 -");
EXPECT_EQ (tl::to_string (model->data (model->index (0, 0, sn_nets), Qt::DisplayRole).toString ()), "$4 \u21D4 -");
EXPECT_EQ (tl::to_string (model->data (model->index (0, 2, sn_nets), Qt::DisplayRole).toString ()), "$4 (3)");
EXPECT_EQ (tl::to_string (model->data (model->index (0, 3, sn_nets), Qt::DisplayRole).toString ()), "");
@ -401,7 +401,7 @@ TEST (2)
// The first subcircuit
EXPECT_EQ (tl::to_string (model->data (model->index (1, 0, inv2PairNet0Index), Qt::UserRole).toString ()), "OUT|INV2|$1");
EXPECT_EQ (tl::to_string (model->data (model->index (1, 0, inv2PairNet0Index), Qt::DisplayRole).toString ()), "OUT ⇔ - / <a href='int:netlist?path=1'>INV2 ⇔ -</a>");
EXPECT_EQ (tl::to_string (model->data (model->index (1, 0, inv2PairNet0Index), Qt::DisplayRole).toString ()), "OUT \u21D4 - / <a href='int:netlist?path=1'>INV2 \u21D4 -</a>");
EXPECT_EQ (tl::to_string (model->data (model->index (1, 2, inv2PairNet0Index), Qt::DisplayRole).toString ()), "<a href='int:netlist?path=2,2,1'>$1</a>");
EXPECT_EQ (tl::to_string (model->data (model->index (1, 3, inv2PairNet0Index), Qt::DisplayRole).toString ()), "");
}

View File

@ -66,7 +66,7 @@ TEST (2)
// two top circuits
EXPECT_EQ (model->rowCount (QModelIndex ()), 2);
EXPECT_EQ (tl::to_string (model->data (model->index (0, 0, QModelIndex ()), Qt::UserRole).toString ()), "INV2PAIRX");
EXPECT_EQ (tl::to_string (model->data (model->index (0, 0, QModelIndex ()), Qt::DisplayRole).toString ()), "- INV2PAIRX");
EXPECT_EQ (tl::to_string (model->data (model->index (0, 0, QModelIndex ()), Qt::DisplayRole).toString ()), "- \u21D4 INV2PAIRX");
EXPECT_EQ (tl::to_string (model->data (model->index (1, 0, QModelIndex ()), Qt::UserRole).toString ()), "RINGO|RINGO");
EXPECT_EQ (tl::to_string (model->data (model->index (1, 0, QModelIndex ()), Qt::DisplayRole).toString ()), "RINGO");
EXPECT_EQ (model->parent (model->index (0, 0, QModelIndex ())).isValid (), false);
@ -92,9 +92,9 @@ TEST (2)
EXPECT_EQ (model->parent (inv2PairIndex) == ringoIndex, true);
EXPECT_EQ (tl::to_string (model->data (model->index (0, 0, inv2PairIndex), Qt::UserRole).toString ()), "INV2");
EXPECT_EQ (tl::to_string (model->data (model->index (0, 0, inv2PairIndex), Qt::DisplayRole).toString ()), "- INV2");
EXPECT_EQ (tl::to_string (model->data (model->index (0, 0, inv2PairIndex), Qt::DisplayRole).toString ()), "- \u21D4 INV2");
EXPECT_EQ (tl::to_string (model->data (model->index (1, 0, inv2PairIndex), Qt::UserRole).toString ()), "INV2");
EXPECT_EQ (tl::to_string (model->data (model->index (1, 0, inv2PairIndex), Qt::DisplayRole).toString ()), "INV2 -");
EXPECT_EQ (tl::to_string (model->data (model->index (1, 0, inv2PairIndex), Qt::DisplayRole).toString ()), "INV2 \u21D4 -");
EXPECT_EQ (model->hasChildren (model->index (0, 0, inv2PairIndex)), false);
EXPECT_EQ (model->rowCount (model->index (0, 0, inv2PairIndex)), 0);

View File

@ -337,7 +337,7 @@ MAGWriter::write_single_instance (db::cell_index_type ci, db::ICplxTrans trans,
throw tl::Exception (tl::to_string (tr ("Cannot write magnified instance to MAG files: ")) + trans.to_string () + tl::to_string (tr (" of cell ")) + layout.cell_name (ci));
}
int id = (m_cell_id [ci] += 1);
int id = int (m_cell_id [ci] += 1);
std::string cn = layout.cell_name (ci);
os << "use " << make_string (cn) << " " << make_string (cn + "_" + tl::to_string (id)) << "\n";

View File

@ -251,7 +251,7 @@ public:
{
for (iterator c = begin (); c != end (); ++c) {
ctx->glVertexAttribPointer (location, 3, gl_type2enum<Obj> () (), GL_FALSE, 0, c->front ());
ctx->glDrawArrays (mode, 0, c->size () / 3);
ctx->glDrawArrays (mode, 0, GLsizei (c->size () / 3));
}
}

View File

@ -1113,49 +1113,49 @@ D25ViewWidget::paintGL ()
vertexes.clear ();
// A "K" at the front
vertexes.add (-0.8, -0.8, 1.0);
vertexes.add (-0.8, 0.8, 1.0);
vertexes.add (-0.2, 0.8, 1.0);
vertexes.add (-0.8f, -0.8f, 1.0f);
vertexes.add (-0.8f, 0.8f, 1.0f);
vertexes.add (-0.2f, 0.8f, 1.0f);
vertexes.add (-0.8, -0.8, 1.0);
vertexes.add (-0.2, -0.8, 1.0);
vertexes.add (-0.2, 0.8, 1.0);
vertexes.add (-0.8f, -0.8f, 1.0f);
vertexes.add (-0.2f, -0.8f, 1.0f);
vertexes.add (-0.2f, 0.8f, 1.0f);
vertexes.add (0.2, 0.8, 1.0);
vertexes.add (0.8, 0.8, 1.0);
vertexes.add (0.8, 0.6, 1.0);
vertexes.add (0.2f, 0.8f, 1.0f);
vertexes.add (0.8f, 0.8f, 1.0f);
vertexes.add (0.8f, 0.6f, 1.0f);
vertexes.add (0.2, 0.8, 1.0);
vertexes.add (0.8, 0.6, 1.0);
vertexes.add (0.6, 0.4, 1.0);
vertexes.add (0.2f, 0.8f, 1.0f);
vertexes.add (0.8f, 0.6f, 1.0f);
vertexes.add (0.6f, 0.4f, 1.0f);
vertexes.add (-0.2, 0.4, 1.0);
vertexes.add (0.2, 0.8, 1.0);
vertexes.add (0.6, 0.4, 1.0);
vertexes.add (-0.2f, 0.4f, 1.0f);
vertexes.add (0.2f, 0.8f, 1.0f);
vertexes.add (0.6f, 0.4f, 1.0f);
vertexes.add (-0.2, 0.4, 1.0);
vertexes.add (0.6, 0.4, 1.0);
vertexes.add (0.2, 0.0, 1.0);
vertexes.add (-0.2f, 0.4f, 1.0f);
vertexes.add (0.6f, 0.4f, 1.0f);
vertexes.add (0.2f, 0.0f, 1.0f);
vertexes.add (-0.2, 0.4, 1.0);
vertexes.add (0.2, 0.0, 1.0);
vertexes.add (-0.2, -0.4, 1.0);
vertexes.add (-0.2f, 0.4f, 1.0f);
vertexes.add (0.2f, 0.0f, 1.0f);
vertexes.add (-0.2f, -0.4f, 1.0f);
vertexes.add (-0.2, -0.4, 1.0);
vertexes.add (0.6, -0.4, 1.0);
vertexes.add (0.2, -0.0, 1.0);
vertexes.add (-0.2f, -0.4f, 1.0f);
vertexes.add (0.6f, -0.4f, 1.0f);
vertexes.add (0.2f, -0.0f, 1.0f);
vertexes.add (-0.2, -0.4, 1.0);
vertexes.add (0.2, -0.8, 1.0);
vertexes.add (0.6, -0.4, 1.0);
vertexes.add (-0.2f, -0.4f, 1.0f);
vertexes.add (0.2f, -0.8f, 1.0f);
vertexes.add (0.6f, -0.4f, 1.0f);
vertexes.add (0.2, -0.8, 1.0);
vertexes.add (0.8, -0.6, 1.0);
vertexes.add (0.6, -0.4, 1.0);
vertexes.add (0.2f, -0.8f, 1.0f);
vertexes.add (0.8f, -0.6f, 1.0f);
vertexes.add (0.6f, -0.4f, 1.0f);
vertexes.add (0.2, -0.8, 1.0);
vertexes.add (0.8, -0.8, 1.0);
vertexes.add (0.8, -0.6, 1.0);
vertexes.add (0.2f, -0.8f, 1.0f);
vertexes.add (0.8f, -0.8f, 1.0f);
vertexes.add (0.8f, -0.6f, 1.0f);
m_gridplane_program->setUniformValue ("color", foreground_rgb, foreground_rgb, foreground_rgb, 0.3f);

View File

@ -26,6 +26,7 @@
#include "tlStaticObjects.h"
#include "tlDeferredExecution.h"
#include "tlObject.h"
#include "tlTimer.h"
#include <QNetworkAccessManager>
#include <QNetworkReply>
@ -412,12 +413,25 @@ InputHttpStreamPrivateData::read (char *b, size_t n)
issue_request (QUrl (tl::to_qstring (m_url)));
}
// TODO: progress, timeout
while (mp_reply == 0) {
// TODO: progress
tl::Clock start_time = tl::Clock::current ();
double timeout = 10; // TODO: make variable
while (mp_reply == 0 && (tl::Clock::current() - start_time).seconds () < timeout) {
QCoreApplication::processEvents (QEventLoop::ExcludeUserInputEvents);
}
if (mp_reply->error () != QNetworkReply::NoError) {
if (! mp_reply) {
// Reason for this may be HTTPS initialization failure (OpenSSL)
std::string em = tl::to_string (QObject::tr ("Request creation failed"));
if (tl::verbosity() >= 30) {
tl::info << "HTTP request creation failed";
}
throw HttpErrorException (em, 0, m_url);
} else if (mp_reply->error () != QNetworkReply::NoError) {
// throw an error
std::string em = tl::to_string (mp_reply->attribute (QNetworkRequest::HttpReasonPhraseAttribute).toString ());

View File

@ -465,7 +465,7 @@ TextInputStream::read_all (size_t max_count)
const std::string &
TextInputStream::get_line ()
{
int line = m_next_line;
size_t line = m_next_line;
m_line_buffer.clear ();
while (! at_end ()) {

View File

@ -1568,7 +1568,7 @@ Variant::to_qbytearray () const
if (m_type == t_qbytearray) {
return *m_var.m_qbytearray;
} else if (m_type == t_bytearray) {
return QByteArray (&m_var.m_bytearray->front (), m_var.m_bytearray->size ());
return QByteArray (&m_var.m_bytearray->front (), int (m_var.m_bytearray->size ()));
} else if (m_type == t_qstring) {
return m_var.m_qstring->toUtf8 ();
} else if (m_type == t_stdstring) {