* src/misc/optionmap.hh, src/misc/optionmap.cc

(option_map::parse_options): Rewrite.  Do not modify the input
string, allow !foo as a shorthand for foo=0, and support K and
M suffixes for values.
* src/tgbatest/randtgba.cc (cons_emptiness_check): Simplify.
* wrap/python/spot.i: Process optionmap.hh.
* wrap/python/tests/optionmap.py: New file.
* wrap/python/tests/Makefile.am (TESTS): Add it.
This commit is contained in:
Alexandre Duret-Lutz 2005-02-17 15:01:51 +00:00
parent f3effb9da0
commit fed4b6f05c
7 changed files with 170 additions and 40 deletions

View file

@ -1,4 +1,4 @@
// Copyright (C) 2003, 2004 Laboratoire d'Informatique de Paris 6 (LIP6),
// Copyright (C) 2003, 2004, 2005 Laboratoire d'Informatique de Paris 6 (LIP6),
// département Systèmes Répartis Coopératifs (SRC), Université Pierre
// et Marie Curie.
//
@ -36,6 +36,7 @@
#include "misc/bddalloc.hh"
#include "misc/minato.hh"
#include "misc/modgray.hh"
#include "misc/optionmap.hh"
#include "misc/random.hh"
#include "ltlast/formula.hh"
@ -96,6 +97,7 @@ using namespace spot;
%include "misc/version.hh"
%include "misc/bddalloc.hh"
%include "misc/minato.hh"
%include "misc/optionmap.hh"
%include "misc/random.hh"
%feature("director") spot::loopless_modular_mixed_radix_gray_code;

View file

@ -1,4 +1,4 @@
## Copyright (C) 2003, 2004 Laboratoire d'Informatique de Paris 6 (LIP6),
## Copyright (C) 2003, 2004, 2005 Laboratoire d'Informatique de Paris 6 (LIP6),
## département Systèmes Répartis Coopératifs (SRC), Université Pierre
## et Marie Curie.
##
@ -34,4 +34,5 @@ TESTS = \
ltl2tgba.test \
interdep.py \
minato.py \
modgray.py
modgray.py \
optionmap.py

64
wrap/python/tests/optionmap.py Executable file
View file

@ -0,0 +1,64 @@
# -*- mode: python; coding: iso-8859-1 -*-
# Copyright (C) 2005 Laboratoire d'Informatique de Paris 6 (LIP6),
# département Systèmes Répartis Coopératifs (SRC), Université Pierre
# et Marie Curie.
#
# This file is part of Spot, a model checking library.
#
# Spot is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# Spot is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
# License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Spot; see the file COPYING. If not, write to the Free
# Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
import ltihooks
import spot
o = spot.option_map()
res = o.parse_options("optA, opta=2M, optb =4 ; optB = 7\
, optC= 10")
assert not res
assert o.get('optA') == 1
assert o.get('opta') == 2*1024*1024
assert o.get('optb') == 4
assert o.get('optB') == 7
assert o.get('optC') == 10
assert o.get('none') == 0
assert o.get('none', 16) == 16
o.set('optb', 40)
assert o.get('optb') == 40
res = o.parse_options("!optA !optb optC, !optB")
assert not res
assert o.get('optA') == 0
assert o.get('opta') == 2*1024*1024
assert o.get('optb') == 0
assert o.get('optB') == 0
assert o.get('optC') == 1
res = o.parse_options("!")
print res
assert res == "!"
res = o.parse_options("foo, !opt = 1")
print res
assert res == "!opt = 1"
res = o.parse_options("foo=3, opt == 1")
print res
assert res == "opt == 1"
res = o.parse_options("foo=3opt == 1")
print res
assert res == "3opt == 1"