savannah-register-public
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Savannah-register-public] [task #4921] Submission of idioskopos


From: Rick L. Vinyard Jr.
Subject: [Savannah-register-public] [task #4921] Submission of idioskopos
Date: Sat, 12 Nov 2005 12:12:37 -0700
User-agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8) Gecko/20051106 Fedora/1.5-0.5.0.rc1 Firefox/1.5

URL:
  <http://savannah.nongnu.org/task/?func=detailitem&item_id=4921>

                 Summary: Submission of idioskopos
                 Project: Savannah Administration
            Submitted by: rvinyard
            Submitted on: Sat 11/12/05 at 12:12
         Should Start On: Sat 11/12/05 at 00:00
   Should be Finished on: Tue 11/22/05 at 00:00
                Category: Project Approval
                Priority: 5 - Normal
                  Status: None
                 Privacy: Public
             Assigned to: None
        Percent Complete: 0%
             Open/Closed: Open
                  Effort: 0.00

    _______________________________________________________

Details:

A new project has been registered at Savannah 
The project account will remain inactive until a site admin approve or
discard the registration.


######### REGISTRATION ADMINISTRATION #########

While this item will be useful to track the registration process, approving
or discarding the registration must be done using the specific "Group
Administration" page, accessible only to site administrators, effectively
logged as site administrators (superuser):

  <https://savannah.nongnu.org/admin/groupedit.php?group_id=8116>


######### REGISTRATION DETAILS ######### 

Full Name:
----------
  idioskopos

System Group Name:
-----------------
  idioskopos

Type:
-----
  non-GNU software &amp; documentation

License:
-------- 
  GNU Lesser General Public License

Description:
------------
  idioskopos (Greek: idio- inward, within, private; -skopos look, aim,
target) is a C++ library that adds object reflect and introspection.

The code is available at:
  http://miskatonic.cs.nmsu.edu/idioskopos-0.1.0.tar.gz

There are numerous libraries that provide object introspection, but are
generally part of some framework such as:
 * Glib's gobject
 * Gtkmm's Glib::Object
 * VCF's object class
 * QT's introspective objects
 * PUMA
 * OpenC++
 * et. al.

There is at least one other library that provides property management;
libpropc++ at:
  http://ex-code.com/propcpp/

Support for object reflection and introspection are 'hot' topics in C++ and
already have some groups pushing for inclusion in the next ANSI/ISO C++
standard.

So, why does the world need yet another library supporting reflection and
introspection? It probably doesn't, but the reason I decided to create one
anyway was due to the fact that the current approaches suffer from one of the
following issues:
  1. Dependency on a large framework; to use the introspective features of a
library like gobject or VCF's objects you need to add a dependency on the
framework, which can be quite large.
  2. Preprocessors; approaches such as that taken by QT and PUMA require a
preprocessor that adds reflection support. This is probably the cleanest
approach, but IMHO not as simple and straightforward if all you want is basic
reflection/introspection support.
  3. Not free; If you take a look at the libpropc++ library the code is
released under the LGPL, but the author's statements regarding what the LGPL
means are wrong. I have observed several interactions with the author and
developers on the Gtkmm lists and he obviously doesn't get the meaning of
free as in freedom. Thus, the library is released under the LGPL, but it has
a 'cloud' about it that keeps others from using it.

So, without further ado, the idioskopos library is based heavily on the
approach taken in Gtkmm to wrap the gobject interface. However, it is a
standalone library and depends only on libsigc++ and boost.

The following illustrates the code necessary to create reflective properties:
a static property x and a dynamic property y.

class Example: public Object {
public:
  Example::Example();
  Property<double> x;
};

Example::Example():
  x(*this, "x", 2.0),
{
  create_property<double>("y", 1.0);
}

Introspection can be accomplished with:
  cout << "All properties in class Example:\n";
  for (i = e.get_properties().begin(); i != e.get_properties().end(); i++)
    cout << "\t" << i->first << "\tType: " << i->second->type().name() <<
std::endl;




Other Software Required:
------------------------
  These are pretty normally found in all distributions, but I'll list them
for completeness:

libsigc++
boost shared pointer (now actually in gcc)








    _______________________________________________________

Reply to this item at:

  <http://savannah.nongnu.org/task/?func=detailitem&item_id=4921>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.nongnu.org/





reply via email to

[Prev in Thread] Current Thread [Next in Thread]