Exemplo n.º 1
0
void field_op::parse_field_op(const XMLElement &field_op_element,
                              arena_allocator &alloc) {
  typedef std::map<std::string, operator_enum_t> operator_map_t;
  static const operator_map_t operator_map = map_list_of("none", operator_none)(
      "constant", operator_constant)("delta", operator_delta)(
      "default", operator_default)("copy", operator_copy)(
      "increment", operator_increment)("tail", operator_tail);

  auto itr = operator_map.find(field_op_element.Name());
  if (itr == operator_map.end()) {
    BOOST_THROW_EXCEPTION(
        fast_static_error("S1") << reason_info(
            std::string("Invalid field operator ") + field_op_element.Name()));
  }

  op_ = itr->second;

  const char *opContext_key = get_optional_attr(
      field_op_element, "key", context_ ? context_->key_ : nullptr);
  const char *opContext_dict =
      get_optional_attr(field_op_element, "dictionary",
                        context_ ? context_->dictionary_ : nullptr);
  const char *opContext_ns = get_optional_attr(
      field_op_element, "ns", context_ ? context_->ns_ : nullptr);

  if (opContext_key || opContext_dict || opContext_ns) {
    auto new_context = new (alloc) op_context_t;

    new_context->key_ = string_dup(opContext_key, alloc);
    new_context->ns_ = string_dup(opContext_ns, alloc);
    new_context->dictionary_ = string_dup(opContext_dict, alloc);
    context_ = new_context;
  }
}
Exemplo n.º 2
0
void ResponseCurve::setType(ResponseCurveType type)
{
    typedef void (*ResponseCurveCalculator)(ResponseContainer&);
    typedef map<ResponseCurveType, ResponseCurveCalculator> ResponseCurveFunc;
    static ResponseCurveFunc funcs =
            map_list_of
            (RESPONSE_LOG10, &fillResponseLog10)
            (RESPONSE_LINEAR, &fillResponseLinear)
            (RESPONSE_GAMMA, &fillResponseGamma)
            (RESPONSE_SRGB, &fillResponseSRGB)
            ;

    ResponseCurveType type_ = RESPONSE_LINEAR;
    ResponseCurveCalculator func_ = &fillResponseLinear;

    ResponseCurveFunc::const_iterator it = funcs.find(type);
    if (it != funcs.end())
    {
        type_ = it->first;
        func_ = it->second;
    }

    m_type = type_;

    func_(m_responses[RESPONSE_CHANNEL_RED]);
    func_(m_responses[RESPONSE_CHANNEL_GREEN]);
    func_(m_responses[RESPONSE_CHANNEL_BLUE]);
}
Exemplo n.º 3
0
namespace mgraph 
{

const string ELE::_convertele2str[107] = {"LP", "H", "He", "Li", "Be", "B", "C", "N", "O", "F", "Ne",
"Na", "Mg", "Al", "Si", "P", "S", "Cl", "Ar", "K", "Ca", "Sc", "Ti", "V", "Cr", "Mn", "Fe",
"Co", "Ni", "Cu", "Zn", "Ga", "Ge", "As", "Se", "Br", "Kr", "Rb", "Sr", "Y", "Zr", "Nb",
"Mo", "Tc", "Ru", "Rh", "Pd", "Ag", "Cd", "In", "Sn", "Sb", "Te", "I", "Xe", "Cs", "Ba",
"La", "Ce", "Pr", "Nd", "Pm", "Sm", "Eu", "Gd", "Tb", "Dy", "Ho", "Er", "Tm", "Yb", "Lu",
"Hf", "Ta", "W", "Re", "Os", "Ir", "Pt", "Au", "Hg", "Tl", "Pb", "Bi", "Po", "At", "Rn",
"Fr", "Ra", "Ac", "Th", "Pa", "U", "Np", "Pu", "Am", "Cm", "Bk", "Cf", "Es", "Fm", "Md",
"No", "Lr", "Rf", "DU", "*"};

const map<string, ELE::_ELE> ELE::_convertstr2ele = map_list_of
("LP", ELE::LP) ("H",  ELE::H)  ("He", ELE::He) ("Li", ELE::Li) ("Be", ELE::Be)
("B",  ELE::B)  ("C",  ELE::C)  ("N",  ELE::N)  ("O",  ELE::O)  ("F",  ELE::F) 
("Ne", ELE::Ne) ("Na", ELE::Na) ("Mg", ELE::Mg) ("Al", ELE::Al) ("Si", ELE::Si)
("P",  ELE::P)  ("S",  ELE::S)  ("Cl", ELE::Cl) ("Ar", ELE::Ar) ("K",  ELE::K) 
("Ca", ELE::Ca) ("Sc", ELE::Sc) ("Ti", ELE::Ti) ("V",  ELE::V)  ("Cr", ELE::Cr)
("Mn", ELE::Mn) ("Fe", ELE::Fe) ("Co", ELE::Co) ("Ni", ELE::Ni) ("Cu", ELE::Cu)
("Zn", ELE::Zn) ("Ga", ELE::Ga) ("Ge", ELE::Ge) ("As", ELE::As) ("Se", ELE::Se)
("Br", ELE::Br) ("Kr", ELE::Kr) ("Rb", ELE::Rb) ("Sr", ELE::Sr) ("Y",  ELE::Y)
("Zr", ELE::Zr) ("Nb", ELE::Nb) ("Mo", ELE::Mo) ("Tc", ELE::Tc) ("Ru", ELE::Ru)
("Rh", ELE::Rh) ("Pd", ELE::Pd) ("Ag", ELE::Ag) ("Cd", ELE::Cd) ("In", ELE::In)
("Sn", ELE::Sn) ("Sb", ELE::Sb) ("Te", ELE::Te) ("I",  ELE::I)  ("Xe", ELE::Xe)
("Cs", ELE::Cs) ("Ba", ELE::Ba) ("La", ELE::La) ("Ce", ELE::Ce) ("Pr", ELE::Pr)
("Nd", ELE::Nd) ("Pm", ELE::Pm) ("Sm", ELE::Sm) ("Eu", ELE::Eu) ("Gd", ELE::Gd)
("Tb", ELE::Tb) ("Dy", ELE::Dy) ("Ho", ELE::Ho) ("Er", ELE::Er) ("Tm", ELE::Tm)
("Yb", ELE::Yb) ("Lu", ELE::Lu) ("Hf", ELE::Hf) ("Ta", ELE::Ta) ("W",  ELE::W)
("Re", ELE::Re) ("Os", ELE::Os) ("Ir", ELE::Ir) ("Pt", ELE::Pt) ("Au", ELE::Au)
("Hg", ELE::Hg) ("Tl", ELE::Tl) ("Pb", ELE::Pb) ("Bi", ELE::Bi) ("Po", ELE::Po)
("At", ELE::At) ("Rn", ELE::Rn) ("Fr", ELE::Fr) ("Ra", ELE::Ra) ("Ac", ELE::Ac)
("Th", ELE::Th) ("Pa", ELE::Pa) ("U",  ELE::U)  ("Np", ELE::Np) ("Pu", ELE::Pu)
("Am", ELE::Am) ("Cm", ELE::Cm) ("Bk", ELE::Bk) ("Cf", ELE::Cf) ("Es", ELE::Es)
("Fm", ELE::Fm) ("Md", ELE::Md) ("No", ELE::No) ("Lr", ELE::Lr) ("Rf", ELE::Rf)
("DU", ELE::DU) ("*", ELE::Any);

const string GEO::_convertg2str[7] = {"none", "lin", "tri", "tet", "bip", "oct", "UNK"};

const map<string, GEO::_GEO> GEO::_convertstr2g = map_list_of
("none", GEO::none) ("lin", GEO::lin)
("tri", GEO::tri) ("tet", GEO::tet)
("bip", GEO::bip) ("oct", GEO::oct)
("UNK", GEO::UNK);

}
Exemplo n.º 4
0
namespace mgraph 
{

const string BT::_convertbt2str[6] = {"s", "re", "ar", "d", "t", "UNK"};

const map<string, BT::_BT> BT::_convertstr2bt = map_list_of
("1",  BT::s)  ("s", BT::s)
("re", BT::re)
("ar", BT::ar)
("2",  BT::d)  ("d", BT::d)
("3",  BT::t)  ("t", BT::t)
("UNK", BT::UNK);

}
Exemplo n.º 5
0
FusionOperator IFusionOperator::fromString(const std::string& type)
{
    typedef map<string, FusionOperator, pfs::utils::StringUnsensitiveComp> Dict;
    static Dict v =
            map_list_of
            ("debevec", DEBEVEC)
            ("robertson", ROBERTSON)
            ("robertson-auto", ROBERTSON_AUTO)
            ;

    Dict::const_iterator it = v.find(type);
    if (it != v.end())
    {
        return it->second;
    }
    return DEBEVEC;
}
Exemplo n.º 6
0
ResponseCurveType ResponseCurve::fromString(const std::string& type)
{
    typedef map<string, ResponseCurveType, pfs::utils::StringUnsensitiveComp> Dict;
    static Dict v =
            map_list_of
            ("log10", RESPONSE_LOG10)
            ("log", RESPONSE_LOG10)
            ("linear", RESPONSE_LINEAR)
            ("gamma", RESPONSE_GAMMA)
            ("srgb", RESPONSE_SRGB)
            ;

    Dict::const_iterator it = v.find(type);
    if ( it != v.end() )
    {
        return it->second;
    }
    return RESPONSE_LINEAR;
}
Exemplo n.º 7
0
namespace chess_engine
{
  /*! name of chess colors */
  static const map<int, string> NameColors = map_list_of
    (NoColor, "nocolor")
    (White,   "white")
    (Black,   "black")
  ;
  
