From: bam@snoopy.apana.org.au (Brian May)
Subject: Re: FAQ and string functions
Date: 30 Jul 2002 21:52:34 -0700
Date: 2002-07-31T04:52:34+00:00 [thread overview]
Message-ID: <29e5ffff.0207302052.465a3193@posting.google.com> (raw)
In-Reply-To: 4519e058.0207300548.15eeb65c@posting.google.com
> Strings in Ada are particularly tricky for newcommers. One trap is
> underuse of perfectly sized string constants. Most strings get their
> value once and never need it changed. If that is the case, its fairly
> easy to declare the string at the point its value is known, with the
> perfect bounds, by using a string constant (possibly inside a
> "declare" block). If you do that, it becomes very easy to deal with.
I have two questions concerning strings that I can't find answers for
in the RM:
1. How do I split a string up into tokens and iterate through the list
of tokens (compare with C's strtok function)?
2. Can this ugly looking code be simplified?
declare
I : Iterator;
begin
I := Element_Iterator(Class_Element,"parent");
while More(I) loop
declare
My_Node : Node renames Value(I);
Class_Ref : DOM_String renames
Get_Attribute(My_Node,"ref");
begin
Put_Line(Class_Name(Package_Id,Class_Ref)&"($1,$2,$3)");
end;
Next(I);
end loop;
Free(I);
end;
where Element_Iterator, More, Value, Next, and Free are my own
functions to iterate over elements in a DOM tree in xmlada (without
these the code was a real mess). DOM_String is similiar to a string
(in fact, I think internally it is defined as a string, but don't
quote me on that).
Ideally I don't want to have the nested declare block for the sole
purpose of
saving the result from Get_Attribute, but I am not sure this is
possible?
eg. I would like to be able to say
declare
I : Iterator;
Class_Ref : DOM_String;
begin
I := Element_Iterator(Class_Element,"parent");
while More(I) loop
Class_Ref := Get_Attribute(Value(I),"ref");
Put_Line(Class_Name(Package_Id,Class_Ref)&"($1,$2,$3)");
Next(I);
end loop;
Free(I);
end;
but do it in a legal way. I think this would make the code more
readable.
Any comments?
next prev parent reply other threads:[~2002-07-31 4:52 UTC|newest]
Thread overview: 86+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-07-30 6:32 FAQ and string functions Oleg Goodyckov
2002-07-30 8:52 ` Colin Paul Gloster
2002-07-30 13:48 ` Ted Dennison
2002-07-31 4:52 ` Brian May [this message]
2002-08-01 16:09 ` Ted Dennison
2002-08-02 0:21 ` Brian May
2002-08-02 1:56 ` tmoran
2002-08-02 13:59 ` Ted Dennison
2002-07-31 7:46 ` Oleg Goodyckov
2002-07-31 9:04 ` Lutz Donnerhacke
2002-07-31 9:39 ` Pascal Obry
2002-07-31 15:06 ` Oleg Goodyckov
2002-07-31 16:50 ` Oleg Goodyckov
2002-07-31 20:16 ` Simon Wright
2002-07-31 20:56 ` Robert A Duff
2002-08-01 0:11 ` Darren New
2002-08-01 1:08 ` tmoran
2002-08-01 9:25 ` Brian May
2002-08-01 11:20 ` Oleg Goodyckov
2002-08-01 15:43 ` Darren New
2002-08-01 21:37 ` Robert A Duff
2002-08-03 0:42 ` Ted Dennison
2002-08-03 13:51 ` Robert A Duff
2002-08-03 16:43 ` Darren New
2002-08-05 13:37 ` Stephen Leake
2002-08-02 8:01 ` Oleg Goodyckov
2002-08-02 16:09 ` Darren New
2002-08-01 11:09 ` Oleg Goodyckov
2002-08-01 14:08 ` Frank J. Lhota
2002-08-01 15:06 ` Robert A Duff
2002-08-01 16:05 ` Oleg Goodyckov
2002-08-01 14:57 ` Georg Bauhaus
2002-07-31 22:04 ` Dmitry A.Kazakov
2002-07-31 15:23 ` Oleg Goodyckov
2002-08-01 21:57 ` Dmitry A.Kazakov
2002-08-01 13:10 ` Oleg Goodyckov
2002-08-02 23:29 ` Dmitry A.Kazakov
2002-08-02 16:35 ` Oleg Goodyckov
2002-08-05 11:50 ` Dmitry A. Kazakov
2002-08-05 14:29 ` Larry Kilgallen
2002-08-05 14:57 ` Dmitry A. Kazakov
2002-08-05 15:12 ` Oleg Goodyckov
2002-08-05 16:20 ` Darren New
2002-08-05 17:01 ` Georg Bauhaus
2002-08-05 17:48 ` Darren New
2002-08-05 19:06 ` tmoran
2002-08-05 20:08 ` Darren New
[not found] ` <slrnakv3q9.p2.lutz@taranis.iks-jena.de>
[not found] ` <3D4FEFCB.3B74F5E5@san.rr.com>
2002-08-14 0:07 ` Randy Brukardt
2002-08-01 14:29 ` Ted Dennison
2002-08-01 16:47 ` Oleg Goodyckov
2002-08-02 14:05 ` Ted Dennison
2002-08-02 16:11 ` Darren New
2002-08-03 0:30 ` Ted Dennison
2002-08-03 0:58 ` Darren New
2002-08-03 2:04 ` Dale Stanbrough
2002-08-03 2:32 ` Ted Dennison
2002-08-03 2:47 ` Darren New
2002-08-03 12:41 ` Ted Dennison
2002-08-03 16:53 ` Darren New
2002-08-04 1:08 ` Ted Dennison
2002-08-04 16:23 ` Darren New
2002-08-05 2:16 ` Robert Dewar
2002-08-05 3:45 ` Darren New
2002-08-05 9:56 ` Lutz Donnerhacke
2002-08-05 16:02 ` Darren New
2002-08-14 0:42 ` Randy Brukardt
2002-08-14 1:45 ` Darren New
2002-08-14 19:37 ` Randy Brukardt
2002-08-14 20:25 ` Stephen Leake
2002-08-14 20:22 ` Stephen Leake
2002-08-15 19:24 ` Randy Brukardt
[not found] ` <jb1vkustkugeutalhvrhv1n0k9hqn2fpip@4ax.com>
[not found] ` <3D4FF351.8F4A6C0A@san.rr.com>
2002-08-14 1:03 ` Randy Brukardt
2002-08-14 1:05 ` Robert A Duff
[not found] ` <3D4EA1AC.80D17170@s <wccofc6b66u.fsf@shell01.TheWorld.com>
2002-08-14 20:29 ` Stephen Leake
2002-08-26 17:53 ` Robert A Duff
2002-08-26 18:40 ` Chad R. Meiners
2002-08-26 18:52 ` Robert A Duff
2002-08-26 21:46 ` Chad R. Meiners
2002-08-05 13:29 ` Stephen Leake
2002-08-03 5:07 ` achrist
2002-08-03 12:52 ` Ted Dennison
2002-08-05 15:34 ` Ted Dennison
2002-08-05 13:24 ` Stephen Leake
2002-08-05 16:02 ` Darren New
2002-08-05 7:18 ` Oleg Goodyckov
2002-08-02 1:04 ` tmoran
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox