NAME

DDC::XS::CQuery - XS interface to DDC C++ CQuery objects

SYNOPSIS

#----------------------------------------------------------------------
# Perliminaries
use DDC::XS;

#----------------------------------------------------------------------
# DDC::XS::CQuery : @ISA=qw(DDC::XS::Object);

# Constructors etc.
$CQuery = DDC::XS::CQuery->new($label);

# Accessors
$string    = $CQuery->getLabel();
undef      = $CQuery->setLabel($Label);
$CQOptions = $CQuery->getLabel();
undef      = $CQuery->setOptions($CQOptions);

# Methods
undef   = $CQuery->Evaluate();
$bool   = $CQuery->Negated();
$bool   = $CQuery->Negate();
$BYTE   = $CQuery->GetMatchId();		#-- returns "rightmost" nonzero match-id dominated by $CQuery
$BYTE   = $CQuery->SetMatchId($matchId);	#-- sets $CQuery match-id, possibly clobbering descendant match-ids
$bool   = $CQuery->HasMatchId();		#-- returns true iff any nontrivial match-id is dominated by $CQuery
$bool   = $CQuery->RootOK();
$string = $CQuery->toJson();
$string = $CQuery->toString();
$string = $CQuery->optionsToString();          #-- like $CQuery->getOptions->toString()
$string = $CQuery->toStringFull();             #-- like $CQuery->toString() . $CQuery->optionsToString()
undef   = $CQuery->ClearNode();
undef   = $CQuery->ClearOptions();
undef   = $CQuery->Clear($deep);

#----------------------------------------------------------------------
# DDC::XS::CQNegatable : @ISA=qw(DDC::XS::CQuery);

# Constructors etc.
$CQNegatable = DDC::XS::CQNegatable->new($label, $negated);

# Accessors
$bool = $CQNegatable->getNegated();
undef = $CQNegatable->setNegated($Negated);

#----------------------------------------------------------------------
# DDC::XS::CQAtomic : @ISA=qw(DDC::XS::CQNegatable);

# Constructors etc.
$CQAtomic = DDC::XS::CQAtomic->new($label, $negated);

#----------------------------------------------------------------------
# DDC::XS::CQBinOp : @ISA=qw(DDC::XS::CQNegatable);

# Constructors etc.
$CQBinOp = DDC::XS::CQBinOp->new($dtr1, $dtr2, $opName, $negated);

# Accessors
$CQuery = $CQBinOp->getDtr1();
undef   = $CQBinOp->setDtr1($dtr1);
$CQuery = $CQBinOp->getDtr2();
undef   = $CQBinOp->setDtr2($dtr2);
$string = $CQBinOp->getOpName();
undef   = $CQBinOp->setOpName($OpName);

#----------------------------------------------------------------------
# DDC::XS::CQAnd : @ISA=qw(DDC::XS::CQBinOp);

# Constructors etc.
$CQAnd = DDC::XS::CQAnd->new($dtr1, $dtr2);

#----------------------------------------------------------------------
# DDC::XS::CQAndImplicit : @ISA=qw(DDC::XS::CQAnd);

# Constructors etc.
$CQAndImplicit = DDC::XS::CQAndImplicit->new($dtr1, $dtr2);

#----------------------------------------------------------------------
# DDC::XS::CQOr : @ISA=qw(DDC::XS::CQBinOp);

# Constructors etc.
$CQOr = DDC::XS::CQOr->new($dtr1, $dtr2);

#----------------------------------------------------------------------
# DDC::XS::CQWith : @ISA=qw(DDC::XS::CQBinOp);

# Constructors etc.
$CQWith = DDC::XS::CQWith->new($dtr1=undef, $dtr2=undef, $matchid=0);

# Accessors
$BYTE   = $CQWith->getMatchId();
undef   = $CQWith->setMatchId($MatchId);

#----------------------------------------------------------------------
# DDC::XS::CQWithout : @ISA=qw(DDC::XS::CQWith);

# Constructors etc.
$CQWithout = DDC::XS::CQWithout->new($dtr1=undef, $dtr2=undef, $matchid=0);

#----------------------------------------------------------------------
# DDC::XS::CQWithor : @ISA=qw(DDC::XS::CQWith);

# Constructors etc.
$CQWithor = DDC::XS::CQWithor->new($dtr1=undef, $dtr2=undef, $matchid=0);

#----------------------------------------------------------------------
# DDC::XS::CQToken : @ISA=qw(DDC::XS::CQAtomic);

# Constructors etc.
$CQToken = DDC::XS::CQToken->new($indexName='', $value='', $matchId=0);

# Accessors
$string = $CQToken->getIndexName();
undef   = $CQToken->setIndexName($IndexName);
$string = $CQToken->getValue();
undef   = $CQToken->setValue($Value);
$BYTE   = $CQToken->getMatchId();
undef   = $CQToken->setMatchId($MatchId);

# Methods
$char   = $CQToken->OperatorKey();
$string = $CQToken->IndexName($DefaultIndexName);
$string = $CQToken->BreakName($DefaultBreakName);

#----------------------------------------------------------------------
# DDC::XS::CQTokExact : @ISA=qw(DDC::XS::CQToken);

# Constructors etc.
$CQTokExact = DDC::XS::CQTokExact->new($indexName, $value);

#----------------------------------------------------------------------
# DDC::XS::CQTokAny : @ISA=qw(DDC::XS::CQToken);

# Constructors etc.
$CQTokAny = DDC::XS::CQTokAny->new($indexName, $value);

#----------------------------------------------------------------------
# DDC::XS::CQTokAnchor : @ISA=qw(DDC::XS::CQToken);

# Constructors etc.
$CQTokAnchor = DDC::XS::CQTokAnchor->new($indexName, $value);

# Accessors
$int  = $CQTokAnchor->getValueInt();
undef = $CQTokAnchor->setValueInt($ValueInt);

#----------------------------------------------------------------------
# DDC::XS::CQTokRegex : @ISA=qw(DDC::XS::CQToken);

# Constructors etc.
$CQTokRegex = DDC::XS::CQTokRegex->new($indexName, $regex, $negated);

# Accessors
$bool = $CQTokRegex->getRegexNegated();
undef = $CQTokRegex->setRegexNegated($RegexNegated);

#----------------------------------------------------------------------
# DDC::XS::CQTokSet : @ISA=qw(DDC::XS::CQToken);

# Constructors etc.
$CQTokSet = DDC::XS::CQTokSet->new($indexName, $rawValue, $values);

# Accessors
\@strings = $CQTokSet->getValues();
undef     = $CQTokSet->setValues($Values);

#----------------------------------------------------------------------
# DDC::XS::CQTokInfl : @ISA=qw(DDC::XS::CQTokSet);

# Constructors etc.
$CQTokInfl = DDC::XS::CQTokInfl->new($indexName, $value, \@expanders);
$CQTokInfl = DDC::XS::CQTokInfl->newSet($indexName, \@values, \@expanders);

# Accessors
\@strings = $CQTokInfl->getExpanders();
undef     = $CQTokInfl->setExpanders(\@Expanders);
#$TxChain  = $CQTokInfl->getTxc();			#-- TODO
#undef     = $CQTokInfl->setTxc($Txc);			#-- TODO
#$TxChain  = $CQTokInfl->GetChain();			#-- TODO

#----------------------------------------------------------------------
# DDC::XS::CQTokSetInfl : @ISA=qw(DDC::XS::CQTokInfl);

# Constructors etc.
$CQTokSetInfl = DDC::XS::CQTokSetInfl->new($indexName, \@values, \@expanders);

# Accessors
\@strings = $CQTokSetInfl->getRawValues();
undef     = $CQTokSetInfl->setRawValues($RawValues);

#----------------------------------------------------------------------
# DDC::XS::CQTokPrefix : @ISA=qw(DDC::XS::CQToken);

# Constructors etc.
$CQTokPrefix = DDC::XS::CQTokPrefix->new($indexName, $prefix);

#----------------------------------------------------------------------
# DDC::XS::CQTokSuffix : @ISA=qw(DDC::XS::CQToken);

# Constructors etc.
$CQTokSuffix = DDC::XS::CQTokSuffix->new($indexName, $suffix);

#----------------------------------------------------------------------
# DDC::XS::CQTokInfix : @ISA=qw(DDC::XS::CQToken);

# Constructors etc.
$CQTokInfix = DDC::XS::CQTokInfix->new($indexName, $infix);

#----------------------------------------------------------------------
# DDC::XS::CQTokPrefixSet : @ISA=qw(DDC::XS::CQTokSet);

# Constructors etc.
$CQTokPrefixSet = DDC::XS::CQTokPrefixSet->new($indexName, \@prefixes);

#----------------------------------------------------------------------
# DDC::XS::CQTokSuffixSet : @ISA=qw(DDC::XS::CQTokSet);

