plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

libString.h (1456B)


      1 #ifndef _LIBSTRING_H_
      2 #define _LIBSTRING_H_ 1
      3 #if defined(__cplusplus)
      4 extern "C" { 
      5 #endif
      6 
      7 /*
      8 #pragma	src	"/sys/src/libString"
      9 #pragma	lib	"libString.a"
     10 */
     11 AUTOLIB(String)
     12 
     13 /* extensible Strings */
     14 typedef struct String {
     15 	Lock	lk;
     16 	char	*base;	/* base of String */
     17 	char	*end;	/* end of allocated space+1 */
     18 	char	*ptr;	/* ptr into String */
     19 	short	ref;
     20 	uchar	fixed;
     21 } String;
     22 
     23 #define s_clone(s) s_copy((s)->base)
     24 #define s_to_c(s) ((s)->base)
     25 #define s_len(s) ((s)->ptr-(s)->base)
     26 
     27 extern String*	s_append(String*, char*);
     28 extern String*	s_array(char*, int);
     29 extern String*	s_copy(char*);
     30 extern void	s_free(String*);
     31 extern String*	s_incref(String*);	
     32 extern String*	s_memappend(String*, char*, int);
     33 extern String*	s_nappend(String*, char*, int);
     34 extern String*	s_new(void);
     35 extern String*	s_newalloc(int);
     36 extern String*	s_parse(String*, String*);
     37 extern String*	s_reset(String*);
     38 extern String*	s_restart(String*);
     39 extern void	s_terminate(String*);
     40 extern void	s_tolower(String*);
     41 extern void	s_putc(String*, int);
     42 extern String*	s_unique(String*);
     43 extern String*	s_grow(String*, int);
     44 
     45 #ifdef BGETC
     46 extern int	s_read(Biobuf*, String*, int);
     47 extern char	*s_read_line(Biobuf*, String*);
     48 extern char	*s_getline(Biobuf*, String*);
     49 typedef struct Sinstack Sinstack;
     50 extern char	*s_rdinstack(Sinstack*, String*);
     51 extern Sinstack	*s_allocinstack(char*);
     52 extern void	s_freeinstack(Sinstack*);
     53 #endif /* BGETC */
     54 #if defined(__cplusplus)
     55 }
     56 #endif
     57 #endif