Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 5183 in orxonox.OLD for trunk/src/lib


Ignore:
Timestamp:
Sep 15, 2005, 1:01:00 AM (19 years ago)
Author:
bensch
Message:

orxonox/trunk: SubString now also can split by whiteSpaces :>
this cost me almost 2 hours… sometimes i think, that i am unable to think…. :/
other times it just works, like when learning some Information Transfer

Location:
trunk/src/lib
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/lib/shell/shell.cc

    r5181 r5183  
    4646  this->setName("Shell");
    4747
     48  // Element2D and generals
    4849  this->setAbsCoor2D(3, -400);
    4950  this->textSize = 15;
    5051  this->lineSpacing = 5;
    5152  this->bActive = false;
    52 
    5353
    5454  // BUFFER
  • trunk/src/lib/shell/shell.h

    r5181 r5183  
    4848
    4949    // BUFFERS
    50     void flush();
    5150    void setBufferDisplaySize(unsigned int bufferDisplaySize);
    5251    void printToDisplayBuffer(const char* text);
     52    void flush();
    5353
    5454    void clear();
     
    5656    // EventListener
    5757    virtual void process(const Event &event);
    58 
    5958    // Element2D-functions
    6059    virtual void draw() const;
     
    6362
    6463  private:
    65 
    6664    // helpers //
    6765    Vector calculateLinePosition(unsigned int lineNumber);
    68 //     void testI (int i);
    69 //     void testS (const char* s);
    70 //     void testB (bool b);
    71 //     void testF (float f);
    72 //     void testSF (const char* s, float f);
     66
     67    //     void testI (int i);
     68    //     void testS (const char* s);
     69    //     void testB (bool b);
     70    //     void testF (float f);
     71    //     void testSF (const char* s, float f);
    7372
    7473  private:
  • trunk/src/lib/shell/shell_buffer.cc

    r5177 r5183  
    9191#endif
    9292
    93   vprintf(line, arguments);
     93    vprintf(line, arguments);
    9494#if DEBUG < 3
    9595  else
  • trunk/src/lib/shell/shell_completion.cc

    r5182 r5183  
    2020#include "shell_input.h"
    2121
     22#include "substring.h"
    2223#include "base_object.h"
    2324#include "class_list.h"
     
    6263bool ShellCompletion::autoComplete(ShellInput* input)
    6364{
     65  char* completionLine;
     66
     67  long classID;         //< the classID retrieved from the Class.
     68  char* classBegin;     //< the beginn of the slass string
     69  char* classEnd;       //< the end of the class string
     70  char* objectBegin;    //< the begin of the object string
     71  char* objectEnd;      //< the end of the object string
     72  char* functionBegin;  //< the begin of the function string
     73  char* functionEnd;    //< the end of the function string
     74
    6475  if (input != NULL)
    6576    this->input = input;
    66   //PRINTF(3)("AutoCompletion not implemented yet\n");
    67 
    68   char* completionLine = new char[strlen(this->input->getText())+1];
     77
     78  SubString(input->getText(), true).debug();
     79
     80/*  completionLine = new char[strlen(this->input->getText())+1];
    6981  strcpy(completionLine, this->input->getText());
    7082
     
    92104    this->classComplete(commandBegin);
    93105
    94   delete[] completionLine;
     106  delete[] completionLine;*/
    95107}
    96108
  • trunk/src/lib/shell/shell_completion.h

    r5182 r5183  
    2424  bool autoComplete(ShellInput* input);
    2525  bool classComplete(const char* classBegin);
     26  long classMatch(const char* input, unsigned int* length);
    2627  bool objectComplete(const char* objectBegin, long classID);
     28  bool objectMatch(const char* objectBegin, long classID, unsigned int* length);
    2729  bool functionComplete(const char* functionBegin);
     30  bool functionMatch(const char* functionBegin, long classID, unsigned int* length);
    2831
    2932  bool generalComplete(const tList<const char>* stringList, const char* begin, const char* displayAs = "%s", const char* addBack = NULL, const char* addFront = NULL);
  • trunk/src/lib/util/substring.cc

    r5150 r5183  
    5252  {
    5353    const char* offset = string;
    54     char* end = strchr( string, splitter);
     54    const char* end = strchr( string, splitter);
    5555    while( end != NULL)
    5656    {
     
    6060      assert( strings[i] != NULL);
    6161      strncpy( strings[i], offset, l);
    62       strings[i][l] = 0;
     62      strings[i][l] = '\0';
    6363      i++;
    6464      end++;
     
    7474  else
    7575  {
    76     this->strings[0] = new char[strlen(string)];
     76    this->strings[0] = new char[strlen(string)+1];
    7777    strcpy(this->strings[0], string);
     78  }
     79}
     80
     81
     82/**
     83 * Splits a String into a Substring removing all whiteSpaces
     84 * @param string the String to Split
     85 * @param whiteSpaces MUST BE __TRUE__
     86 *
     87 */
     88SubString::SubString(const char* string, bool whiteSpaces)
     89{
     90  this->splittersCount = 0;
     91  if (string == NULL || whiteSpaces == false)
     92  {
     93    this->strings = NULL;
     94    return;
     95  }
     96
     97  // chop the input to the beginning of something usefull
     98  if (strlen(string) > 0)
     99    string = string + strspn(string, " \t\n");
     100
     101  // count the Splitters
     102  bool lastWasWhiteSpace = false;
     103  for(unsigned int i = 0; i < strlen(string); i++)
     104    if( string[i] == ' ' || string[i] == '\t' || string[i] == '\n' )
     105      lastWasWhiteSpace = true;
     106    else
     107    {
     108      if (lastWasWhiteSpace)
     109        this->splittersCount ++;
     110      lastWasWhiteSpace = false;
     111    }
     112
     113  this->splittersCount += 1;
     114
     115  printf("splitterCount = %d\n", this->splittersCount);
     116
     117  this->strings = new char*[this->splittersCount];
     118  assert (strings != NULL);
     119
     120  int l = 0;
     121  unsigned int i = 0;
     122  if( this->splittersCount > 1)
     123  {
     124    const char* offset = string;
     125    const char* end = offset + strcspn(offset, " \t\n");
     126    for (i = 0; i < this->splittersCount; i++)
     127    {
     128      assert( i < this->splittersCount);
     129      l = end - offset;
     130      this->strings[i] = new char[l + 1];
     131      assert( strings[i] != NULL);
     132      strncpy( strings[i], offset, l);
     133      strings[i][l] = '\0';
     134      end += strspn(end, " \t\n");
     135      offset = end;
     136      printf("'%s'\n", end);
     137      end = offset + strcspn(offset, " \t\n");
     138    }
     139  }
     140  else
     141  {
     142    unsigned int length = strcspn(string, " \t\n");
     143    this->strings[0] = new char[length+1];
     144    strncpy(this->strings[0], string, length);
     145    this->strings[0][length] = '\0';
    78146  }
    79147}
     
    86154  if (this->strings)
    87155  {
    88     for( int i = 0; i < this->splittersCount; i++)
     156    for(unsigned int i = 0; i < this->splittersCount; i++)
    89157      delete[] this->strings[i];
    90158    delete[] this->strings;
     
    105173}
    106174
    107 
    108 
    109175/**
    110176 * Some nice debug information about this SubString
     
    113179{
    114180  PRINT(0)("Substring-information::count=%d ::", this->splittersCount);
    115   for (int i = 0; i < this->splittersCount; i++)
    116     PRINT(0)("s%d:%s::", i, this->strings[i]);
     181  if (this->strings != NULL)
     182    for (unsigned int i = 0; i < this->splittersCount; i++)
     183     PRINT(0)("s%d='%s'::", i, this->strings[i]);
    117184  PRINT(0)("\n");
    118185}
  • trunk/src/lib/util/substring.h

    r5150 r5183  
    1212 public:
    1313  SubString(const char* string, char splitter = ',');
     14  SubString(const char* string, bool whiteSpaces);
    1415  ~SubString();
    1516
Note: See TracChangeset for help on using the changeset viewer.