madf: (Default)
2012-01-15 06:14 pm

C++ plugin infrastructure and type safety - 2

Початок

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

  • C++ не надає ніяких механізмів динамічного завантаження коду;
  • Динамічне завантаження коду можливе у мові C;
  • Для створення екземплярів плаганів використовуються функції-фабрики, а для уравління - абстрактний інтерфейс;
  • Щоб уникнути name mangling функція-фабрика помічається як export "C", при цьому цілком і повністю втрачається інформація про тип функції;
  • Доступ до функції можливий тільки через reinterpret_cast із void *.

Усе це в купі означає що за такого підходу ні про яку type safety і мови бути не може. Виходу немає?

Вихід є! У C++ можливо реалізувати систему плагінів на базі динамічно завантажуваних бібліотек і при цьому настільки типобезпечну, на скільки це взагалі можливо у C++! Як же цього добитись?

Read more... )
madf: (Default)
2012-01-07 04:43 pm

C++ plugin infrastructure and type safety

Про що можуть думати люди напередодні Нового Року? Про випивки, про закуски, про подарунки і ялинки. Про людей в кінці кінців. Я ж, як відомо, схибнутий на строгій типізації, думав про плагіни в C++ і безпеку їх використання з точки зору типів. І надумав страшну річ: C, на відміну від C++, повністю втрачає інформацію про тип функції на етапі компіляції. Але про все по порядку.
Многабукаф )
На цьому покищо зупинюсь, бо букаф і так вийшло забагато. Вихід із цієї скрутної ситуації опишу у наступному пості.
Продовження