[boost] Bjam help

2003-08-24 Thread Paul Hamilton
If I have a rule:

exe browser : structureparser.cpp tagreader.cpp
;
How do I then copy the file that was created above somewhere else?

I tried to get "InstallBin" or "InstallInto" to work but I couldn't  
grock it.

I tried this:

InstallBin $(PROJECT_ROOT)/tools/browser/bin/browser.app/Contents/MacOS  
:  
$(PROJECT_ROOT)/tools/browser/bin/browser/darwin/debug/runtime-link- 
dynamic/browser ;
InstallBin $(PROJECT_ROOT)/tools/browser/bin/browser.app/Contents/MacOS  
: browser ;

etc.

Basically I want to copy the exe made in the first rule to another  
place whenever it's built.

Paul.

-
Paul Hamilton
pHamtec P/L - Software Makers
http://www.phamtec.com/
mailto:[EMAIL PROTECTED]
The information transmitted is intended only for the person or entity  
to which it is addressed and may contain confidential and/or privileged  
material. Any review, retransmission, dissemination or other use of, or  
taking of any action in reliance upon, this information by persons or  
entities other than the intended recipient is prohibited. If you  
received this in error, please contact the sender and delete the  
material from any computer.
-

___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Virus defense

2003-08-22 Thread Paul Hamilton

The following simple script reveals 138 e-mail addresses affected in  
this
way (it also picks up on pserver: anonymous connections, since they  
look
like e-mail addresses):
  grep -EIhor --exclude=*.pdf
[EMAIL PROTECTED](\\.[a-zA-Z0-9_+- 
]+\)*
boost | sort | uniq
Or maybe we just ban people from using Windows based systems with boost?

Sorry, couldn't resist.

Paul.

-
Paul Hamilton
pHamtec P/L - Software Makers
http://www.phamtec.com/
mailto:[EMAIL PROTECTED]
The information transmitted is intended only for the person or entity  
to which it is addressed and may contain confidential and/or privileged  
material. Any review, retransmission, dissemination or other use of, or  
taking of any action in reliance upon, this information by persons or  
entities other than the intended recipient is prohibited. If you  
received this in error, please contact the sender and delete the  
material from any computer.
-

___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Build help for OS X

2003-08-20 Thread Paul Hamilton

FWIW: I am using gcc 3.3.1 compiled from scratch with sources from 
gcc.gnu.org
under OS X. This works with full optimization (gcc 3.3 did not).
I am using gcc 3.1 which is the current version with the development 
tools that I have on my Mac OS X. It's good to know what I have in 
store :-)


I didn't see your other messages, but I hope this is relevant: I had 
serious
trouble with multiple initializations of a static variable in the 
Boost.Python
library. Somehow I got it to work after hours of trial-and-error. See
boost/libs/python/src/converter/registry.cpp,
BOOST_PYTHON_CONVERTER_REGISTRY_APPLE_MACH_WORKAROUND.
It could be that the std::cout << std::flush trick is the main trick, 
I am not
sure, I only know it works the way you see it.
Were you getting the "ld: common symbols not allowed with MH_DYLIB 
output format" error?

Paul.

-
Paul Hamilton
pHamtec P/L - Software Makers
http://www.phamtec.com/
mailto:[EMAIL PROTECTED]
The information transmitted is intended only for the person or entity 
to which it is addressed and may contain confidential and/or privileged 
material. Any review, retransmission, dissemination or other use of, or 
taking of any action in reliance upon, this information by persons or 
entities other than the intended recipient is prohibited. If you 
received this in error, please contact the sender and delete the 
material from any computer.
-

___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] feed_args.hpp bug (and patch)

2003-08-20 Thread Paul Hamilton
I have found a bug in boost/format/feed_args.hpp.

The simple declaration of a static variable in a header like this:

static int x;

Is "allowed" in GCC, but in darwin, when you try to compile this code 
into a "dll" (dynamic-linking), then link using ld, ld will complain 
about "common symbols not allowed with MH_DYLIB output format". This 
may also be the general case with all platforms, but I haven't been 
able to test this.

The correct solution for the above case is, in all headers use:

extern int x;

And in a single place in the implementation:

int x = 0;

Of course the code in feed_args.hpp doesn't even really NEED a global 
variable, so as a solution (rather than try to introduce the above 
complicated change just for one platform), I propose that we change the 
code:

	static const std::basic_string emptyStr;

To:

	const std::basic_string emptyStr = "";

Which basically does exactly the same thing.

Here is my patch to feed_args.hpp:

  feed_args.hpp.patch 
*** feed_args.hpp   Wed Aug 20 18:50:10 2003
--- feed_args.hpp.org   Wed Aug 20 18:50:12 2003
***
*** 34,42 
template inline
void empty_buf(BOOST_IO_STD basic_ostringstream & os) {
!   	// PTH 20/8/2003 - need this to NOT be a static for certain 
compilers.
!   	// we also don't really need this to be a global variable.
! 	const std::basic_string emptyStr = "";
  os.str(emptyStr);
}

--- 34,40 

template inline
void empty_buf(BOOST_IO_STD basic_ostringstream & os) {
!   static const std::basic_string emptyStr;
  os.str(emptyStr);
}
  feed_args.hpp.patch 
-
Paul Hamilton
pHamtec P/L - Software Makers
http://www.phamtec.com/
mailto:[EMAIL PROTECTED]
The information transmitted is intended only for the person or entity 
to which it is addressed and may contain confidential and/or privileged 
material. Any review, retransmission, dissemination or other use of, or 
taking of any action in reliance upon, this information by persons or 
entities other than the intended recipient is prohibited. If you 
received this in error, please contact the sender and delete the 
material from any computer.
-

___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] Build help for OS X

2003-08-19 Thread Paul Hamilton
I managed to get my stuff built using all shared libraries on OS X, but 
I came across the following problems:

- I had to hack "boost/format/feedargs.hpp" to remove the static 
variable (I have explained in other posts why).
	
	- I am going to work around this by only having a single include point 
for "format.hpp", but it will limit my further use of this.
	- I sent a message earlier about changing this code so that is does 
something a lot simpler than it does, and it fixes my problem. Any 
thoughts about that?

- I had to turn off optimization and inlines for the release build 
because I was getting a bunch of "non-virtual thunk" errors in the link.

	- I will test with the latest build from Apple to see if this goes 
away, since when I googled I received lot's of "this is a compiler bug, 
turn off optimization" messages.

But in the meantime, rather than needing to hack "darwin-tools.jam" to 
turn off inlining/optimization, how do you change these for the default 
build?

I tried this in my Jamfile:

dll cppxmlobjlib : $(XMLOBJ_PATH)/$(CPP_SOURCES).cpp
			../libs/cpppersistxmllib
			../libs/cpppersistlib
			../libs/cppreflectlib
		   : $(BOOST_ROOT) expat off 
off
		   : debug release
			;

But it gives me a warning saying that "off" is not 
compatible with full.

How do you override those defaults?

Paul.

-
Paul Hamilton
pHamtec P/L - Software Makers
http://www.phamtec.com/
mailto:[EMAIL PROTECTED]
The information transmitted is intended only for the person or entity 
to which it is addressed and may contain confidential and/or privileged 
material. Any review, retransmission, dissemination or other use of, or 
taking of any action in reliance upon, this information by persons or 
entities other than the intended recipient is prohibited. If you 
received this in error, please contact the sender and delete the 
material from any computer.
-

___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Global vars

2003-08-18 Thread Paul Hamilton
Peter Dimov wrote:

Did you try to remove the "static const"?
Not sure if this would achieve the same effect as the code is trying to 
get done. I think it's a static const so that the the compiler will 
optimize it out and just init the string.

Paul.

-----
Paul Hamilton
pHamtec P/L - Software Makers
http://www.phamtec.com/
mailto:[EMAIL PROTECTED]
The information transmitted is intended only for the person or entity 
to which it is addressed and may contain confidential and/or privileged 
material. Any review, retransmission, dissemination or other use of, or 
taking of any action in reliance upon, this information by persons or 
entities other than the intended recipient is prohibited. If you 
received this in error, please contact the sender and delete the 
material from any computer.
-

