Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Donald Haase
Cockatrice
Commits
6810ae46
Commit
6810ae46
authored
Oct 09, 2014
by
Gavin Bisesi
Browse files
Merge pull request #260 from Mawu3n4/master
Find cards by prefix
parents
4070ba8e
d55f6fde
Changes
2
Show whitespace changes
Inline
Side-by-side
cockatrice/src/carddatabase.cpp
View file @
6810ae46
...
@@ -770,11 +770,30 @@ void CardDatabase::loadCardsFromXml(QXmlStreamReader &xml, bool tokens)
...
@@ -770,11 +770,30 @@ void CardDatabase::loadCardsFromXml(QXmlStreamReader &xml, bool tokens)
}
}
}
}
CardInfo
*
CardNameMap
::
findByPrefix
(
const
std
::
string
&
prefix
)
{
int
count
=
0
;
CardInfo
*
found
;
for
(
CardNameMap
::
iterator
it
=
this
->
begin
();
it
!=
this
->
end
();
++
it
)
{
if
(
std
::
mismatch
(
prefix
.
begin
(),
prefix
.
end
(),
it
.
key
().
toStdString
().
begin
()).
first
==
prefix
.
end
())
{
count
++
;
found
=
it
.
value
();
}
}
return
(
count
==
1
?
found
:
NULL
);
}
CardInfo
*
CardDatabase
::
getCardFromMap
(
CardNameMap
&
cardMap
,
const
QString
&
cardName
,
bool
createIfNotFound
)
{
CardInfo
*
CardDatabase
::
getCardFromMap
(
CardNameMap
&
cardMap
,
const
QString
&
cardName
,
bool
createIfNotFound
)
{
CardInfo
*
foundCard
;
if
(
cardName
.
isEmpty
())
if
(
cardName
.
isEmpty
())
return
noCard
;
return
noCard
;
else
if
(
cardMap
.
contains
(
cardName
))
else
if
(
cardMap
.
contains
(
cardName
))
return
cardMap
.
value
(
cardName
);
return
cardMap
.
value
(
cardName
);
else
if
((
foundCard
=
cardMap
.
findByPrefix
(
cardName
.
toStdString
())))
return
foundCard
;
else
if
(
createIfNotFound
)
{
else
if
(
createIfNotFound
)
{
CardInfo
*
newCard
=
new
CardInfo
(
this
,
cardName
,
true
);
CardInfo
*
newCard
=
new
CardInfo
(
this
,
cardName
,
true
);
newCard
->
addToSet
(
getSet
(
"TK"
));
newCard
->
addToSet
(
getSet
(
"TK"
));
...
...
cockatrice/src/carddatabase.h
View file @
6810ae46
...
@@ -180,7 +180,13 @@ signals:
...
@@ -180,7 +180,13 @@ signals:
enum
LoadStatus
{
Ok
,
VersionTooOld
,
Invalid
,
NotLoaded
,
FileError
,
NoCards
};
enum
LoadStatus
{
Ok
,
VersionTooOld
,
Invalid
,
NotLoaded
,
FileError
,
NoCards
};
typedef
QHash
<
QString
,
CardInfo
*>
CardNameMap
;
class
CardNameMap
:
public
QHash
<
QString
,
CardInfo
*>
{
public:
CardInfo
*
findByPrefix
(
const
std
::
string
&
prefix
);
};
typedef
QHash
<
QString
,
CardSet
*>
SetNameMap
;
typedef
QHash
<
QString
,
CardSet
*>
SetNameMap
;
class
CardDatabase
:
public
QObject
{
class
CardDatabase
:
public
QObject
{
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment