} // namespace sentencepiece
int main(int argc, char **argv) {
+ sentencepiece::ScopedResourceDestructor cleaner;
sentencepiece::ParseCommandLineFlags(argv[0], &argc, &argv, true);
const std::vector<std::pair<
#include <cstring>
#include "common.h"
+#include "init.h"
#include "sentencepiece_processor.h"
#ifdef _USE_EXTERNAL_ABSL
SetTestCounter(2);
} else {
std::cerr << "Program terminated with an unrecoverable error." << std::endl;
+ ShutdownLibrary();
exit(-1);
}
}
if (GetTestCounter() == 1) {
SetTestCounter(2);
} else {
+ ShutdownLibrary();
exit(code);
}
}
#include "common.h"
#include "third_party/absl/flags/flag.h"
#include "third_party/absl/flags/parse.h"
+#include "third_party/protobuf-lite/google/protobuf/message_lite.h"
ABSL_DECLARE_FLAG(int32, minloglevel);
logging::SetMinLogLevel(absl::GetFlag(FLAGS_minloglevel));
}
+
+inline void ShutdownLibrary() {
+ google::protobuf::ShutdownProtobufLibrary();
+#ifdef HAS_ABSL_CLEANUP_FLAGS
+ absl::CleanupFlags();
+#endif
+}
+
+class ScopedResourceDestructor {
+ public:
+ ScopedResourceDestructor() {}
+ ~ScopedResourceDestructor() { ShutdownLibrary(); }
+};
+
} // namespace sentencepiece
#endif // INIT_H_
"':' separated encoder extra options, e.g., \"reverse:bos:eos\"");
int main(int argc, char *argv[]) {
+ sentencepiece::ScopedResourceDestructor cleaner;
sentencepiece::ParseCommandLineFlags(argv[0], &argc, &argv, true);
std::vector<std::string> rest_args;
"Generates vocabulary file instead of segmentation");
int main(int argc, char *argv[]) {
+ sentencepiece::ScopedResourceDestructor cleaner;
sentencepiece::ParseCommandLineFlags(argv[0], &argc, &argv, true);
std::vector<std::string> rest_args;
-
-
// Copyright 2016 Google Inc.
//
// 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
-// n// http://www.apache.org/licenses/LICENSE-2.0
+//
+// 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,
"and scores, syms outputs pieces and indices.");
int main(int argc, char *argv[]) {
+ sentencepiece::ScopedResourceDestructor cleaner;
sentencepiece::ParseCommandLineFlags(argv[0], &argc, &argv, true);
sentencepiece::SentencePieceProcessor sp;
using sentencepiece::normalizer::Normalizer;
int main(int argc, char *argv[]) {
+ sentencepiece::ScopedResourceDestructor cleaner;
sentencepiece::ParseCommandLineFlags(argv[0], &argc, &argv, true);
std::vector<std::string> rest_args;
" clipping the counts for DP");
int main(int argc, char *argv[]) {
+ sentencepiece::ScopedResourceDestructor cleaner;
sentencepiece::ParseCommandLineFlags(argv[0], &argc, &argv, true);
sentencepiece::TrainerSpec trainer_spec;
ABSL_FLAG(std::string, test_tmpdir, "test_tmp", "Temporary directory.");
int main(int argc, char **argv) {
+ sentencepiece::ScopedResourceDestructor cleaner;
sentencepiece::ParseCommandLineFlags(argv[0], &argc, &argv, true);
sentencepiece::test::RunAllTests();
return 0;