  /*! name of chess pieces */
  static const map<int, string> NamePieces = map_list_of
    (NoPiece,     "nopiece")
    (King,        "King")
    (Queen,       "Queen")
    (Rook,        "Rook")
    (Bishop,      "Bishop")
    (Knight,      "Knight")
    (Pawn,        "Pawn")
    (UndefPiece,  "undefined")
  ;
  
  /*! unicode of white chess figurines */
  static const map<int, string> FigurineWhitePieces = map_list_of
    (NoPiece,     " ")
    (King,        "\U00002654")
    (Queen,       "\U00002655")
    (Rook,        "\U00002656")
    (Bishop,      "\U00002657")
    (Knight,      "\U00002658")
    (Pawn,        "\U00002659")
    (UndefPiece,  "\U0000003F")
  ;
  
  /*! unicode of black chess figurines */
  static const map<int, string> FigurineBlackPieces = map_list_of
    (NoPiece,     " ")
    (King,        "\U0000265A")
    (Queen,       "\U0000265B")
    (Rook,        "\U0000265C")
    (Bishop,      "\U0000265D")
    (Knight,      "\U0000265E")
    (Pawn,        "\U0000265F")
    (UndefPiece,  "\U0000003F")
  ;
  
  /*! name of chess castle moves */
  static const map<int, string> NameCastling = map_list_of
    (NoCastling,  "nocastling")
    (KingSide,    "kingside")
    (QueenSide,   "queenside")
  ;
  