# Constructors etc.
$CQTokSuffixSet = DDC::XS::CQTokSuffixSet->new($indexName, \@suffixes);

#----------------------------------------------------------------------
# DDC::XS::CQTokInfixSet : @ISA=qw(DDC::XS::CQTokSet);

# Constructors etc.
$CQTokInfixSet = DDC::XS::CQTokInfixSet->new($indexName, \@infixes);

#----------------------------------------------------------------------
# DDC::XS::CQTokMorph : @ISA=qw(DDC::XS::CQToken);

# Constructors etc.
$CQTokMorph = DDC::XS::CQTokMorph->new($indexName, \@Items);

# Accessors
\@strings = $CQTokMorph->getItems();
undef     = $CQTokMorph->setItems(\@Items);

# Methods
undef = $CQTokMorph->Append($item);

#----------------------------------------------------------------------
# DDC::XS::CQTokLemma : @ISA=qw(DDC::XS::CQTokMorph);

# Constructors etc.
$CQTokLemma = DDC::XS::CQTokLemma->new($indexName, $value);

#----------------------------------------------------------------------
# DDC::XS::CQTokThes : @ISA=qw(DDC::XS::CQToken);

# Constructors etc.
$CQTokThes = DDC::XS::CQTokThes->new($indexName, $value);

#----------------------------------------------------------------------
# DDC::XS::CQTokChunk : @ISA=qw(DDC::XS::CQToken);

# Constructors etc.
$CQTokChunk = DDC::XS::CQTokChunk->new($indexName, $value);

#----------------------------------------------------------------------
# DDC::XS::CQTokFile : @ISA=qw(DDC::XS::CQToken);

# Constructors etc.
$CQTokFile = DDC::XS::CQTokFile->new($indexName, $fileName);

#----------------------------------------------------------------------
# DDC::XS::CQNear : @ISA=qw(DDC::XS::CQNegatable);

# Constructors etc.
$CQNear = DDC::XS::CQNear->new($dist, $dtr1, $dtr2, $dtr3);

# Accessors
$CQuery = $CQNear->getDtr1();
undef   = $CQNear->setDtr1($dtr1);
$CQuery = $CQNear->getDtr2();
undef   = $CQNear->setDtr2($dtr2);
$CQuery = $CQNear->getDtr3();
undef   = $CQNear->setDtr3($dtr3);
$BYTE   = $CQNear->getDist();
undef   = $CQNear->setDist($Dist);

#----------------------------------------------------------------------
# DDC::XS::CQSeq : @ISA=qw(DDC::XS::CQAtomic);

# Constructors etc.
$CQSeq = DDC::XS::CQSeq->new1     ($item);
$CQSeq = DDC::XS::CQSeq->new      (\@items, \@dists, \@distops);

# Accessors
\@CQTokens = $CQSeq->getItems();
undef      = $CQSeq->setItems(\@Items);
\@Dists    = $CQSeq->getDists();
undef      = $CQSeq->setDists(\@Dists);
\@DistOps  = $CQSeq->getDistOps();
undef      = $CQSeq->setDistOps(\@DistOps);

# Methods
undef = $CQSeq->Append($nextItem, $nextDist, $nextDistOp);

DESCRIPTION

The DDC::XS::CQuery hierarchy provides perl wrappers for the DDC C++ CQuery classes. DDC parsed query objects can be created either manually from perl using the constructors above, or parsed from a query string using the DDC::XS::CQueryCompiler interface. In either case, DDC::XS::CQuery and all other DDC::XS::Object descendants use an internal reference counting strategy in addition to perl's reference counts; see DDC::XS::Object for details. The DDC::XS::Object methods toHash() and newFromHash() may be useful for mapping back and forth between the "opaque" objects in the DDC::XS hierarchy and perl representations of these encoded as HASH-refs, since perl's internal reference-counting strategy applies to the latter.

KNOWN BUGS

Objects should be transparently encoded/decoded to and from perl hash representations.

SEE ALSO

perl(1), DDC::XS(3perl), DDC::XS::Object(3perl), DDC::XS::CQCount(3perl), DDC::XS::CQFilter(3perl), DDC::XS::CQueryOptions(3perl), DDC::XS::CQueryCompiler(3perl).

AUTHOR

Bryan Jurish <moocow@cpan.org>

COPYRIGHT AND LICENSE

Copyright (C) 2015 by Bryan Jurish

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.14.2 or, at your option, any later version of Perl 5 you may have available.