Skip to content
Snippets Groups Projects
Select Git revision
  • master default protected
  • 9.0
  • 8.0
  • 7.8
  • 7.6
  • 7.4
  • 7.2
  • 7.0
  • 0.6
  • rosuav/latex-markdown-renderer
  • rxnpatch/rxnpatch
  • marcus/gobject-introspection
  • rxnpatch/8.0
  • rosuav/pre-listening-ports
  • nt-tools
  • rosuav/async-annotations
  • rosuav/pgsql-ssl
  • rxnpatch/rxnpatch-broken/2023-10-06T094250
  • grubba/fdlib
  • grubba/wip/sakura/8.0
  • v8.0.1996
  • v8.0.1994
  • v8.0.1992
  • v8.0.1990
  • v8.0.1988
  • v8.0.1986
  • rxnpatch/clusters/8.0/2025-04-29T124414
  • rxnpatch/2025-04-29T124414
  • v8.0.1984
  • v8.0.1982
  • v8.0.1980
  • v8.0.1978
  • v8.0.1976
  • v8.0.1974
  • v8.0.1972
  • v8.0.1970
  • v8.0.1968
  • v8.0.1966
  • v8.0.1964
  • v8.0.1962
40 results

String.pmod

Blame
    • Fredrik Hübinette (Hubbe)'s avatar
      d5190bb1
      module names capitalized · d5190bb1
      Fredrik Hübinette (Hubbe) authored
      Rev: lib/include/array.h:1.3
      Rev: lib/include/fifo.h:1.3
      Rev: lib/include/getopt.h:1.3
      Rev: lib/include/process.h:1.3
      Rev: lib/include/simulate.h:1.3
      Rev: lib/include/stack.h:1.3
      Rev: lib/include/stdio.h:1.3
      Rev: lib/include/string.h:1.3
      Rev: lib/modules/Array.pmod:1.1
      Rev: lib/modules/Fifo.pmod:1.1
      Rev: lib/modules/Getopt.pmod:1.1
      Rev: lib/modules/Process.pmod:1.1
      Rev: lib/modules/Simulate.pmod:1.1
      Rev: lib/modules/Stack.pmod:1.1
      Rev: lib/modules/Stdio.pmod:1.1
      Rev: lib/modules/String.pmod:1.1
      Rev: lib/modules/array_functions.pmod:1.2(DEAD)
      Rev: lib/modules/fifo.pmod:1.2(DEAD)
      Rev: lib/modules/getopt.pmod:1.2(DEAD)
      Rev: lib/modules/process.pmod:1.2(DEAD)
      Rev: lib/modules/simulate.pmod:1.2(DEAD)
      Rev: lib/modules/stack.pmod:1.2(DEAD)
      Rev: lib/modules/stdio.pmod:1.2(DEAD)
      Rev: lib/modules/string_functions.pmod:1.2(DEAD)
      d5190bb1
      History
      module names capitalized
      Fredrik Hübinette (Hubbe) authored
      Rev: lib/include/array.h:1.3
      Rev: lib/include/fifo.h:1.3
      Rev: lib/include/getopt.h:1.3
      Rev: lib/include/process.h:1.3
      Rev: lib/include/simulate.h:1.3
      Rev: lib/include/stack.h:1.3
      Rev: lib/include/stdio.h:1.3
      Rev: lib/include/string.h:1.3
      Rev: lib/modules/Array.pmod:1.1
      Rev: lib/modules/Fifo.pmod:1.1
      Rev: lib/modules/Getopt.pmod:1.1
      Rev: lib/modules/Process.pmod:1.1
      Rev: lib/modules/Simulate.pmod:1.1
      Rev: lib/modules/Stack.pmod:1.1
      Rev: lib/modules/Stdio.pmod:1.1
      Rev: lib/modules/String.pmod:1.1
      Rev: lib/modules/array_functions.pmod:1.2(DEAD)
      Rev: lib/modules/fifo.pmod:1.2(DEAD)
      Rev: lib/modules/getopt.pmod:1.2(DEAD)
      Rev: lib/modules/process.pmod:1.2(DEAD)
      Rev: lib/modules/simulate.pmod:1.2(DEAD)
      Rev: lib/modules/stack.pmod:1.2(DEAD)
      Rev: lib/modules/stdio.pmod:1.2(DEAD)
      Rev: lib/modules/string_functions.pmod:1.2(DEAD)
    String.pmod 1.18 KiB
    #define BEGIN 32
    
    /*
     * Implode an array of strings to an english 'list'
     * ie. ({"foo","bar","gazonk"}) beomces "foo, bar and gazonk"
     */
    string implode_nicely(string *foo, string|void and)
    {
      if(!and) and="and";
      switch(sizeof(foo))
      {
      case 0: return "";
      case 1: return foo[0];
      default: return foo[0..sizeof(foo)-2]*", "+" "+and+" "+foo[-1];
      }
    }
    
    string capitalize(string s)
    {
      return upper_case(s[0..0])+s[1..sizeof(s)];
    }
    
    string strmult(string str, int num)
    {
    #if 1
      num*=strlen(str);
      while(strlen(str) < num) str+=str;
      return str[0..num-1];
    #endif
    #if 0
      return sprintf("%~n",str,strlen(str)*num);
    #endif
    }
    
    class String_buffer {
      string *buffer=allocate(BEGIN);
      int ptr=0;
      
      static void fix()
        {
          string tmp=buffer*"";
          buffer=allocate(strlen(tmp)/128+BEGIN);
          buffer[0]=tmp;
          ptr=1;
        }
      
      string get_buffer()
        {
          if(ptr != 1) fix();
          return buffer[0];
        }
      
      void append(string s)
        {
          if(ptr==sizeof(buffer)) fix();
          buffer[ptr++]=s;
        }
      
      mixed cast(string to)
        {
          if(to=="string") return get_buffer();
          return 0;
        }
      
      void flush()
        {
          buffer=allocate(BEGIN);
          ptr=0;
        }
    };