  /*! name of chess action results */
  static const map<int, string> NameResults = map_list_of
    (NoResult,      "noresult")
    (Ok,            "ok")
    (BadMove,       "badmove")
    (OutOfTurn,     "outofturn")
    (Busy,          "busy")
    (InPlay,        "inplay")
    (Checkmate,     "checkmate")
    (Draw,          "draw")
    (Resign,        "resign")
    (Disqualified,  "disqualified")
    (NoGame,        "nogame")
    (GameFatal,     "gamefatal")
  ;
  
  /*! name of chess check modifiers */
  static const std::map<int, std::string> NameCheckMod = map_list_of
    (NoCheckMod,      "nocheck")
    (ModCheck,        "check")
    (ModDoubleCheck,  "doublecheck")
    (ModCheckmate,    "checkmate")
  ;

  /*! name of chess algebras */
  static const std::map<int, std::string> NameAlgebra = map_list_of
    (UnknownAN, "unknown")
    (CAN,       "Coordinate Algebra Notation")
    (SAN,       "Standard Algebra Notation")
  ;

  // name map iterator type
  typedef std::map<int, std::string>::const_iterator name_iter;

  const string nameOfColor(ChessColor color)
  {
    name_iter iter = NameColors.find(color);

    return iter != NameColors.end()? iter->second: NameColors.at(NoColor);
  }
  
  const string nameOfPiece(ChessPiece piece)
  {
    name_iter iter = NamePieces.find(piece);

    return iter != NamePieces.end()? iter->second: NamePieces.at(NoPiece);
  }
  