___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] Global vars

2003-08-18 Thread Paul Hamilton
Well,

I've tried to work through the solutions to:

ld: common symbols not allowed with MH_DYLIB output format

Which are basically "-fno-common" on the compile line of each file, but 
apart from the fact that tihs doesn't actually work in this case (we 
still get the error), it's not really a very good idea.

Does anybody have any suggestions for working around this code:

namespace boost {
namespace io {
namespace detail {
namespace  {
  template inline
  void empty_buf(BOOST_IO_STD basic_ostringstream & os) {
static const std::basic_string emptyStr;
os.str(emptyStr);
  }
};};};};

The correct thing to do with this code (for all platforms) is to not 
rely on the global variable "common" stuff (which is new to me, and 
seems a bit of a hack), but actually do this code correctly, which 
means removing the global variable.

What problem is the code above trying to solve?

If i just do this (which i have done to get my stuff working), there 
seems to be no prob:

#ifdef MACHACK
  template inline
  void empty_buf(BOOST_IO_STD basic_ostringstream & os) {
extern const std::basic_string emptyStr;
os.str(emptyStr);
  }
#else
#define empty_buf(_os_) (_os_).str("");
#endif
Wouldn't the above two lines achieve basically the same thing (although 
I know we hate macros, but since "empty_buf" is only actually used 3 
times in the entire project, could all of the:

	empty_buf(oss);

be replaced with:

	oss.str("");

This would save a whole lot of grief and eliminate this fairly ugly 
global variable.

Comments?

-
Paul Hamilton
pHamtec P/L - Software Makers
http://www.phamtec.com/
mailto:[EMAIL PROTECTED]
The information transmitted is intended only for the person or entity 
to which it is addressed and may contain confidential and/or privileged 
material. Any review, retransmission, dissemination or other use of, or 
taking of any action in reliance upon, this information by persons or 
entities other than the intended recipient is prohibited. If you 
received this in error, please contact the sender and delete the 
material from any computer.
-

___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] Further to boost::io::detail::empty_buf problem with sharedlibs

2003-08-17 Thread Paul Hamilton
After studying my problem with this:

 template inline
  void empty_buf(BOOST_IO_STD basic_ostringstream & os) {
static const std::basic_string emptyStr;
os.str(emptyStr);
  }
I want to post the actual link error I get back:

darwin-Link-action  
libs/bin/libcpppersistxmllib.dylib/darwin/debug/runtime-link-dynamic/ 
shared-linkable-true/libcpppersistxmllib.dylib
ld: common symbols not allowed with MH_DYLIB output format
libs/bin/libcpppersistxmllib.dylib/darwin/debug/runtime-link-dynamic/ 
shared-linkable-true/parse.o definition of common  
_ZZN5boost2io6detail30_GLOBAL__N_xml_parse.cpp84XT3a9empty_bufISt11char_ 
traitsIcEcEEvRSt19basic_ostringstreamIT0_T_SaIS7_EEE8emptyStr (size 4)
libs/bin/libcpppersistxmllib.dylib/darwin/debug/runtime-link-dynamic/ 
shared-linkable-true/parseobj.o definition of common  
_ZZN5boost2io6detail33_GLOBAL__N_xml_parseobj.cpp2bh23a9empty_bufISt11ch 
ar_traitsIcEcEEvRSt19basic_ostringstreamIT0_T_SaIS7_EEE8emptyStr (size  
4)

export DYLD_LIBRARY_PATH
c++ -g -Wl,-dynamic -nostartfiles -Wl,-dylib -Wl,-ldylib1.o  -o  
"libs/bin/libcpppersistxmllib.dylib/darwin/debug/runtime-link-dynamic/ 
shared-linkable-true/libcpppersistxmllib.dylib"   
"libs/bin/libcpppersistxmllib.dylib/darwin/debug/runtime-link-dynamic/ 
shared-linkable-true/parse.o"  
"libs/bin/libcpppersistxmllib.dylib/darwin/debug/runtime-link-dynamic/ 
shared-linkable-true/parseobj.o"  
"libs/bin/libcpppersistxmllib.dylib/darwin/debug/runtime-link-dynamic/ 
shared-linkable-true/writeobj.o"  \
   \

You can see this is a bit weird because the names are mangled to  
something completely different, but the linker says something about  
"common" problems. Does anybody know what this is about?

Maybe the problem is that the symbols should really be common but are  
given two completely different names, since they are compiled in too  
different units? Not sure.

Paul.

-
Paul Hamilton
pHamtec P/L - Software Makers
http://www.phamtec.com/
mailto:[EMAIL PROTECTED]
The information transmitted is intended only for the person or entity  
to which it is addressed and may contain confidential and/or privileged  
material. Any review, retransmission, dissemination or other use of, or  
taking of any action in reliance upon, this information by persons or  
entities other than the intended recipient is prohibited. If you  
received this in error, please contact the sender and delete the  
material from any computer.
-

___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] xml library

2003-08-17 Thread Paul Hamilton

I think that what is still missing in Boost is a library for reading 
and
writing XML files.
I have been using expat for a while, and wrapping it in C++ classes. 
It's a very capable parser and supports lot's of stuff.

My parser stuff is just done with a switch statement (since it's event 
driven), but it would be nice if you could use expat, but then 
"register" your element "handlers" to get called. This would be a cool 
design.

I don't think I could actually use the "iterator" design that you have, 
since I need to handle the nesting of tags, so I need to know when I am 
started and finished a tag. I also need to know the normal CDATA or 
comments that just came through. Is this possible with the iterator 
idea?

I also have a bunch of code for wrapping expat, but it's pretty simple.

Paul.

-
Paul Hamilton
pHamtec P/L - Software Makers
http://www.phamtec.com/
mailto:[EMAIL PROTECTED]
The information transmitted is intended only for the person or entity 
to which it is addressed and may contain confidential and/or privileged 
material. Any review, retransmission, dissemination or other use of, or 
taking of any action in reliance upon, this information by persons or 
entities other than the intended recipient is prohibited. If you 
received this in error, please contact the sender and delete the 
material from any computer.
-

___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: XMLUI (was Re: Re: UI++)

2003-08-17 Thread Paul Hamilton

There's more to it than just creating something that can render UI
elements from XML stream.
XMLUI is a lot more than this. For one thing it's optimized for 
animation (sort of like flash) so that interfaces are purely widgetless 
(as I mentioned earlier).

XUL (which is actually a language, you could implement an XUL player 
using XMLUI) lacks a lot of basic concepts necessary to support the 
types of UI's that XMLUI can do.

To be truly successful you need a UI editor
that can generate the XML stream.
And creating such an editor is probably less than trivial.
Just like XUL, the XMLUI Editor uses XMLUI, so each time you add a new 
component you also get to have it in the GUI. that part of it pretty 
much exists, but running on Windows in a "non open source" capacity.

So I think it would be better to focus on
one goal rather than multiple. I think timing will be more critical now
than creating alternatives.
My current goal is to take a large body of work that I have built over 
many years and make it available as an open source project. The reason 
i thought it might be interesting for the Boost group was that in 
moving it to OSS I was investing in using Boost for most of the code.

I don't really want to go in to too much of an argument on this list 
about the difference between XUL and XMLUI. I have a ways to go before 
XMLUI is open source anyway, so it's all academic anyway. At some point 
I'll create a project

I just wanted to let the list know that I was working on it.

-
Paul Hamilton
pHamtec P/L - Software Makers
http://www.phamtec.com/
mailto:[EMAIL PROTECTED]
The information transmitted is intended only for the person or entity 
to which it is addressed and may contain confidential and/or privileged 
material. Any review, retransmission, dissemination or other use of, or 
taking of any action in reliance upon, this information by persons or 
entities other than the intended recipient is prohibited. If you 
received this in error, please contact the sender and delete the 
material from any computer.
-

___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] boost::io::detail::empty_buf problem with shared libs

2003-08-17 Thread Paul Hamilton
This gives me problems:

  template inline
  void empty_buf(BOOST_IO_STD basic_ostringstream & os) {
static const std::basic_string emptyStr;
os.str(emptyStr);
  }
When I use something that includes this in two different dll's, and 
then try to link them into another exe (or dll), I get a problem with 
duplicate symbols.

It's usually a bad idea to declare a global variable as part of a 
library, without specifying some way of providing the actual definition 
of it a single time.

What is the work around apart from wrapping all of the boost functions 
in another library?

I'm working on OS X, so maybe it's specific to that platform.

Paul.

-----
Paul Hamilton
pHamtec P/L - Software Makers
http://www.phamtec.com/
mailto:[EMAIL PROTECTED]
The information transmitted is intended only for the person or entity 
to which it is addressed and may contain confidential and/or privileged 
material. Any review, retransmission, dissemination or other use of, or 
taking of any action in reliance upon, this information by persons or 
entities other than the intended recipient is prohibited. If you 
received this in error, please contact the sender and delete the 
material from any computer.
-

___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] Re: XMLUI (was Re: Re: UI++)

2003-08-16 Thread Paul Hamilton
>>>
May I come with a bit of scepticism? There's already XUL (see
http://xulplanet.com for a start, and
http://www.mozilla.org/catalog/architecture/xul/ for more details).
I think Mozilla folks put some effort into it, so I wonder if XMLUI 
offers
something new/better?
<<<

The main implementation of XMLUI predates XUL, just not in an open 
source form. But since then I've taken a look at XUL, and had a go at 
building some applications with it.

There are a number of ways in which XMLUI is superior to XUL. Although 
XUL has had a lot of development work on it, there are some things that 
make it unattractive (at least for myself) as a tool for developing 
UI's for applications. Although it's great as a tool for creating 
"Browser like" applications, especially ones that integrate Mozilla.

One of the major problems with it is it's lack of "independence" from 
it's primary application that it is based on - Mozilla. This is natural 
from a tool that "grew" out of the side of another program.

I don't think there is any problems with having multiple XML based UI 
toolkits anyway. Diversity is a good thing :-)

Paul.
-
Paul Hamilton
pHamtec P/L - Software Makers
http://www.phamtec.com/
mailto:[EMAIL PROTECTED]
The information transmitted is intended only for the person or entity 
to which it is addressed and may contain confidential and/or privileged 
material. Any review, retransmission, dissemination or other use of, or 
taking of any action in reliance upon, this information by persons or 
entities other than the intended recipient is prohibited. If you 
received this in error, please contact the sender and delete the 
material from any computer.
-

___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] Re: GUI/GDI template library

2003-08-14 Thread Paul Hamilton

Since OS X uses X for the GUI, I think it's covered by "Windows and X".
This isn't really true. it is POSSIBLE for you to run applications with 
an X GUI on OSX, but it involves using an X server, and the 
applications don't really look and feel like mac ones. The Macintosh 
has it's own completely different UI library based on a lot of the Next 
stuff.

But a "quick and dirty" port to the mac could simply be a recompile of 
linux code that used X. for example I run ddd all the time on my mac, 
using lesstif. But it's not very "mac like" :-)

Paul.

-
Paul Hamilton
pHamtec P/L - Software Makers
http://www.phamtec.com/
mailto:[EMAIL PROTECTED]
The information transmitted is intended only for the person or entity 
to which it is addressed and may contain confidential and/or privileged 
material. Any review, retransmission, dissemination or other use of, or 
taking of any action in reliance upon, this information by persons or 
entities other than the intended recipient is prohibited. If you 
received this in error, please contact the sender and delete the 
material from any computer.
-

___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] ANN: C++ XML Objects

2003-08-14 Thread Paul Hamilton
I have just uploaded a new project called "cppxmlobj" which is a system 
for persisting C++ objects to and from XML files. It uses Boost, 
Patterns, STL etc extensively (even the build system), and I thought 
that the list might be interested.

An incarnation of it has been used in a number of commercial projects 
(by myself), but this is a complete rewrite using all the Boost stuff.

Here is the link:

http://sourceforge.net/projects/cppxmlobj/

I am still working on a literate programming system using this, but it 
will be ready to release in an early state soon. It's important that I 
complete the "tangle" tool so that it can create any sort of file for 
programming. It's almost done.

There aren't any docs done except the doxygen stuff, but that will 
happen over time.

Paul.

-
Paul Hamilton
pHamtec P/L - Software Makers
http://www.phamtec.com/
mailto:[EMAIL PROTECTED]
The information transmitted is intended only for the person or entity 
to which it is addressed and may contain confidential and/or privileged 
material. Any review, retransmission, dissemination or other use of, or 
taking of any action in reliance upon, this information by persons or 
entities other than the intended recipient is prohibited. If you 
received this in error, please contact the sender and delete the 
material from any computer.
-

___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] ANN: C++ XML Objects

2003-08-14 Thread Paul Hamilton
Jonathan de Halleux, writes:

Could you provide some simple examples of cppxmlobj ? the sourceforge 
doc
points to doxygen doc. but there aren't any examples of use.
Absolutely.

I intend to write some docs for all of this, especially on all of the 
neat stuff that the cppxmlobj XML parser can do (like includes, 
templates etc), but for now, if you fire up the doxygen stuff and take 
a look at all of the "cppxmlobject_test" namespace and classes, you can 
see some test objects called "foo", "bar" and "main" that are 
persisting to xml. This will show you what type of work you need to do 
on a class to get it to persist.

If you get the source for "cppxmlobj" and untar it, take a look inside 
the "test" folder and you can see the actual xml files that are read to 
instantiate foo, bar and root. You can probable start to see the type 
of thing that is happening with the library at this point.

When I do some real docs, I'll let you guys know again so you can take 
a real look.

Paul.
-
Paul Hamilton
pHamtec P/L - Software Makers
http://www.phamtec.com/
mailto:[EMAIL PROTECTED]
The information transmitted is intended only for the person or entity 
to which it is addressed and may contain confidential and/or privileged 
material. Any review, retransmission, dissemination or other use of, or 
taking of any action in reliance upon, this information by persons or 
entities other than the intended recipient is prohibited. If you 
received this in error, please contact the sender and delete the 
material from any computer.
-

___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


XMLUI (was Re: [boost] Re: UI++)

2003-08-14 Thread Paul Hamilton

Is there a URL available for samples we could look at? Talking about 
an XML
user interface description isn't something I can do in the abstract.
No URL yet. I'll setup a SourceForge project for it and post the 
whitepaper. It's really not in a state where it can be used right now, 
since it's all proprietary C++ code.

I'll let you know when I get the SF stuff done.

Paul.

-----
Paul Hamilton
pHamtec P/L - Software Makers
http://www.phamtec.com/
mailto:[EMAIL PROTECTED]
The information transmitted is intended only for the person or entity 
to which it is addressed and may contain confidential and/or privileged 
material. Any review, retransmission, dissemination or other use of, or 
taking of any action in reliance upon, this information by persons or 
entities other than the intended recipient is prohibited. If you 
received this in error, please contact the sender and delete the 
material from any computer.
-

___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] Re: UI++

2003-08-14 Thread Paul Hamilton
I am currently porting something called "XMLUI" to use boost/bjam etc.

The general background of XMLUI is based on the work we did at mBED for 
a "flash-like" animation system (although it predated flash).

This project is the culmination of a number of years of design of 
"widget-less" UI systems that I have been undertaking.

What XMLUI is now:

- XML based description language for UI's (windows, panes, buttons etc).
- Rendering engine for the above (only on windows at the moment, and 
not GPL or using boost).
- Dynamic loading system (just DLL's on windows).
- Tools for developing XMLUI are written in XMLUI.
- written using C++ (VC at the moment).
- heavy use of patterns and STL.

I presented a white-paper on XMLUI at an XML conference last year 
(which I can send to people who want it. It's only a 170K PDF), and the 
project has been used commercially to build a number of systems.

So where am I at?

A complete UI system may involve a complex class hierarchy of maybe 200 
to 300 objects. Each of these objects needs to interact in the 
following ways:

- settable and gettable members directly in the UI (so that a slider 
can modify a text field for example).
- observer pattern in heavy use so that a button can dim based on the 
value of another object's field (for state maintaining), and so that a 
slider can update a text field.
- each object persists to and from XML files (and complete hierarchies 
of objects need to do this).

So to support this, from the start you need:

- A "tangle" tool which can read a large object schema and build C++ 
classes for:
	- the visitor patterns so that members can be set/get.
	- the observer pattern.
	- the prototype pattern (for object inheritance and persistance).
	- the composite pattern so that one object can contain lists (vectors) 
of other objects and references to other objects.
- A schema which describes the following types of objects:
	- panes which represent the different types of UI elements.
	- commands which encapsulate the actions for the buttons etc (and for 
the undo system).
	- enablers and pipes for moving data around between objects.
	- some type of expression language.
	- generators for filling panes with data.

What I have done using boost:

- A general persistence scheme called cpppersist which is general, but 
I have written an XML persister.
- A general reflection scheme called cppreflect which allows members of 
objects to be set/get via strings (and found etc).
- A base object for all "XML persisted/reflectable" objects called 
xmlobj which combines the above two things.

These are almost ready to go up (on sourceforge probably), I just need 
to write a few more unit tests.

What I am working on right now:

- a tangle/weave literate programming system using xmlobj's called 
cppliterate which I can use to build all of the classes, create the 
Jamfiles etc.

I am a couple of weeks of work away from finishing this off. I need to 
integrate tangle into boost's build system, and I need to build a weave 
tool (it really isn't needed since I get around it now by having tangle 
build "doxygen friendly" source files, and then run doxygen on them. 
But a REAL weave will be necessary for user documentation etc).

Naturally weave and tangle will be built using weave and tangle :-) So 
it's an interesting if not recursive exercise to build (like, how much 
of tangle do you need to have written before it can start tangling 
itself?).

When I've finished cppliterate I'll let you guys know, but of course 
this still isn't anything to do with UI's, but it would be useful for 
others who need to do large scale cpp development. This will be 
released the same as boost is (using the same build system), so it 
might be cool to put it into boost at some point once it's proven 
useful.

Once this is done, you could use it to build a description system for a 
widget library, which is a necessary thing. You could probably write an 
object-widget mapper in tangle to generate the WxWindows/QT/MFC stubs 
directly which would save time.

Then it's a case of taking my existing schemas that I have for XMLUI, 
creating all the objects and then porting all of the code currently 
running on windows to this new system. This is probably a good 6 months 
away, but it will happen this year, and it will be free (probably GPL). 
It will probably only be windows/Mac OS X available, but a port to X 
would be simple.

Paul.

-
Paul Hamilton
pHamtec P/L - Software Makers
http://www.phamtec.com/
mailto:[EMAIL PROTECTED]
The information transmitted is intended only for the person or entity 
to which it is addressed and may contain confidential and/or privileged 
material. Any review, retransmission, dissemination or other use of, or 
taking of any action in reliance upon, this information by persons or 
entities other than the inte

[boost] ANN: C++ XML Objects (docs)

2003-08-14 Thread Paul Hamilton
For those who were interested but wanted to see what it is all about 
first, I have updated the site so that it has some documentation on how 
to actually use the project from within your own code.

http://cppxmlobj.sourceforge.net/use.html

Paul.

-
Paul Hamilton
pHamtec P/L - Software Makers
http://www.phamtec.com/
mailto:[EMAIL PROTECTED]
The information transmitted is intended only for the person or entity 
to which it is addressed and may contain confidential and/or privileged 
material. Any review, retransmission, dissemination or other use of, or 
taking of any action in reliance upon, this information by persons or 
entities other than the intended recipient is prohibited. If you 
received this in error, please contact the sender and delete the 
material from any computer.
-

___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] Re: ANN: C++ XML Objects

2003-08-14 Thread Paul Hamilton
Dave Abrahams writes:

Well, it's interesting but pretty hard to evaluate.  As a recent Boost
review of a persistence system shows, there are many dimensions to
this problem domain.  It's hard to get a grip on which of those you've
chosen to address without some docs and/or examples.  The most I can
tell is that it seems to be intrusive on the design of classes you are
persisting.
Good points Dave.

it's not really meant to be evaluated with the idea that it will be 
incorporated into Boost, since it's extremely intrusive and not really 
conducive to adding to projects. The announcement was really just a 
heads up for the list that this thing exists, and it might be useful 
for some projects where you read and write data from XML files.

I have written this as part of another project, and thought that I 
would go "free" with it straight away, because I looked around myself 
for XML persistence and couldn't really find anything of use to me 
(they all involved some type of preprocessing which I hate. at least 
this thing you can just bolt on to any class from the outside). This 
scheme also uses "pure" patterns like Visitor, Abstract factory, 
Composite to do it's stuff.

There are two small parts of this called "cppreflect" and "cpppersist" 
which would probably make nice additions to Boost, since they are very 
small, simple and general, but I'm really busy at the moment getting 
some other stuff going and don't really have time to push this.

I'd really rather get a project written using this stuff as a kind of 
"body of work" using it rather than try to push it on the group at such 
an early stage.

Thank's for looking at it though!

Paul.
-
Paul Hamilton
pHamtec P/L - Software Makers
http://www.phamtec.com/
mailto:[EMAIL PROTECTED]
The information transmitted is intended only for the person or entity 
to which it is addressed and may contain confidential and/or privileged 
material. Any review, retransmission, dissemination or other use of, or 
taking of any action in reliance upon, this information by persons or 
entities other than the intended recipient is prohibited. If you 
received this in error, please contact the sender and delete the 
material from any computer.
-

___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[boost] Building header files with bjam

2003-08-09 Thread Paul Hamilton
I have a need to generate header files which are then subsequently used 
in a source file and built.

If i have a file called "xxx.y", which is used as an input to a program 
to generate "xxx.hpp", and "xxx.hpp" is included in "xxx.cpp" I should 
(I thought) be able to do something like this:

rule Tangle
{
DEPENDS $(<) : $(>) ;
}
actions Tangle
{
tanglemyfile $(<) $(>)
}
Tangle xxx.hpp : xxx.y ;

CPP_SOURCES = xxx.cpp ;

lib mylib : $(CPP_SOURCES).cpp
   : $(PROJECT_ROOT) $(BOOST_ROOT)
   : debug release
;
But when I try all of this in my jamfile, as much as I touch xxx.y, 
xxx.hpp is never being asked to rebuild. basically the "actions" is 
never executed.

What's the right way to do this?

Paul.

-
Paul Hamilton
pHamtec P/L - Software Makers
http://www.phamtec.com/
mailto:[EMAIL PROTECTED]
The information transmitted is intended only for the person or entity 
to which it is addressed and may contain confidential and/or privileged 
material. Any review, retransmission, dissemination or other use of, or 
taking of any action in reliance upon, this information by persons or 
entities other than the intended recipient is prohibited. If you 
received this in error, please contact the sender and delete the 
material from any computer.
-

___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Re: [boost] Re: [test] metrowerks linking errors

2003-02-11 Thread Paul Hamilton


David Abrahams <[EMAIL PROTECTED]> writes:

ehab samir aziz <[EMAIL PROTECTED]> writes:


I did not find any executable file called bjam to run
it !!



Please see the tools/build/index.html page in your Boost distribution.



Definitely read ALL of the documentation. after building bjam and jam, 
you will need to track the binaries down and then copy them somewhere 
on your executable path.

I built for OSX, and I just cp'd bjam and jam into /usr/bin (you could 
just drag them in also).

-----
Paul Hamilton
pHamtec P/L - Software Makers
http://www.phamtec.com/
mailto:[EMAIL PROTECTED]

The information transmitted is intended only for the person or entity 
to which it is addressed and may contain confidential and/or privileged 
material. Any review, retransmission, dissemination or other use of, or 
taking of any action in reliance upon, this information by persons or 
entities other than the intended recipient is prohibited. If you 
received this in error, please contact the sender and delete the 
material from any computer.
-

___
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost