Menu

Tree [d46ac3] master /
 History

HTTPS access


File Date Author Commit
 docs 2017-06-26 giampa giampa [08d15a] first import
 examples 2016-07-26 Giampiero Gabbiani Giampiero Gabbiani [12cf71] fixed wrong partial specialization for introspe...
 include 2017-06-26 giampa giampa [955433] added Object::~Object(), commented Object::leav...
 other 2017-06-26 giampa giampa [d46ac3] first import
 platforms 2016-03-12 Giampiero Gabbiani Giampiero Gabbiani [bbbf39] internal project layout changes and optimizations
 src 2017-06-26 giampa giampa [728828] added leave() method and static proxy for both ...
 unit-tests 2017-06-26 giampa giampa [6b0154] various changes
 .gitignore 2016-04-03 Giampiero Gabbiani Giampiero Gabbiani [e6a6f2] ignored unit tests configuration header target
 .gitmodules 2017-06-25 giampa giampa [eef236] submodules added
 CMakeLists.txt 2017-06-26 giampa giampa [af9e70] temporary add of trace
 ChangeLog.md 2017-02-16 Giampiero Gabbiani Giampiero Gabbiani [33de73] bugfix documented
 INSTALL.md 2016-01-23 Giampiero Gabbiani Giampiero Gabbiani [24e8cf] many documentation changes
 README.md 2016-04-28 Giampiero Gabbiani Giampiero Gabbiani [22a04a] added paragraph about duck typing
 TODO.md 2016-01-23 Giampiero Gabbiani Giampiero Gabbiani [24e8cf] many documentation changes
 introspective.ebuild 2016-04-06 Giampiero Gabbiani Giampiero Gabbiani [2082fd] fixed url
 project.env.in 2016-03-16 Giampiero Gabbiani Giampiero Gabbiani [9093d0] added cmake-sdk sub module, minor internal changes
 src-list.txt 2016-04-03 Giampiero Gabbiani Giampiero Gabbiani [5ec68d] major review of the library

Read Me

Introspective

Introspective is a C++11 framework for runtime object introspection. Similarly
to other programming languages such as Java, everything is an object, also
classes. More exactly an Introspective class is an instance of the C++ class
introspective::Class.

Features:

  • Message passing OO: method triggering is performed through messages
    (introspective::Message), passed a dispatcher. Entities able to dispatch
    messages are called receiver (introspective::Message::Receiver).
    There are basically three types of receivers:
    • class: instances of introspective::Class;
    • object: instance of introspective::Object;
    • proxy: instances of classes defined inside the introspective::proxy
      namespace;
  • object oriented: opposed to classic OO languages (like C++ or Java)
    with Introspective also Objects can define, override or hide methods
    and properties in runtime;
  • Introspection: every class or object has the ability to examine its own
    type, methods and properties in runtime;
  • dynamic inheritance: at any time a class (instances of introspective::Class)
    or objects (instances of introspective::Object) can modify their inheritance
    hierarchy modifying on the fly their OO behaviour;
  • runtime class / object definition: every class and / or object can change
    its behaviour by adding / removing properties and methods in runtime;
  • duck typing: message passing, full object orientation and introspection
    simplify the duck typing mechanism;
  • DSL: by C++ operator overloading the base syntax for a minimal domain
    specific language
    has been introduced;

Prerequisites:

Distro supported:

  • Centos-7
  • Debian-8
  • Gentoo
  • Fedora-23
  • OpenSUSE Leap 42.1
  • Ubuntu 14