  const string figurineOfPiece(ChessColor color, ChessPiece piece)
  {
    static const string strUnknown = "\U00002047"; // "??"

    name_iter iter;

    switch( color )
    {
      case White:
        iter = FigurineWhitePieces.find(piece);
        return iter != FigurineWhitePieces.end()? iter->second: strUnknown;
      case Black:
        iter = FigurineBlackPieces.find(piece);
        return iter != FigurineBlackPieces.end()? iter->second: strUnknown;
      default:
        return strUnknown;
    }
  }
  
  const string nameOfCastling(ChessCastling side)
  {
    name_iter iter = NameCastling.find(side);

    return iter != NameCastling.end()?  iter->second:
                                        NameCastling.at(NoCastling);
  }
  
  const string nameOfResult(ChessResult result)
  {
    name_iter iter = NameResults.find(result);

    return iter != NameResults.end()? iter->second: NameResults.at(NoResult);
  }

  const string nameOfCheckMod(ChessCheckMod checkmod)
  {
    name_iter iter = NameCheckMod.find(checkmod);

    return iter != NameCheckMod.end()? iter->second:
                                       NameCheckMod.at(NoCheckMod);
  }

  const string nameOfAlgebra(ChessAlgebra algebra)
  {
    name_iter iter = NameAlgebra.find(algebra);

    return iter != NameAlgebra.end()? iter->second: NameAlgebra.at(UnknownAN);
  }

  ChessResult rcToMoveResult(int rc)
  {
    if( rc < 0 )
    {
      rc = -rc;
    }

    switch( rc )
    {
      case CE_OK:                       // good move
        return Ok;
      case CE_ECODE_CHESS_BAD_MOVE:     // invalid move 
      case CE_ECODE_CHESS_PARSE:
        return BadMove;
      case CE_ECODE_CHESS_OUT_OF_TURN:  // player out of turn
        return OutOfTurn;
      case CE_ECODE_BUSY:               // move already in progress
        return Busy;
      case CE_ECODE_CHESS_NO_GAME:      // no game in progress
        return NoGame;
      case CE_ECODE_NO_EXEC:
      case CE_ECODE_TIMEDOUT:
      case CE_ECODE_INTR:
        return NoResult;
      default:                          // fatal game errors
        return GameFatal;
    }
  }

} // namespace chess_engine
Exemplo n.º 8
0
typedef map<
     pair<unsigned int,unsigned int>
    ,function<set<Code> (auto_ptr<OperatorSpace>,bool)>
    > gatherCodesImplsType;

static const gatherCodesImplsType gatherCodesImpls = map_list_of
        (make_pair(1u,1u),gatherCodesImpl<1,1>)
        (make_pair(1u,2u),gatherCodesImpl<1,2>)
        (make_pair(1u,3u),gatherCodesImpl<1,3>)
        (make_pair(1u,4u),gatherCodesImpl<1,4>)
        (make_pair(1u,5u),gatherCodesImpl<1,5>)
        (make_pair(2u,1u),gatherCodesImpl<2,1>)
        (make_pair(2u,2u),gatherCodesImpl<2,2>)
        (make_pair(2u,3u),gatherCodesImpl<2,3>)
        (make_pair(2u,4u),gatherCodesImpl<2,4>)
        (make_pair(2u,5u),gatherCodesImpl<2,5>)
        (make_pair(3u,1u),gatherCodesImpl<3,1>)
        (make_pair(3u,2u),gatherCodesImpl<3,2>)
        (make_pair(3u,3u),gatherCodesImpl<3,3>)
        (make_pair(3u,4u),gatherCodesImpl<3,4>)
        (make_pair(4u,1u),gatherCodesImpl<4,1>)
        (make_pair(4u,2u),gatherCodesImpl<4,2>)
        (make_pair(4u,3u),gatherCodesImpl<4,3>)
        (make_pair(5u,1u),gatherCodesImpl<5,1>)
        (make_pair(5u,2u),gatherCodesImpl<5,2>)
        (make_pair(6u,1u),gatherCodesImpl<6,1>);

set<Code> gatherCodes(
      auto_ptr<OperatorSpace> initial_space
    , const bool ignore_solutions_with_trivial_columns
) {