@ -1,23 +0,0 @@ |
|||||
|
|
||||
#-DHAVE_CONFIG_H -I./../include -fno-exceptions -funsigned-char -std=c++11 -MT symbol-table.lo -MD -MP -MF .deps/symbol-table.Tpo -c symbol-table.cc -fno-common -DPIC -o .libs/symbol-table.o |
|
||||
|
|
||||
include_directories(./include/) |
|
||||
install(DIRECTORY include/ DESTINATION include/ |
|
||||
FILES_MATCHING PATTERN "*.h") |
|
||||
|
|
||||
add_subdirectory(lib) |
|
||||
|
|
||||
if(HAVE_SCRIPT) |
|
||||
add_subdirectory(script) |
|
||||
endif(HAVE_SCRIPT) |
|
||||
|
|
||||
if(HAVE_BIN) |
|
||||
add_subdirectory(bin) |
|
||||
endif(HAVE_BIN) |
|
||||
|
|
||||
add_subdirectory(extensions) |
|
||||
|
|
||||
if(BUILD_TESTING) |
|
||||
enable_testing() |
|
||||
add_subdirectory(test) |
|
||||
endif(BUILD_TESTING) |
|
@ -1,67 +0,0 @@ |
|||||
file(GLOB HEADER_FILES ../../include/fst/extensions/special/*.h) |
|
||||
message(STATUS "${HEADER_FILES}") |
|
||||
|
|
||||
if(HAVE_BIN) |
|
||||
add_executable(fstspecial-bin |
|
||||
../../bin/fstconvert.cc |
|
||||
../../bin/fstconvert-main.cc |
|
||||
phi-fst.cc |
|
||||
rho-fst.cc |
|
||||
sigma-fst.cc |
|
||||
) |
|
||||
|
|
||||
set_target_properties(fstspecial-bin PROPERTIES |
|
||||
FOLDER special/bin |
|
||||
OUTPUT_NAME fstspecial |
|
||||
) |
|
||||
|
|
||||
target_link_libraries(fstspecial-bin |
|
||||
fstscript |
|
||||
fst |
|
||||
${CMAKE_DL_LIBS} |
|
||||
) |
|
||||
endif(HAVE_BIN) |
|
||||
|
|
||||
|
|
||||
add_library(fstspecial |
|
||||
phi-fst.cc |
|
||||
rho-fst.cc |
|
||||
sigma-fst.cc |
|
||||
${HEADER_FILES} |
|
||||
) |
|
||||
|
|
||||
set_target_properties(fstspecial PROPERTIES |
|
||||
SOVERSION "${SOVERSION}" |
|
||||
FOLDER special |
|
||||
) |
|
||||
target_link_libraries(fstspecial |
|
||||
fst |
|
||||
) |
|
||||
|
|
||||
set(FST_SPECIAL_INSTALL_TARGETS fstspecial) |
|
||||
if(HAVE_BIN) |
|
||||
list(APPEND FST_SPECIAL_INSTALL_TARGETS fstspecial-bin) |
|
||||
endif() |
|
||||
|
|
||||
install(TARGETS ${FST_SPECIAL_INSTALL_TARGETS} |
|
||||
LIBRARY DESTINATION lib |
|
||||
RUNTIME DESTINATION bin |
|
||||
ARCHIVE DESTINATION lib |
|
||||
) |
|
||||
|
|
||||
function (add_module _name) |
|
||||
add_library(${ARGV}) |
|
||||
if (TARGET ${_name}) |
|
||||
target_link_libraries(${_name} fst) |
|
||||
set_target_properties(${_name} |
|
||||
PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS true |
|
||||
FOLDER special/modules |
|
||||
) |
|
||||
endif() |
|
||||
|
|
||||
install(TARGETS ${_name} LIBRARY DESTINATION lib/fst) |
|
||||
endfunction() |
|
||||
|
|
||||
add_module(phi-fst MODULE phi-fst.cc) |
|
||||
add_module(rho-fst MODULE rho-fst.cc) |
|
||||
add_module(sigma-fst MODULE sigma-fst.cc) |
|
@ -1,219 +0,0 @@ |
|||||
// Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||
// you may not use this file except in compliance with the License. |
|
||||
// You may obtain a copy of the License at |
|
||||
// |
|
||||
// http://www.apache.org/licenses/LICENSE-2.0 |
|
||||
// |
|
||||
// Unless required by applicable law or agreed to in writing, software |
|
||||
// distributed under the License is distributed on an "AS IS" BASIS, |
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||
// See the License for the specific language governing permissions and |
|
||||
// limitations under the License. |
|
||||
// |
|
||||
// See www.openfst.org for extensive documentation on this weighted |
|
||||
// finite-state transducer library. |
|
||||
// |
|
||||
// Google-style flag handling declarations and inline definitions. |
|
||||
|
|
||||
#ifndef FST_LIB_FLAGS_H_ |
|
||||
#define FST_LIB_FLAGS_H_ |
|
||||
|
|
||||
#include <cstdlib> |
|
||||
|
|
||||
#include <iostream> |
|
||||
#include <map> |
|
||||
#include <set> |
|
||||
#include <sstream> |
|
||||
#include <string> |
|
||||
|
|
||||
#include <fst/lock.h> |
|
||||
#include <fst/types.h> |
|
||||
|
|
||||
#include "gflags/gflags.h" |
|
||||
#include "glog/logging.h" |
|
||||
|
|
||||
using std::string; |
|
||||
|
|
||||
// FLAGS USAGE: |
|
||||
// |
|
||||
// Definition example: |
|
||||
// |
|
||||
// DEFINE_int32(length, 0, "length"); |
|
||||
// |
|
||||
// This defines variable FLAGS_length, initialized to 0. |
|
||||
// |
|
||||
// Declaration example: |
|
||||
// |
|
||||
// DECLARE_int32(length); |
|
||||
// |
|
||||
// SET_FLAGS() can be used to set flags from the command line |
|
||||
// using, for example, '--length=2'. |
|
||||
// |
|
||||
// ShowUsage() can be used to print out command and flag usage. |
|
||||
|
|
||||
// #define DECLARE_bool(name) extern bool FLAGS_ ## name |
|
||||
// #define DECLARE_string(name) extern string FLAGS_ ## name |
|
||||
// #define DECLARE_int32(name) extern int32 FLAGS_ ## name |
|
||||
// #define DECLARE_int64(name) extern int64 FLAGS_ ## name |
|
||||
// #define DECLARE_double(name) extern double FLAGS_ ## name |
|
||||
|
|
||||
template <typename T> |
|
||||
struct FlagDescription { |
|
||||
FlagDescription(T* addr, const char* doc, const char* type, const char* file, |
|
||||
const T val) |
|
||||
: address(addr), |
|
||||
doc_string(doc), |
|
||||
type_name(type), |
|
||||
file_name(file), |
|
||||
default_value(val) {} |
|
||||
|
|
||||
T* address; |
|
||||
const char* doc_string; |
|
||||
const char* type_name; |
|
||||
const char* file_name; |
|
||||
const T default_value; |
|
||||
}; |
|
||||
|
|
||||
template <typename T> |
|
||||
class FlagRegister { |
|
||||
public: |
|
||||
static FlagRegister<T>* GetRegister() { |
|
||||
static auto reg = new FlagRegister<T>; |
|
||||
return reg; |
|
||||
} |
|
||||
|
|
||||
const FlagDescription<T>& GetFlagDescription(const string& name) const { |
|
||||
fst::MutexLock l(&flag_lock_); |
|
||||
auto it = flag_table_.find(name); |
|
||||
return it != flag_table_.end() ? it->second : 0; |
|
||||
} |
|
||||
|
|
||||
void SetDescription(const string& name, const FlagDescription<T>& desc) { |
|
||||
fst::MutexLock l(&flag_lock_); |
|
||||
flag_table_.insert(make_pair(name, desc)); |
|
||||
} |
|
||||
|
|
||||
bool SetFlag(const string& val, bool* address) const { |
|
||||
if (val == "true" || val == "1" || val.empty()) { |
|
||||
*address = true; |
|
||||
return true; |
|
||||
} else if (val == "false" || val == "0") { |
|
||||
*address = false; |
|
||||
return true; |
|
||||
} else { |
|
||||
return false; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
bool SetFlag(const string& val, string* address) const { |
|
||||
*address = val; |
|
||||
return true; |
|
||||
} |
|
||||
|
|
||||
bool SetFlag(const string& val, int32* address) const { |
|
||||
char* p = 0; |
|
||||
*address = strtol(val.c_str(), &p, 0); |
|
||||
return !val.empty() && *p == '\0'; |
|
||||
} |
|
||||
|
|
||||
bool SetFlag(const string& val, int64* address) const { |
|
||||
char* p = 0; |
|
||||
*address = strtoll(val.c_str(), &p, 0); |
|
||||
return !val.empty() && *p == '\0'; |
|
||||
} |
|
||||
|
|
||||
bool SetFlag(const string& val, double* address) const { |
|
||||
char* p = 0; |
|
||||
*address = strtod(val.c_str(), &p); |
|
||||
return !val.empty() && *p == '\0'; |
|
||||
} |
|
||||
|
|
||||
bool SetFlag(const string& arg, const string& val) const { |
|
||||
for (typename std::map<string, FlagDescription<T>>::const_iterator it = |
|
||||
flag_table_.begin(); |
|
||||
it != flag_table_.end(); ++it) { |
|
||||
const string& name = it->first; |
|
||||
const FlagDescription<T>& desc = it->second; |
|
||||
if (arg == name) return SetFlag(val, desc.address); |
|
||||
} |
|
||||
return false; |
|
||||
} |
|
||||
|
|
||||
void GetUsage(std::set<std::pair<string, string>>* usage_set) const { |
|
||||
for (auto it = flag_table_.begin(); it != flag_table_.end(); ++it) { |
|
||||
const string& name = it->first; |
|
||||
const FlagDescription<T>& desc = it->second; |
|
||||
string usage = " --" + name; |
|
||||
usage += ": type = "; |
|
||||
usage += desc.type_name; |
|
||||
usage += ", default = "; |
|
||||
usage += GetDefault(desc.default_value) + "\n "; |
|
||||
usage += desc.doc_string; |
|
||||
usage_set->insert(make_pair(desc.file_name, usage)); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
private: |
|
||||
string GetDefault(bool default_value) const { |
|
||||
return default_value ? "true" : "false"; |
|
||||
} |
|
||||
|
|
||||
string GetDefault(const string& default_value) const { |
|
||||
return "\"" + default_value + "\""; |
|
||||
} |
|
||||
|
|
||||
template <class V> |
|
||||
string GetDefault(const V& default_value) const { |
|
||||
std::ostringstream strm; |
|
||||
strm << default_value; |
|
||||
return strm.str(); |
|
||||
} |
|
||||
|
|
||||
mutable fst::Mutex flag_lock_; // Multithreading lock. |
|
||||
std::map<string, FlagDescription<T>> flag_table_; |
|
||||
}; |
|
||||
|
|
||||
template <typename T> |
|
||||
class FlagRegisterer { |
|
||||
public: |
|
||||
FlagRegisterer(const string& name, const FlagDescription<T>& desc) { |
|
||||
auto registr = FlagRegister<T>::GetRegister(); |
|
||||
registr->SetDescription(name, desc); |
|
||||
} |
|
||||
|
|
||||
private: |
|
||||
FlagRegisterer(const FlagRegisterer&) = delete; |
|
||||
FlagRegisterer& operator=(const FlagRegisterer&) = delete; |
|
||||
}; |
|
||||
|
|
||||
#define DEFINE_VAR(type, name, value, doc) \ |
|
||||
type FLAGS_##name = value; \ |
|
||||
static FlagRegisterer<type> name##_flags_registerer( \ |
|
||||
#name, \ |
|
||||
FlagDescription<type>(&FLAGS_##name, doc, #type, __FILE__, value)) |
|
||||
|
|
||||
// #define DEFINE_bool(name, value, doc) DEFINE_VAR(bool, name, value, doc) |
|
||||
// #define DEFINE_string(name, value, doc) \ |
|
||||
// DEFINE_VAR(string, name, value, doc) |
|
||||
// #define DEFINE_int32(name, value, doc) DEFINE_VAR(int32, name, value, doc) |
|
||||
// #define DEFINE_int64(name, value, doc) DEFINE_VAR(int64, name, value, doc) |
|
||||
// #define DEFINE_double(name, value, doc) DEFINE_VAR(double, name, value, doc) |
|
||||
|
|
||||
// Temporary directory. |
|
||||
DECLARE_string(tmpdir); |
|
||||
|
|
||||
void SetFlags(const char* usage, int* argc, char*** argv, bool remove_flags, |
|
||||
const char* src = ""); |
|
||||
|
|
||||
#define SET_FLAGS(usage, argc, argv, rmflags) \ |
|
||||
gflags::ParseCommandLineFlags(argc, argv, true) |
|
||||
// SetFlags(usage, argc, argv, rmflags, __FILE__) |
|
||||
|
|
||||
// Deprecated; for backward compatibility. |
|
||||
inline void InitFst(const char* usage, int* argc, char*** argv, bool rmflags) { |
|
||||
return SetFlags(usage, argc, argv, rmflags); |
|
||||
} |
|
||||
|
|
||||
void ShowUsage(bool long_usage = true); |
|
||||
|
|
||||
#endif // FST_LIB_FLAGS_H_ |
|
@ -1,78 +0,0 @@ |
|||||
// Licensed under the Apache License, Version 2.0 (the "License"); |
|
||||
// you may not use this file except in compliance with the License. |
|
||||
// You may obtain a copy of the License at |
|
||||
// |
|
||||
// http://www.apache.org/licenses/LICENSE-2.0 |
|
||||
// |
|
||||
// Unless required by applicable law or agreed to in writing, software |
|
||||
// distributed under the License is distributed on an "AS IS" BASIS, |
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
||||
// See the License for the specific language governing permissions and |
|
||||
// limitations under the License. |
|
||||
// |
|
||||
// See www.openfst.org for extensive documentation on this weighted |
|
||||
// finite-state transducer library. |
|
||||
// |
|
||||
// Google-style logging declarations and inline definitions. |
|
||||
|
|
||||
#ifndef FST_LIB_LOG_H_ |
|
||||
#define FST_LIB_LOG_H_ |
|
||||
|
|
||||
#include <cassert> |
|
||||
#include <iostream> |
|
||||
#include <string> |
|
||||
|
|
||||
#include <fst/flags.h> |
|
||||
#include <fst/types.h> |
|
||||
|
|
||||
using std::string; |
|
||||
|
|
||||
DECLARE_int32(v); |
|
||||
|
|
||||
class LogMessage { |
|
||||
public: |
|
||||
LogMessage(const string& type) : fatal_(type == "FATAL") { |
|
||||
std::cerr << type << ": "; |
|
||||
} |
|
||||
~LogMessage() { |
|
||||
std::cerr << std::endl; |
|
||||
if (fatal_) exit(1); |
|
||||
} |
|
||||
std::ostream& stream() { return std::cerr; } |
|
||||
|
|
||||
private: |
|
||||
bool fatal_; |
|
||||
}; |
|
||||
|
|
||||
// #define LOG(type) LogMessage(#type).stream() |
|
||||
// #define VLOG(level) if ((level) <= FLAGS_v) LOG(INFO) |
|
||||
|
|
||||
// Checks |
|
||||
inline void FstCheck(bool x, const char* expr, const char* file, int line) { |
|
||||
if (!x) { |
|
||||
LOG(FATAL) << "Check failed: \"" << expr << "\" file: " << file |
|
||||
<< " line: " << line; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
// #define CHECK(x) FstCheck(static_cast<bool>(x), #x, __FILE__, __LINE__) |
|
||||
// #define CHECK_EQ(x, y) CHECK((x) == (y)) |
|
||||
// #define CHECK_LT(x, y) CHECK((x) < (y)) |
|
||||
// #define CHECK_GT(x, y) CHECK((x) > (y)) |
|
||||
// #define CHECK_LE(x, y) CHECK((x) <= (y)) |
|
||||
// #define CHECK_GE(x, y) CHECK((x) >= (y)) |
|
||||
// #define CHECK_NE(x, y) CHECK((x) != (y)) |
|
||||
|
|
||||
// Debug checks |
|
||||
// #define DCHECK(x) assert(x) |
|
||||
// #define DCHECK_EQ(x, y) DCHECK((x) == (y)) |
|
||||
// #define DCHECK_LT(x, y) DCHECK((x) < (y)) |
|
||||
// #define DCHECK_GT(x, y) DCHECK((x) > (y)) |
|
||||
// #define DCHECK_LE(x, y) DCHECK((x) <= (y)) |
|
||||
// #define DCHECK_GE(x, y) DCHECK((x) >= (y)) |
|
||||
// #define DCHECK_NE(x, y) DCHECK((x) != (y)) |
|
||||
|
|
||||
// Ports |
|
||||
#define ATTRIBUTE_DEPRECATED __attribute__((deprecated)) |
|
||||
|
|
||||
#endif // FST_LIB_LOG_H_ |
|
@ -1,160 +0,0 @@ |
|||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||
// you may not use this file except in compliance with the License.
|
|
||||
// You may obtain a copy of the License at
|
|
||||
//
|
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||
//
|
|
||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||
// See the License for the specific language governing permissions and
|
|
||||
// limitations under the License.
|
|
||||
//
|
|
||||
// Google-style flag handling definitions.
|
|
||||
|
|
||||
#include <cstring>
|
|
||||
|
|
||||
#if _MSC_VER
|
|
||||
#include <fcntl.h>
|
|
||||
#include <io.h>
|
|
||||
#endif
|
|
||||
|
|
||||
#include <fst/compat.h>
|
|
||||
#include <fst/flags.h>
|
|
||||
|
|
||||
static const char* private_tmpdir = getenv("TMPDIR"); |
|
||||
|
|
||||
// DEFINE_int32(v, 0, "verbosity level");
|
|
||||
// DEFINE_bool(help, false, "show usage information");
|
|
||||
// DEFINE_bool(helpshort, false, "show brief usage information");
|
|
||||
#ifndef _MSC_VER
|
|
||||
DEFINE_string(tmpdir, private_tmpdir ? private_tmpdir : "/tmp", |
|
||||
"temporary directory"); |
|
||||
#else
|
|
||||
DEFINE_string(tmpdir, private_tmpdir ? private_tmpdir : getenv("TEMP"), |
|
||||
"temporary directory"); |
|
||||
#endif // !_MSC_VER
|
|
||||
|
|
||||
using namespace std; |
|
||||
|
|
||||
static string flag_usage; |
|
||||
static string prog_src; |
|
||||
|
|
||||
// Sets prog_src to src.
|
|
||||
static void SetProgSrc(const char* src) { |
|
||||
prog_src = src; |
|
||||
#if _MSC_VER
|
|
||||
// This common code is invoked by all FST binaries, and only by them. Switch
|
|
||||
// stdin and stdout into "binary" mode, so that 0x0A won't be translated into
|
|
||||
// a 0x0D 0x0A byte pair in a pipe or a shell redirect. Other streams are
|
|
||||
// already using ios::binary where binary files are read or written.
|
|
||||
// Kudos to @daanzu for the suggested fix.
|
|
||||
// https://github.com/kkm000/openfst/issues/20
|
|
||||
// https://github.com/kkm000/openfst/pull/23
|
|
||||
// https://github.com/kkm000/openfst/pull/32
|
|
||||
_setmode(_fileno(stdin), O_BINARY); |
|
||||
_setmode(_fileno(stdout), O_BINARY); |
|
||||
#endif
|
|
||||
// Remove "-main" in src filename. Flags are defined in fstx.cc but SetFlags()
|
|
||||
// is called in fstx-main.cc, which results in a filename mismatch in
|
|
||||
// ShowUsageRestrict() below.
|
|
||||
static constexpr char kMainSuffix[] = "-main.cc"; |
|
||||
const int prefix_length = prog_src.size() - strlen(kMainSuffix); |
|
||||
if (prefix_length > 0 && prog_src.substr(prefix_length) == kMainSuffix) { |
|
||||
prog_src.erase(prefix_length, strlen("-main")); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
void SetFlags(const char* usage, int* argc, char*** argv, bool remove_flags, |
|
||||
const char* src) { |
|
||||
flag_usage = usage; |
|
||||
SetProgSrc(src); |
|
||||
|
|
||||
int index = 1; |
|
||||
for (; index < *argc; ++index) { |
|
||||
string argval = (*argv)[index]; |
|
||||
if (argval[0] != '-' || argval == "-") break; |
|
||||
while (argval[0] == '-') argval = argval.substr(1); // Removes initial '-'.
|
|
||||
string arg = argval; |
|
||||
string val = ""; |
|
||||
// Splits argval (arg=val) into arg and val.
|
|
||||
auto pos = argval.find("="); |
|
||||
if (pos != string::npos) { |
|
||||
arg = argval.substr(0, pos); |
|
||||
val = argval.substr(pos + 1); |
|
||||
} |
|
||||
auto bool_register = FlagRegister<bool>::GetRegister(); |
|
||||
if (bool_register->SetFlag(arg, val)) continue; |
|
||||
auto string_register = FlagRegister<string>::GetRegister(); |
|
||||
if (string_register->SetFlag(arg, val)) continue; |
|
||||
auto int32_register = FlagRegister<int32>::GetRegister(); |
|
||||
if (int32_register->SetFlag(arg, val)) continue; |
|
||||
auto int64_register = FlagRegister<int64>::GetRegister(); |
|
||||
if (int64_register->SetFlag(arg, val)) continue; |
|
||||
auto double_register = FlagRegister<double>::GetRegister(); |
|
||||
if (double_register->SetFlag(arg, val)) continue; |
|
||||
LOG(FATAL) << "SetFlags: Bad option: " << (*argv)[index]; |
|
||||
} |
|
||||
if (remove_flags) { |
|
||||
for (auto i = 0; i < *argc - index; ++i) { |
|
||||
(*argv)[i + 1] = (*argv)[i + index]; |
|
||||
} |
|
||||
*argc -= index - 1; |
|
||||
} |
|
||||
// if (FLAGS_help) {
|
|
||||
// ShowUsage(true);
|
|
||||
// exit(1);
|
|
||||
// }
|
|
||||
// if (FLAGS_helpshort) {
|
|
||||
// ShowUsage(false);
|
|
||||
// exit(1);
|
|
||||
// }
|
|
||||
} |
|
||||
|
|
||||
// If flag is defined in file 'src' and 'in_src' true or is not
|
|
||||
// defined in file 'src' and 'in_src' is false, then print usage.
|
|
||||
static void ShowUsageRestrict(const std::set<pair<string, string>>& usage_set, |
|
||||
const string& src, bool in_src, bool show_file) { |
|
||||
string old_file; |
|
||||
bool file_out = false; |
|
||||
bool usage_out = false; |
|
||||
for (const auto& pair : usage_set) { |
|
||||
const auto& file = pair.first; |
|
||||
const auto& usage = pair.second; |
|
||||
bool match = file == src; |
|
||||
if ((match && !in_src) || (!match && in_src)) continue; |
|
||||
if (file != old_file) { |
|
||||
if (show_file) { |
|
||||
if (file_out) cout << "\n"; |
|
||||
cout << "Flags from: " << file << "\n"; |
|
||||
file_out = true; |
|
||||
} |
|
||||
old_file = file; |
|
||||
} |
|
||||
cout << usage << "\n"; |
|
||||
usage_out = true; |
|
||||
} |
|
||||
if (usage_out) cout << "\n"; |
|
||||
} |
|
||||
|
|
||||
void ShowUsage(bool long_usage) { |
|
||||
std::set<pair<string, string>> usage_set; |
|
||||
cout << flag_usage << "\n"; |
|
||||
auto bool_register = FlagRegister<bool>::GetRegister(); |
|
||||
bool_register->GetUsage(&usage_set); |
|
||||
auto string_register = FlagRegister<string>::GetRegister(); |
|
||||
string_register->GetUsage(&usage_set); |
|
||||
auto int32_register = FlagRegister<int32>::GetRegister(); |
|
||||
int32_register->GetUsage(&usage_set); |
|
||||
auto int64_register = FlagRegister<int64>::GetRegister(); |
|
||||
int64_register->GetUsage(&usage_set); |
|
||||
auto double_register = FlagRegister<double>::GetRegister(); |
|
||||
double_register->GetUsage(&usage_set); |
|
||||
if (!prog_src.empty()) { |
|
||||
cout << "PROGRAM FLAGS:\n\n"; |
|
||||
ShowUsageRestrict(usage_set, prog_src, true, false); |
|
||||
} |
|
||||
if (!long_usage) return; |
|
||||
if (!prog_src.empty()) cout << "LIBRARY FLAGS:\n\n"; |
|
||||
ShowUsageRestrict(usage_set, prog_src, false, true); |
|
||||
} |
|
@ -1,55 +0,0 @@ |
|||||
add_executable(fst_test |
|
||||
fst_test.cc |
|
||||
../include/fst/test/fst_test.h |
|
||||
) |
|
||||
target_link_libraries(fst_test fst ${CMAKE_DL_LIBS}) |
|
||||
set_target_properties(fst_test PROPERTIES FOLDER test) |
|
||||
add_test(NAME fst_test-test COMMAND fst_test) |
|
||||
|
|
||||
add_executable(weight_test |
|
||||
weight_test.cc |
|
||||
../include/fst/test/weight-tester.h |
|
||||
) |
|
||||
target_link_libraries(weight_test fst ${CMAKE_DL_LIBS}) |
|
||||
set_target_properties(weight_test PROPERTIES FOLDER test) |
|
||||
add_test(NAME weight_test-test COMMAND weight_test) |
|
||||
|
|
||||
add_executable(algo_test_log algo_test.cc ../include/fst/test/algo_test.h ../include/fst/test/rand-fst.h) |
|
||||
target_link_libraries(algo_test_log fst ${CMAKE_DL_LIBS}) |
|
||||
target_compile_definitions(algo_test_log |
|
||||
PRIVATE TEST_LOG=1) |
|
||||
set_target_properties(algo_test_log PROPERTIES FOLDER test) |
|
||||
add_test(NAME algo_test_log-test COMMAND algo_test_log) |
|
||||
|
|
||||
|
|
||||
add_executable(algo_test_tropical algo_test.cc ../include/fst/test/algo_test.h ../include/fst/test/rand-fst.h) |
|
||||
target_link_libraries(algo_test_tropical fst ${CMAKE_DL_LIBS}) |
|
||||
target_compile_definitions(algo_test_tropical |
|
||||
PRIVATE TEST_TROPICAL=1) |
|
||||
set_target_properties(algo_test_tropical PROPERTIES FOLDER test) |
|
||||
add_test(NAME algo_test_tropical-test COMMAND algo_test_tropical) |
|
||||
|
|
||||
|
|
||||
add_executable(algo_test_minmax algo_test.cc ../include/fst/test/algo_test.h ../include/fst/test/rand-fst.h) |
|
||||
target_link_libraries(algo_test_minmax fst ${CMAKE_DL_LIBS}) |
|
||||
target_compile_definitions(algo_test_minmax |
|
||||
PRIVATE TEST_MINMAX=1) |
|
||||
set_target_properties(algo_test_minmax PROPERTIES FOLDER test) |
|
||||
add_test(NAME algo_test_minmax-test COMMAND algo_test_minmax) |
|
||||
|
|
||||
|
|
||||
add_executable(algo_test_lexicographic algo_test.cc ../include/fst/test/algo_test.h ../include/fst/test/rand-fst.h) |
|
||||
target_link_libraries(algo_test_lexicographic fst ${CMAKE_DL_LIBS}) |
|
||||
target_compile_definitions(algo_test_lexicographic |
|
||||
PRIVATE TEST_LEXICOGRAPHIC=1) |
|
||||
set_target_properties(algo_test_lexicographic PROPERTIES FOLDER test) |
|
||||
add_test(NAME algo_test_lexicographic-test COMMAND algo_test_lexicographic) |
|
||||
|
|
||||
|
|
||||
add_executable(algo_test_power algo_test.cc ../include/fst/test/algo_test.h ../include/fst/test/rand-fst.h) |
|
||||
target_link_libraries(algo_test_power fst ${CMAKE_DL_LIBS}) |
|
||||
target_compile_definitions(algo_test_power |
|
||||
PRIVATE TEST_POWER=1) |
|
||||
set_target_properties(algo_test_power PROPERTIES FOLDER test) |
|
||||
add_test(NAME algo_test_power-test COMMAND algo_test_power) |
|
||||
|
|