Provided by: inventor-doc_2.1.5-10-18_all bug


       SoMField — base class for all multiple-valued fields


       SoField > SoMField


       #include <Inventor/fields/SoField.h>

          Methods from class SoMField:

     int                 getNum() const
     void                setNum(int num)
     virtual void        deleteValues(int start, int num = -1)
     virtual void        insertSpace(int start, int num)
     SbBool              set1(int index, const char *valueString)
     void                get1(int index, SbString &valueString)
     static SoType       getClassTypeId()

          Methods from class SoField:

     void                setIgnored(SbBool ignore)
     SbBool              isIgnored() const
     SbBool              isDefault() const
     virtual SoType      getTypeId() const
     virtual SbBool      isOfType(SoType type) const
     SbBool              set(const char *valueString)
     void                get(SbString &valueString)
     int                 operator ==(const SoField &f) const
     int                 operator !=(const SoField &f) const
     void                touch()
     SbBool              connectFrom(SoField *fromField)
     SbBool              connectFrom(SoEngineOutput *fromEngine)
     void                disconnect()
     SbBool              isConnected() const
     SbBool              isConnectedFromField() const
     SbBool              getConnectedField(SoField *&writingField) const
     SbBool              isConnectedFromEngine() const
     SbBool              getConnectedEngine(SoEngineOutput *&engineOutput) const
     void                enableConnection(SbBool flag)
     SbBool              isConnectionEnabled() const
     int                 getForwardConnections(SoFieldList &list) const
     SoFieldContainer *  getContainer() const


       Each  class  derived from SoMField begins with an SoMF prefix and contains a dynamic array
       of values of a particular type. Each has a setValues() method that is passed a pointer  to
       a const array of values of the correct type; these values are copied into the array in the
       field, making extra room in the array if necessary. The start and num parameters  to  this
       method indicate the starting array index to copy into and the number of values to copy.

       The  getValues() method for a multiple-value field returns a const pointer to the array of
       values in the field. (Because this pointer is const, it cannot be used to change values in
       this array.)

       In  addition,  the  indexing  operator  "[]" is overloaded to return the i'th value in the
       array; because it returns a const reference, it can be used only to get values, not to set

       Methods  are  provided  for getting the number of values in the field, inserting space for
       new values in the middle, and deleting values.

       There are other methods that allow you to set only one value of several in the  field  and
       to set the field to contain one and only one value.

       Two  other  methods  can be used to make several changes to a multiple-value field without
       the overhead of copying values into and out  of  the  fields.  The  startEditing()  method
       returns  a non-const pointer to the array of values in the field; this pointer can then be
       used to change (but not add or remove) any values in the array. The finishEditing() method
       indicates  that  the  editing  is  done  and  notifies  any sensors or engines that may be
       connected to the field.

       SoMFields are written to file as a series of values separated by commas, all  enclosed  in
       square  brackets. If the field has no values (getNum() returns zero), then only the square
       brackets ("[]") are written. The last value may optionally be followed by  a  comma.  Each
       field  subtype  defines  how the values are written; for example, a field whose values are
       integers might be written as:

          [ 1, 2, 3, 4 ]
          [ 1, 2, 3, 4, ]


     int                 getNum() const
          Returns the number of values currently in the field.

     void                setNum(int num)
          Forces this field  to  have  exactly  num  values,  inserting  or  deleting  values  as

     virtual void        deleteValues(int start, int num = -1)
          Deletes  num  values  beginning at index start (index start through start+num-1 will be
          deleted, and any leftover values will be moved down to fill in the gap created). A  num
          of  -1 means delete all values from start to the last value in the field; getNum() will
          return start as the number of values in the field after this operation (deleteValues(0,
          -1) empties the field).

     virtual void        insertSpace(int start, int num)
          Inserts  space  for  num values at index start. Index start through start+num-1 will be
          moved up to make room. For example, to make room for 7 new values at the  beginning  of
          the field call insertSpace(0, 10).

     SbBool              set1(int index, const char *valueString)
     void                get1(int index, SbString &valueString)
          These  are  equivalent  to  the set() and get() methods of SoField, but they operate on
          only one value. See the SoField methods for details.

     static SoType       getClassTypeId()
          Return the type identifier for this field class.


       SoNode, SoEngine