Code Monkey home page Code Monkey logo

Comments (14)

GyverLibs avatar GyverLibs commented on July 18, 2024

Первый класс хранит номера пинов в шаблоне, второй - в переменных класса

from encbutton.

XRay3D avatar XRay3D commented on July 18, 2024

От этого большой выигрыш памяти скорости?
Могу попробовать написать обёртку для шаблонного варианта. Но не уверен что это можно сделать в с++11.
Хотя некоторые вещи всё таки компилит с варнингами.

from encbutton.

GyverLibs avatar GyverLibs commented on July 18, 2024

Выигрыш во всём - в шаблоне. Вторая версия класса сделана для удобного задания массива кнопок/энкодеров

from encbutton.

XRay3D avatar XRay3D commented on July 18, 2024

Ок тогда попробую завернуть EncButton.
Если выйдет, то можно попробовать и на другие распространить. Если таковые имеются.

from encbutton.

XRay3D avatar XRay3D commented on July 18, 2024

Похоже что виртуальными кнопками придётся пожертвовать или вынести отдельный класс.

from encbutton.

GyverLibs avatar GyverLibs commented on July 18, 2024

да зачем, и так всё отлично организовано. Сейчас отдельный класс нужен только для массива физических кнопок

from encbutton.

XRay3D avatar XRay3D commented on July 18, 2024

да зачем, и так всё отлично организовано. Сейчас отдельный класс нужен только для массива физических кнопок

Есть возможность всё в один свести.

from encbutton.

XRay3D avatar XRay3D commented on July 18, 2024

https://github.com/XRay3D/EncButton/tree/master
Борщенул с CRTP и выиграл от 50 до 102 байт по флешу, ОЗУ прежнее.
Теперь всё в одном классе.
Хотел ещё и недопустимые для выбранного типа проверки состояний вынести в ButtonImpl и EncoderImpl

from encbutton.

GyverLibs avatar GyverLibs commented on July 18, 2024

Божечки! При всем желании не смогу разобраться, как оно работает)

from encbutton.

XRay3D avatar XRay3D commented on July 18, 2024

Божечки! При всем желании не смогу разобраться, как оно работает)

https://en.cppreference.com/w/cpp/language/partial_specialization
https://en.cppreference.com/w/cpp/language/crtp
https://en.cppreference.com/w/cpp/language/qualified_lookup
https://en.cppreference.com/w/cpp/language/adl

замена макросов дала львиную долю памяти.

   // флаг макро
    void setFlag(Internals::Flags x) { flags |= +(1 << x); }
    void clrFlag(Internals::Flags x) { flags &= ~(1 << x); }
    NODISCARD bool getFlag(Internals::Flags x) { return flags & (1 << x); }

    template <Internals::Flags val>
    NODISCARD bool checkFlag() { return getFlag(val) ? clrFlag(val), true : false; }

from encbutton.

XRay3D avatar XRay3D commented on July 18, 2024

https://en.cppreference.com/w/cpp/language/crtp
Это как "класс из кубиков лего собирать". Только у меня попой к переду работает.

from encbutton.

XRay3D avatar XRay3D commented on July 18, 2024

Брать будете? )) Дизайнил из-за обратной совместимости. Почти. Могу всё комментарииями обмазать.

from encbutton.

XRay3D avatar XRay3D commented on July 18, 2024

https://youtu.be/-QOaUNFGj6E?t=2968

from encbutton.

XRay3D avatar XRay3D commented on July 18, 2024

Божечки! При всем желании не смогу разобраться, как оно работает)

Годнота по теме подъехала.
https://www.youtube.com/watch?v=UrL5gdW2JOM

from encbutton.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.