mirror of https://github.com/KLayout/klayout.git
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:
parent
7031c6faf4
commit
1555daf68c
|
|
@ -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) { }
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -501,7 +501,7 @@ protected:
|
|||
|
||||
unsigned int children () const
|
||||
{
|
||||
return m_children.size ();
|
||||
return (unsigned int) m_children.size ();
|
||||
}
|
||||
|
||||
CompoundRegionOperationNode *child (unsigned int index);
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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)))));
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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),
|
||||
|
|
|
|||
|
|
@ -29,15 +29,15 @@
|
|||
namespace db
|
||||
{
|
||||
|
||||
PCellVariant::PCellVariant (db::cell_index_type ci, db::Layout &layout, size_t pcell_id, const pcell_parameters_type ¶meters)
|
||||
PCellVariant::PCellVariant (db::cell_index_type ci, db::Layout &layout, db::pcell_id_type pcell_id, const pcell_parameters_type ¶meters)
|
||||
: 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 *
|
||||
|
|
|
|||
|
|
@ -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 ¶meters);
|
||||
PCellVariant (db::cell_index_type ci, db::Layout &layout, db::pcell_id_type pcell_id, const pcell_parameters_type ¶meters);
|
||||
|
||||
/**
|
||||
* @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;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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")));
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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 ();
|
||||
|
|
|
|||
|
|
@ -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 ());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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 ());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
||||
|
|
|
|||
|
|
@ -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 ()), "");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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 ());
|
||||
|
|
|
|||
|
|
@ -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 ()) {
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue