Re: Parrot String Doc

2004-01-13 Thread Michael Scott
You'll find some diagrams here which might help.

http://www.vendian.org/parrot/wiki/bin/view.cgi/Main/ 
ParrotDiagramsString

On 13 Jan 2004, at 22:06, Robert Eaglestone wrote:

OK, I'm looking at the Parrot String documentation, and I've
got questions.  It's not like the docs are a total mess, they
just need some fleshing out.  Yeah, that's it.  So here I go.
Here's the page I'm looking at:

http://www.parrotcode.org/docs/strings.pod.html

And here are my questions.  Or, rather, notes which have
questions in them.
*  OK, I'm game, is 'String' a new thing that's been added to
   C in the last ten years?  I can't find it defined anywhere;
   my brain must have gone to mush.
*  Does it help to mention that the source code for string
   functions is include/parrot/string.h and string.c?
*  Suppose I add some example code to the doc, creating a
   string and fooling around with it?  Perhaps using code
   from a string test routine (hint, hint)?  I'd do something
   like this, maybe:
INTVAL encoding = where/what are the encoding values?

/* is this legal? */
STRING* foo = string_make( pi, "foobar", 6, encoding, 0, 0 );
/* foo is "foobar" */
/* It's a pity we don't have a shorter constructor. */

STRING* bar = string_chopn( foo, 3 );
/* bar is "foo" */
/* It's also sort-of a pity we don't have this one. */
STRING* baz = string_chop( foo );
/* baz is "fo" */
*   Finally, at the bottom of the doc, I see all these
undocumented functions.  I think I ought to document
them.  Any new stuff since this page was last edited?
-Rob




Re: Parrot String Doc

2004-01-13 Thread Stéphane Payrard
Le Tue, Jan 13, 2004 at 10:34:14PM +0100, le valeureux mongueur Stéphane Payrard a dit:
> Le Tue, Jan 13, 2004 at 03:06:18PM -0600, le valeureux mongueur Robert Eaglestone a 
> dit:
> > OK, I'm looking at the Parrot String documentation, and I've
> > got questions.  It's not like the docs are a total mess, they
> > just need some fleshing out.  Yeah, that's it.  So here I go.
> > 
> > Here's the page I'm looking at:
> > 
> > http://www.parrotcode.org/docs/strings.pod.html
> > 
> > And here are my questions.  Or, rather, notes which have
> > questions in them.
> > 
> > 
> > *  OK, I'm game, is 'String' a new thing that's been added to
> >C in the last ten years?  I can't find it defined anywhere;
> >my brain must have gone to mush.
> 
> 
> , C are different names for a C parrot_string_t>. 

I forgot to mention.
You will find the definitions in F.

   typedef struct parrot_string_t String;
   ...
   #define STRING struct parrot_string_t

etags or ctags (depending if you are an emacs or vi user) is your
friend. I use the following to avoid gathering definitions outside
the core of parrot.

etags `find -name '*.pmc' -o  -name '*.c' -o  -name '*.h' | grep -v languages/ | grep 
-v icu/`


Strings are garbage collected. All garbage
> collected entities are accessible thru a pointer to a C pobj_t> that is an union discriminated by the member C.
> 
> Relevant code in F:
> 
>   typedef union UnionVal {
>  ...
>  struct parrot_string_t * string_val;
>   }
> 
>   typedef struct pobj_t {
>   UnionVal u;
>   Parrot_UInt flags;
>   }
> 
>   typedef enum PObj_enum {
> ...
> PObj_is_string_FLAG = 1 << 8,
>   }
> 
> 
> But this is mostly irrelevant to the string user that will use
> the API you document. If you care about internals, see more info
> about garbage collection in F.
> 
> 
> --
>  stef


Re: Parrot String Doc

2004-01-13 Thread Harry Jackson
Stéphane Payrard wrote:
Le Tue, Jan 13, 2004 at 03:06:18PM -0600, le valeureux mongueur Robert Eaglestone a dit:

OK, I'm looking at the Parrot String documentation, and I've
got questions.  It's not like the docs are a total mess, they
just need some fleshing out.  Yeah, that's it.  So here I go.
Here's the page I'm looking at:

http://www.parrotcode.org/docs/strings.pod.html

And here are my questions.  Or, rather, notes which have
questions in them.
*  OK, I'm game, is 'String' a new thing that's been added to
  C in the last ten years?  I can't find it defined anywhere;
  my brain must have gone to mush.


, C are different names for a C. Strings are garbage collected. All garbage
collected entities are accessible thru a pointer to a C that is an union discriminated by the member C.
I did notice that they refer to the same struct which is something I 
found confusing. I noticed them being used interchangeably in places and 
was wondering if the we should just be using just "STRING" as per 
instructions in the documentation and change all references of "String" 
to reflect this.

Harry





Re: Parrot String Doc

2004-01-13 Thread Stéphane Payrard
Le Tue, Jan 13, 2004 at 03:06:18PM -0600, le valeureux mongueur Robert Eaglestone a 
dit:
> OK, I'm looking at the Parrot String documentation, and I've
> got questions.  It's not like the docs are a total mess, they
> just need some fleshing out.  Yeah, that's it.  So here I go.
> 
> Here's the page I'm looking at:
> 
> http://www.parrotcode.org/docs/strings.pod.html
> 
> And here are my questions.  Or, rather, notes which have
> questions in them.
> 
> 
> *  OK, I'm game, is 'String' a new thing that's been added to
>C in the last ten years?  I can't find it defined anywhere;
>my brain must have gone to mush.


, C are different names for a C. Strings are garbage collected. All garbage
collected entities are accessible thru a pointer to a C that is an union discriminated by the member C.

Relevant code in F:

  typedef union UnionVal {
 ...
 struct parrot_string_t * string_val;
  }

  typedef struct pobj_t {
  UnionVal u;
  Parrot_UInt flags;
  }

  typedef enum PObj_enum {
...
PObj_is_string_FLAG = 1 << 8,
  }


But this is mostly irrelevant to the string user that will use
the API you document. If you care about internals, see more info
about garbage collection in F.


--
 stef


Parrot String Doc

2004-01-13 Thread Robert Eaglestone
OK, I'm looking at the Parrot String documentation, and I've
got questions.  It's not like the docs are a total mess, they
just need some fleshing out.  Yeah, that's it.  So here I go.

Here's the page I'm looking at:

http://www.parrotcode.org/docs/strings.pod.html

And here are my questions.  Or, rather, notes which have
questions in them.


*  OK, I'm game, is 'String' a new thing that's been added to
   C in the last ten years?  I can't find it defined anywhere;
   my brain must have gone to mush.

*  Does it help to mention that the source code for string
   functions is include/parrot/string.h and string.c?

*  Suppose I add some example code to the doc, creating a
   string and fooling around with it?  Perhaps using code
   from a string test routine (hint, hint)?  I'd do something
   like this, maybe:

INTVAL encoding = where/what are the encoding values?

/* is this legal? */ 
STRING* foo = string_make( pi, "foobar", 6, encoding, 0, 0 );
/* foo is "foobar" */

/* It's a pity we don't have a shorter constructor. */

 
STRING* bar = string_chopn( foo, 3 );
/* bar is "foo" */

/* It's also sort-of a pity we don't have this one. */ 
STRING* baz = string_chop( foo ); 
/* baz is "fo" */

*   Finally, at the bottom of the doc, I see all these
undocumented functions.  I think I ought to document
them.  Any new stuff since this page was last edited?
 
-Rob