• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // compat.cc
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 //      http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 //
15 //
16 // \file
17 // Google compatibility definitions.
18 
19 #include <cstring>
20 
21 #include "fst/lib/compat.h"
22 
23 DEFINE_int32(v, 0, "verbose level");
24 DEFINE_bool(help, false, "verbose level");
25 DEFINE_string(tmpdir, "/tmp/", "temporary directory");
26 
27 static string prog_name;
28 static string flag_usage;
29 
out_of_memory()30 static void out_of_memory() {
31   fprintf(stderr, "%s: Memory allocation failed\n", prog_name.c_str());
32   exit(1);
33 }
34 
InitFst(const char * usage,int * argc,char *** argv,bool remove_flags)35 void InitFst(const char *usage, int *argc, char ***argv, bool remove_flags) {
36   prog_name = (*argv)[0];
37   set_new_handler(out_of_memory);
38 
39   flag_usage = usage;
40   int index = 1;
41   for (; index < *argc; ++index) {
42     string argval = (*argv)[index];
43 
44     if (argval[0] != '-' || argval == "-")
45       break;
46     while (argval[0] == '-')
47       argval = argval.substr(1);  // remove initial '-'s
48 
49     string arg = argval;
50     string val = "";
51 
52     // split argval (arg=val) into arg and val
53     size_t pos = argval.find("=");
54     if (pos != string::npos) {
55       arg = argval.substr(0, pos);
56       val = argval.substr(pos + 1);
57     }
58 
59     FlagRegister<bool> *bool_register =
60       FlagRegister<bool>::GetRegister();
61     if (bool_register->InitFlag(arg, val))
62       continue;
63     FlagRegister<string> *string_register =
64       FlagRegister<string>::GetRegister();
65     if (string_register->InitFlag(arg, val))
66       continue;
67     FlagRegister<int32> *int32_register =
68       FlagRegister<int32>::GetRegister();
69     if (int32_register->InitFlag(arg, val))
70       continue;
71     FlagRegister<int64> *int64_register =
72       FlagRegister<int64>::GetRegister();
73     if (int64_register->InitFlag(arg, val))
74       continue;
75     FlagRegister<double> *double_register =
76       FlagRegister<double>::GetRegister();
77     if (double_register->InitFlag(arg, val))
78       continue;
79 
80     LOG(FATAL) << "FlagInit: Bad option: " << (*argv)[index];
81   }
82 
83   if (remove_flags) {
84     for (int i = 0; i < *argc - index; ++i)
85       (*argv)[i + 1] = (*argv)[i + index];
86     *argc -= index - 1;
87   }
88 
89   if (FLAGS_help) {
90     ShowUsage();
91     exit(1);
92   }
93 }
94 
ShowUsage()95 void ShowUsage() {
96   std::cout << flag_usage << "\n";
97   std::cout << "  Flags Description:\n";
98   FlagRegister<bool> *bool_register = FlagRegister<bool>::GetRegister();
99   bool_register->ShowUsage();
100   FlagRegister<string> *string_register = FlagRegister<string>::GetRegister();
101   string_register->ShowUsage();
102   FlagRegister<int32> *int32_register = FlagRegister<int32>::GetRegister();
103   int32_register->ShowUsage();
104   FlagRegister<int64> *int64_register = FlagRegister<int64>::GetRegister();
105   int64_register->ShowUsage();
106   FlagRegister<double> *double_register = FlagRegister<double>::GetRegister();
107   double_register->ShowUsage();
108 }
109 
SplitToVector(char * full,const char * delim,vector<char * > * vec,bool omit_empty_strings)110 void SplitToVector(char* full, const char* delim, vector<char*>* vec,
111                    bool omit_empty_strings) {
112   char* next  = full;
113   while((next = strsep(&full, delim)) != NULL) {
114    if (omit_empty_strings && next[0] == '\0') continue;
115    vec->push_back(next);
116   }
117   // Add last element (or full string if no delimeter found):
118   if (full != NULL) {
119     vec->push_back(full);
120   }
121 }
122 
123 
MD5()124 MD5::MD5() {}  // ?OP?
125 
Reset()126 void MD5::Reset() {}  // ?OP?
127 
Update(void const * data,int size)128 void MD5::Update(void const *data, int size) {}  // ?OP?
129 
Digest()130 string MD5::Digest() { return ""; }  // every matches! ?OP?
131 
132 
Mutex()133 Mutex::Mutex() {}  // ?OP?
134 
MutexLock(Mutex * mutex)135 MutexLock::MutexLock(Mutex *mutex) {}  // ?OP?
136