Size: a a a

2020 March 30

S

Serjone in Delphi & Lazarus
Alexey Kulakov
извините за оффтоп, но тут явно есть те, кто знает нормально С++. что означает конструкция "std::vector<tl2datnode*> children;" - массив, связанный список или просто коллекцию?
источник

AK

Alexey Kulakov in Delphi & Lazarus
в Сишном объекте отдельно поля шли для разных типов данных. А я вот думаю, может, union сделать? в смысле, засунуть в record под case, чтоб место не жрали, ибо только один тип значения может быть. В С классическом же это допустимо.
источник

AK

Alexey Kulakov in Delphi & Lazarus
Серж, я не люблю языки с С-синтаксисом. если мне надо на паскаль перевести, я могу и без Сишных чатов это сделать, ибо редко возникают по-настоящему сложные вопросы
источник

AK

Alexey Kulakov in Delphi & Lazarus
ради одного стороннего вопроса в чат чужой лезть, если можно быстро получить ответ тут - нелогично
источник

AK

Alexey Kulakov in Delphi & Lazarus
...итак, для мультиплатформенности и мультиязычности в длл, имеет ли смысл объединять различные возможнные типы в записи или всё же лучше (или строго надо) разбивать их на отдельные поля?
источник

М

Михаил in Delphi & Lazarus
Мультиплатформенность и длл? 🤔
источник

AK

Alexey Kulakov in Delphi & Lazarus
а что такого?
источник

AK

Alexey Kulakov in Delphi & Lazarus
*.so -  не динамически загружаемые библиотеки?
источник

М

Михаил in Delphi & Lazarus
Со не длл
источник

AK

Alexey Kulakov in Delphi & Lazarus
ладно, перефразирую. мне надо написать код для библиотеки, который может компилиться и для винды, и для линукса.
источник

AK

Alexey Kulakov in Delphi & Lazarus
так проще?
источник

GB

George Bakhtadze in Delphi & Lazarus
Alexey Kulakov
...итак, для мультиплатформенности и мультиязычности в длл, имеет ли смысл объединять различные возможнные типы в записи или всё же лучше (или строго надо) разбивать их на отдельные поля?
а этот тип в интерфейсе будет, или только внутри?
источник

AK

Alexey Kulakov in Delphi & Lazarus
видимо, его надо будет возвращать из функций. но думаю, удаление оставлю  всё же тоже через функцию.
источник

AK

Alexey Kulakov in Delphi & Lazarus
просто пока получается (если оптимизировать расход) такое:
type
 PATL2Node = ^TATL2Node;
 PTL2Node = ^TTL2Node;
 TTL2Node = record
   name: pchar;
   case nodetype:integer of
     0{group}: (
       parent  : PTL2Node;
       children: PATL2Node; // can't use array directly coz need to keep constant size
       );
     1{boolean}  : (b:bytebool);
     2{note},
     3{translate},
     4{string}   : (s:pchar);
     5{integer}  : (i:int32);
     6{uinteger} : (u:uint32);
     7{integer64}: (l:int64);
     8{float}    : (f:single);
     9{double}   : (d:double);
 end;
 TATL2Node = array [0..16383] of TTL2Node;
источник

AK

Alexey Kulakov in Delphi & Lazarus
это набросок, конечно
источник

AK

Alexey Kulakov in Delphi & Lazarus
вот что было в оригинале:
class DLL_EXPORT tl2datnode
{
   public:
       // members
       tl2datnode* parent;
       std::vector<tl2datnode*> children;
       tl2datnode* partner;
       unsigned int nodetype; // 0=root, 1=group, 2=groupclose, 3=property
       unsigned int indentlevel;
       unsigned int propertytype; // 0=none, 1='INTEGER', 2='FLOAT', 3='DOUBLE', 4='UNSIGNED INT', 5='STRING', 6='BOOL', 7='INTEGER64', 8='TRANSLATE', 9='NOTE', 10=unknown
       int intvalue;
       float floatvalue;
       double doublevalue;
       unsigned int uintvalue;
       long long int int64value;
       bool boolvalue;
       wxString name;
       wxString stringvalue;
источник

GB

George Bakhtadze in Delphi & Lazarus
вариантные записи не во всех языках есть, так что ради совместимости наверное имеет смысл оставить как в оригинале
источник

AK

Alexey Kulakov in Delphi & Lazarus
вот отсутствие во многих и смущает, но пока что ориентация именно на паскаль (для меня), С, С++ и видимо дотнет
источник

AK

Alexey Kulakov in Delphi & Lazarus
Питон пока что можно не затрагивать. да и переделать вариантную в обычную недолго же
источник

AK

Alexey Kulakov in Delphi & Lazarus
в С-варианте же прокатит? (насчёт шарпа не в курсе, правда)
источник