Boost logo

Boost Users :

From: Jeff Garland (jeff_at_[hidden])
Date: 2007-03-15 02:02:38


Christian Henning wrote:
> Hi there,

> I like and use SOCI, as well. Although, today I found out about
> litesql and I like their approach of generating c++ code from xml
> based table definitions. So, I think a cross of both would be nice.

Interesting, but this seems fairly limited to a very specific mapping. What
if I need to change the mapping names or key associations? And, I have come
out of the closet -- I hate xml as a primary 'input language'. If you're
going to all the trouble of writing a generator, why not write one with
simplified data specification language?

Off the top of my head -- imagine something like more like this:

schema example {
   type Mother; //forward declare
   type Father;
   type Office;

   type Role {};
   type Employee : Role {
      //1 to many bi-directional, required
      Office office <-> employees[0..*];
   }
   type Office {
       Employee employees[0..*] <-> office; //needs to match Employee
   }

   type Student : Role {
   }

   type School {
      string name;
   }

   //alternative way to specify a relation outside the type
   //Student will have an optional relation to school
   //School will have 0 to many students
   relation StudentSchool {
       Student.school[0..1] <-> School.students[0..*];
   }

   enum Sex { Male=0, Female=1 };

   //The obvious mapping Table = Person
   type Person {
     string name; //mapped to column name in table Person
     Sex sex;
     integer age = 0;
     //automatically generates Table PersonRoles
     Role roles[0..*]; //unidirectional 0..m relation
     //Generates a field for mother id
     Person mother; //unidirectional required relation
     Person father;
     //automatically generates a join table PersonSiblings
     Person siblings[0..*] <-> siblings[0..*];//bidirectional m-m
   };

}

database Exampledb uses schema example;

> I did my own code generator on top of SOCI but not with all the bang
> that litesql have. The good thing about generators is that you would
> deal with sql statements a lot less, since they can be generated by
> the code generator. The C++ on SOCI generator might be a nice project
> for SoC.

Possibly, but to accept such a project we would be over the edge of *not
boost* since SOCI isn't part of Boost. Yes, the intention is there, but
there's literally hundreds of other proposals where the intention was there.
Getting SOCI Boostified has a direct relation to Boost. All that said, we did
accept a couple projects last year that were more related to 'C++' in general
than Boost, so it might be possible we would be willing to do one of these.

> This reminds me: I always wanted to ask if there is something similar
> to Javaspaces ( http://en.wikipedia.org/wiki/JavaSpace ) out there for
> C++.

The OMG has a specification call Data Local Reconstruction Layer which
provides this sort of functionality in a cross-language/platform manner.
Unfortunately, there's no open source implementation of it and it's incredibly
complex to create one. It's a good idea though...

http://www.omg.org/cgi-bin/doc?formal/07-01-01

Jeff


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net