Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Checking the API status for the variable “Private d” of the QVariant class

Checking the API status for the variable “Private d” of the QVariant class

Scheduled Pinned Locked Moved Unsolved General and Desktop
apiqvariantprivatedocumentationevolution
31 Posts 5 Posters 7.8k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • C Christian Ehrlicher
    3 Oct 2018, 13:52

    d is protected so no other function will get access to this variable and there is also no need for it. What do you want to achieve?

    E Offline
    E Offline
    elfring
    wrote on 3 Oct 2018, 14:26 last edited by
    #12

    What do you want to achieve?

    The mentioned access specifiers will influence possible software extensions around classes like “QVariant”.

    • I would like to get safe access to the members in the data structure “QVariant::Private”.
    • Would you like to support in-place modification for referenced objects then?
    1 Reply Last reply
    0
    • C Online
      C Online
      Christian Ehrlicher
      Lifetime Qt Champion
      wrote on 3 Oct 2018, 14:30 last edited by Christian Ehrlicher 10 Mar 2018, 14:34
      #13

      You will never get any safe access to QVariant::Private - it's a private class and therefore can change any time. And no I don't need in-place modifications (this was discussed on the mailing list some weeks ago).

      https://lists.qt-project.org/pipermail/interest/2018-June/030216.html

      If you want in-place modifications then store a pointer in QVariant so you can modify the data without accessing the QVariant.

      Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
      Visit the Qt Academy at https://academy.qt.io/catalog

      E 2 Replies Last reply 3 Oct 2018, 15:02
      3
      • C Christian Ehrlicher
        3 Oct 2018, 14:30

        You will never get any safe access to QVariant::Private - it's a private class and therefore can change any time. And no I don't need in-place modifications (this was discussed on the mailing list some weeks ago).

        https://lists.qt-project.org/pipermail/interest/2018-June/030216.html

        If you want in-place modifications then store a pointer in QVariant so you can modify the data without accessing the QVariant.

        E Offline
        E Offline
        elfring
        wrote on 3 Oct 2018, 15:02 last edited by
        #14

        it's a private class

        • Please take another look.
        • The class declaration is using the access specifier “public” for this data structure so far, doesn't it?

        this was discussed on the mailing list some weeks ago

        Thanks for your link of the discussion topic “Why no T& QVariant::value()?”.

        If you want in-place modifications then store a pointer in QVariant …

        I became interested once more to perform some data processing for contents (which could be provided over variables like “QObject *o” and “PrivateShared *shared”) without extra copies.

        1 Reply Last reply
        0
        • V Offline
          V Offline
          VRonin
          wrote on 4 Oct 2018, 07:42 last edited by
          #15

          You are looking for an unnecessary hack to solve a very simple problem.
          If all the classes you have stored in a QVariant are implicitly shared* and the members of those classes are also all implicitly shared* and so on down the object tree, then your get-modify-set is already as efficient as you can get short of memcpy. If you want I can explain in detail why if it's not clear.

          ' * or fundamental types

          "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
          ~Napoleon Bonaparte

          On a crusade to banish setIndexWidget() from the holy land of Qt

          E 1 Reply Last reply 4 Oct 2018, 08:20
          2
          • C Christian Ehrlicher
            3 Oct 2018, 14:30

            You will never get any safe access to QVariant::Private - it's a private class and therefore can change any time. And no I don't need in-place modifications (this was discussed on the mailing list some weeks ago).

            https://lists.qt-project.org/pipermail/interest/2018-June/030216.html

            If you want in-place modifications then store a pointer in QVariant so you can modify the data without accessing the QVariant.

            E Offline
            E Offline
            elfring
            wrote on 4 Oct 2018, 08:05 last edited by
            #16

            You will never get any safe access to QVariant::Private -

            I suggest to reconsider this information. - I guess that we got different expectations for the “safety” of such data structures.

            it's a private class

            The privacy concerns can vary also if you would like to implement possibly useful functionality for this class.

            and therefore can change any time.

            This aspect is reasonable for software evolution in general. I am curious on how change acceptance (or resistance?) will evolve here.

            And no I don't need in-place modifications

            Do other Qt users and software developers would like to apply this technique?

            If you want in-place modifications then store a pointer in QVariant so you can modify the data without accessing the QVariant.

            • This is another useful software design approach. But these pointers should refer to valid data.
            • This class can be treated as a container for a single item (with a varying internal data type). You would occasionally prefer direct write access to the contained element.
              I guess that I am looking again for Qt support of an operation which became standardised as “std::get”.
            V 1 Reply Last reply 4 Oct 2018, 08:49
            0
            • V VRonin
              4 Oct 2018, 07:42

              You are looking for an unnecessary hack to solve a very simple problem.
              If all the classes you have stored in a QVariant are implicitly shared* and the members of those classes are also all implicitly shared* and so on down the object tree, then your get-modify-set is already as efficient as you can get short of memcpy. If you want I can explain in detail why if it's not clear.

              ' * or fundamental types

              E Offline
              E Offline
              elfring
              wrote on 4 Oct 2018, 08:20 last edited by
              #17

              You are looking for an unnecessary hack to solve a very simple problem.

              It can take a while to get acceptance for another useful programming interface, can't it?

              1 Reply Last reply
              0
              • E elfring
                4 Oct 2018, 08:05

                You will never get any safe access to QVariant::Private -

                I suggest to reconsider this information. - I guess that we got different expectations for the “safety” of such data structures.

                it's a private class

                The privacy concerns can vary also if you would like to implement possibly useful functionality for this class.

                and therefore can change any time.

                This aspect is reasonable for software evolution in general. I am curious on how change acceptance (or resistance?) will evolve here.

                And no I don't need in-place modifications

                Do other Qt users and software developers would like to apply this technique?

                If you want in-place modifications then store a pointer in QVariant so you can modify the data without accessing the QVariant.

                • This is another useful software design approach. But these pointers should refer to valid data.
                • This class can be treated as a container for a single item (with a varying internal data type). You would occasionally prefer direct write access to the contained element.
                  I guess that I am looking again for Qt support of an operation which became standardised as “std::get”.
                V Offline
                V Offline
                VRonin
                wrote on 4 Oct 2018, 08:49 last edited by
                #18

                @elfring said in Checking the API status for the variable “Private d” of the QVariant class:

                You would occasionally prefer direct write access to the contained element.

                My point is exactly that implicit sharing removes this need

                It can take a while to get acceptance for another useful programming interface, can't it?

                And it can take even longer if it's not necessary. Move constructor/assignments are another great example of a feature introduced in the standard that is basically useless when dealing with implicitly shared classes as they do it better and seamlessly.

                "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                ~Napoleon Bonaparte

                On a crusade to banish setIndexWidget() from the holy land of Qt

                E 1 Reply Last reply 4 Oct 2018, 09:11
                1
                • V VRonin
                  4 Oct 2018, 08:49

                  @elfring said in Checking the API status for the variable “Private d” of the QVariant class:

                  You would occasionally prefer direct write access to the contained element.

                  My point is exactly that implicit sharing removes this need

                  It can take a while to get acceptance for another useful programming interface, can't it?

                  And it can take even longer if it's not necessary. Move constructor/assignments are another great example of a feature introduced in the standard that is basically useless when dealing with implicitly shared classes as they do it better and seamlessly.

                  E Offline
                  E Offline
                  elfring
                  wrote on 4 Oct 2018, 09:11 last edited by
                  #19

                  My point is exactly that implicit sharing removes this need

                  This technique depends on the management of object reference counters which can be useful functionality and can trigger related software development challenges.

                  And it can take even longer if it's not necessary.

                  Do you care for improvements around generic data processing algorithms?

                  V 1 Reply Last reply 4 Oct 2018, 09:39
                  0
                  • E elfring
                    4 Oct 2018, 09:11

                    My point is exactly that implicit sharing removes this need

                    This technique depends on the management of object reference counters which can be useful functionality and can trigger related software development challenges.

                    And it can take even longer if it's not necessary.

                    Do you care for improvements around generic data processing algorithms?

                    V Offline
                    V Offline
                    VRonin
                    wrote on 4 Oct 2018, 09:39 last edited by
                    #20

                    @elfring said in Checking the API status for the variable “Private d” of the QVariant class:

                    This technique depends on the management of object reference counters

                    Are we complaining about loss of performance due to an additional integer increment and decrement?

                    Do you care for improvements around generic data processing algorithms?

                    Not if they interfere heavily with my objects functionality isolation.


                    Can I ask, really, what is causing your aversion to how QVariant works? The only scenario I'd imagine is if you are developing microsecond-critical applications (like automatic stock trading) but you mention you are using QStandardItemModel and the inefficiencies inside that model implementation dwarf any moot point about optimising the editing of a QVariant

                    "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                    ~Napoleon Bonaparte

                    On a crusade to banish setIndexWidget() from the holy land of Qt

                    E 1 Reply Last reply 4 Oct 2018, 09:55
                    4
                    • V VRonin
                      4 Oct 2018, 09:39

                      @elfring said in Checking the API status for the variable “Private d” of the QVariant class:

                      This technique depends on the management of object reference counters

                      Are we complaining about loss of performance due to an additional integer increment and decrement?

                      Do you care for improvements around generic data processing algorithms?

                      Not if they interfere heavily with my objects functionality isolation.


                      Can I ask, really, what is causing your aversion to how QVariant works? The only scenario I'd imagine is if you are developing microsecond-critical applications (like automatic stock trading) but you mention you are using QStandardItemModel and the inefficiencies inside that model implementation dwarf any moot point about optimising the editing of a QVariant

                      E Offline
                      E Offline
                      elfring
                      wrote on 4 Oct 2018, 09:55 last edited by
                      #21

                      Are we complaining about loss of performance due to an additional integer increment and decrement?

                      This can occasionally happen, can't it?

                      …, what is causing your aversion to how QVariant works?

                      I got special software development opinions. The QVariant class is useful. I am just looking for a few extensions there.

                      … but you mention you are using QStandardItemModel …

                      This is Qt standard software which provides known functionality. I would like to apply it as it would mostly be usual.

                      V 1 Reply Last reply 4 Oct 2018, 10:11
                      0
                      • E elfring
                        4 Oct 2018, 09:55

                        Are we complaining about loss of performance due to an additional integer increment and decrement?

                        This can occasionally happen, can't it?

                        …, what is causing your aversion to how QVariant works?

                        I got special software development opinions. The QVariant class is useful. I am just looking for a few extensions there.

                        … but you mention you are using QStandardItemModel …

                        This is Qt standard software which provides known functionality. I would like to apply it as it would mostly be usual.

                        V Offline
                        V Offline
                        VRonin
                        wrote on 4 Oct 2018, 10:11 last edited by VRonin 10 Apr 2018, 10:12
                        #22

                        @elfring said in Checking the API status for the variable “Private d” of the QVariant class:

                        This can occasionally happen, can't it?

                        Can, should and will.

                        I got special software development opinions.

                        Forcing your opinion on the framework is possible but don't expect it to be easy.
                        Forcing the framework to adopt those opinions is a titanic endeavour.

                        This is Qt standard software which provides known functionality.

                        True and I always suggest to use it as it's super convenient but it must be clear that it's very far from being an implementation of a model optimised for performance

                        "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                        ~Napoleon Bonaparte

                        On a crusade to banish setIndexWidget() from the holy land of Qt

                        E 1 Reply Last reply 16 Oct 2018, 08:36
                        2
                        • V VRonin
                          4 Oct 2018, 10:11

                          @elfring said in Checking the API status for the variable “Private d” of the QVariant class:

                          This can occasionally happen, can't it?

                          Can, should and will.

                          I got special software development opinions.

                          Forcing your opinion on the framework is possible but don't expect it to be easy.
                          Forcing the framework to adopt those opinions is a titanic endeavour.

                          This is Qt standard software which provides known functionality.

                          True and I always suggest to use it as it's super convenient but it must be clear that it's very far from being an implementation of a model optimised for performance

                          E Offline
                          E Offline
                          elfring
                          wrote on 16 Oct 2018, 08:36 last edited by
                          #23

                          … I always suggest to use it as it's super convenient but it must be clear that it's very far from being an implementation of a model optimised for performance

                          Will such information trigger any further software evolution?

                          sierdzioS 1 Reply Last reply 16 Oct 2018, 08:42
                          0
                          • E elfring
                            16 Oct 2018, 08:36

                            … I always suggest to use it as it's super convenient but it must be clear that it's very far from being an implementation of a model optimised for performance

                            Will such information trigger any further software evolution?

                            sierdzioS Offline
                            sierdzioS Offline
                            sierdzio
                            Moderators
                            wrote on 16 Oct 2018, 08:42 last edited by
                            #24

                            @elfring said in Checking the API status for the variable “Private d” of the QVariant class:

                            … I always suggest to use it as it's super convenient but it must be clear that it's very far from being an implementation of a model optimised for performance

                            Will such information trigger any further software evolution?

                            That's unlikely.

                            If you want performance, you have more abstract classes at your disposal, where more coding is necessary (less convenient) but more fine control over details is possible.

                            (Z(:^

                            E 1 Reply Last reply 16 Oct 2018, 08:55
                            0
                            • sierdzioS sierdzio
                              16 Oct 2018, 08:42

                              @elfring said in Checking the API status for the variable “Private d” of the QVariant class:

                              … I always suggest to use it as it's super convenient but it must be clear that it's very far from being an implementation of a model optimised for performance

                              Will such information trigger any further software evolution?

                              That's unlikely.

                              If you want performance, you have more abstract classes at your disposal, where more coding is necessary (less convenient) but more fine control over details is possible.

                              E Offline
                              E Offline
                              elfring
                              wrote on 16 Oct 2018, 08:55 last edited by
                              #25

                              If you want performance, you have more abstract classes at your disposal,

                              How can they really help here?

                              where more coding is necessary (less convenient) but more fine control over details is possible.

                              Can it eventually help more to improve (or extend) also the implementation of the class “QVariant”?

                              sierdzioS 1 Reply Last reply 16 Oct 2018, 08:58
                              0
                              • E elfring
                                16 Oct 2018, 08:55

                                If you want performance, you have more abstract classes at your disposal,

                                How can they really help here?

                                where more coding is necessary (less convenient) but more fine control over details is possible.

                                Can it eventually help more to improve (or extend) also the implementation of the class “QVariant”?

                                sierdzioS Offline
                                sierdzioS Offline
                                sierdzio
                                Moderators
                                wrote on 16 Oct 2018, 08:58 last edited by
                                #26

                                @elfring said in Checking the API status for the variable “Private d” of the QVariant class:

                                If you want performance, you have more abstract classes at your disposal,

                                How can they really help here?

                                where more coding is necessary (less convenient) but more fine control over details is possible.

                                Can it eventually help more to improve (or extend) also the implementation of the class “QVariant”?

                                Feel free to improve QVariant, if you have the means. Qt is an open project, if your contribution is judged beneficial, it will be included upstream.

                                (Z(:^

                                E 1 Reply Last reply 16 Oct 2018, 09:11
                                0
                                • sierdzioS sierdzio
                                  16 Oct 2018, 08:58

                                  @elfring said in Checking the API status for the variable “Private d” of the QVariant class:

                                  If you want performance, you have more abstract classes at your disposal,

                                  How can they really help here?

                                  where more coding is necessary (less convenient) but more fine control over details is possible.

                                  Can it eventually help more to improve (or extend) also the implementation of the class “QVariant”?

                                  Feel free to improve QVariant, if you have the means. Qt is an open project, if your contribution is judged beneficial, it will be included upstream.

                                  E Offline
                                  E Offline
                                  elfring
                                  wrote on 16 Oct 2018, 09:11 last edited by
                                  #27

                                  Feel free to improve QVariant, if you have the means.

                                  How do you think about to support the addition of a member function like “(std::)get”?

                                  sierdzioS 1 Reply Last reply 16 Oct 2018, 09:13
                                  0
                                  • E elfring
                                    16 Oct 2018, 09:11

                                    Feel free to improve QVariant, if you have the means.

                                    How do you think about to support the addition of a member function like “(std::)get”?

                                    sierdzioS Offline
                                    sierdzioS Offline
                                    sierdzio
                                    Moderators
                                    wrote on 16 Oct 2018, 09:13 last edited by
                                    #28

                                    @elfring said in Checking the API status for the variable “Private d” of the QVariant class:

                                    Feel free to improve QVariant, if you have the means.

                                    How do you think about to support the addition of a member function like “(std::)get”?

                                    I'm not a Qt developer. I'm not sure if STD is allowed in public Qt API. And lastly, I don't care about std::get ;-) But I may be alone in this.

                                    (Z(:^

                                    E 1 Reply Last reply 16 Oct 2018, 09:30
                                    0
                                    • sierdzioS sierdzio
                                      16 Oct 2018, 09:13

                                      @elfring said in Checking the API status for the variable “Private d” of the QVariant class:

                                      Feel free to improve QVariant, if you have the means.

                                      How do you think about to support the addition of a member function like “(std::)get”?

                                      I'm not a Qt developer. I'm not sure if STD is allowed in public Qt API. And lastly, I don't care about std::get ;-) But I may be alone in this.

                                      E Offline
                                      E Offline
                                      elfring
                                      wrote on 16 Oct 2018, 09:30 last edited by
                                      #29

                                      And lastly, I don't care about std::get

                                      Will you care more for recent software extensions from the standard “ISO/IEC 14882” in the near future?

                                      sierdzioS 1 Reply Last reply 16 Oct 2018, 09:34
                                      0
                                      • E elfring
                                        16 Oct 2018, 09:30

                                        And lastly, I don't care about std::get

                                        Will you care more for recent software extensions from the standard “ISO/IEC 14882” in the near future?

                                        sierdzioS Offline
                                        sierdzioS Offline
                                        sierdzio
                                        Moderators
                                        wrote on 16 Oct 2018, 09:34 last edited by
                                        #30

                                        @elfring said in Checking the API status for the variable “Private d” of the QVariant class:

                                        And lastly, I don't care about std::get

                                        Will you care more for recent software extensions from the standard “ISO/IEC 14882” in the near future?

                                        What does that have to do with this topic? Are you interviewing me for a job now or something? :-)

                                        Sorry mate but I see no point in continuing this conversation.

                                        (Z(:^

                                        E 1 Reply Last reply 16 Oct 2018, 09:49
                                        2
                                        • sierdzioS sierdzio
                                          16 Oct 2018, 09:34

                                          @elfring said in Checking the API status for the variable “Private d” of the QVariant class:

                                          And lastly, I don't care about std::get

                                          Will you care more for recent software extensions from the standard “ISO/IEC 14882” in the near future?

                                          What does that have to do with this topic? Are you interviewing me for a job now or something? :-)

                                          Sorry mate but I see no point in continuing this conversation.

                                          E Offline
                                          E Offline
                                          elfring
                                          wrote on 16 Oct 2018, 09:49 last edited by
                                          #31

                                          Sorry mate but I see no point in continuing this conversation.

                                          Some software developers agreed that they need the class “variant” for working with type-safe unions. They chose another useful programming interface. These software design decisions might influence other class libraries, don't they?

                                          The Qt software library is using also a variant class for the support of the meta-object protocol, isn't it?

                                          1 Reply Last reply
                                          0

                                          • Login

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt Extensions
                                          • Unsolved