Changeset 955 for cpp/frams/vm


Ignore:
Timestamp:
06/25/20 00:34:29 (4 years ago)
Author:
Maciej Komosinski
Message:

Genetic format ID becomes a string (no longer limited to a single character)

Location:
cpp/frams/vm
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • cpp/frams/vm/classes/genoobj.cpp

    r732 r955  
    8686void GenoObj::get_format(ExtValue *ret)
    8787{
    88         char format_as_string[2] = { getFormat(), 0 };
    89         ret->setString(format_as_string);
     88        ret->setString(getFormat());
    9089}
    9190
     
    101100}
    102101
    103 char GenoObj::formatFromExtValue(ExtValue& v)
     102SString GenoObj::formatFromExtValue(ExtValue& v)
    104103{
    105104        if (v.getType() == TInt)
    106                 return v.getInt();
     105        {
     106                char ch = v.getInt();
     107                return SString(&ch,1);
     108        }
    107109        if (v.getType() == TString)
    108110        {
    109                 SString s = v.getString();
    110                 if (s.len() == 1)
    111                         return s.charAt(0);
     111                return v.getString();
    112112        }
    113113        return Geno::INVALID_FORMAT;
     
    198198                SString n = vec->get(1) ? vec->get(1)->getString() : SString::empty();
    199199                SString c = vec->get(2) ? vec->get(2)->getString() : SString::empty();
    200                 *ret = makeDynamicObjectAndDecRef(new Geno(g, -1, n, c));
     200                *ret = makeDynamicObjectAndDecRef(new Geno(g, Geno::UNKNOWN_FORMAT, n, c));
    201201        }
    202202        else
  • cpp/frams/vm/classes/genoobj.h

    r732 r955  
    3939        static Geno* fromObject(const ExtValue& v, bool warn = true);
    4040        static ParamInterface* getInterface();
    41         static char formatFromExtValue(ExtValue& v);
     41        static SString formatFromExtValue(ExtValue& v);
    4242
    4343        static Param& getStaticParam();
  • cpp/frams/vm/framscript.l

    r950 r955  
    117117{
    118118int len=src.len();
    119 SString ret((len*11)/10+10);
     119SString ret;
     120ret.reserve((len*11)/10+10);
    120121const char*t=src.c_str();
    121122while(len>0)
  • cpp/frams/vm/framscript.y

    r863 r955  
    15141514SString s=val.getString();
    15151515int len=s.len();
    1516 SString ret((len*11)/10+10);
     1516SString ret;
     1517ret.reserve((len*11)/10+10);
    15171518ret+='\"';
    15181519const char*t=s.c_str();
Note: See TracChangeset for help on using the changeset viewer.