diff options
Diffstat (limited to 'tensorflow/compiler/xla/text_literal_reader.h')
-rw-r--r-- | tensorflow/compiler/xla/text_literal_reader.h | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/tensorflow/compiler/xla/text_literal_reader.h b/tensorflow/compiler/xla/text_literal_reader.h new file mode 100644 index 0000000000..3cfbb2c7fb --- /dev/null +++ b/tensorflow/compiler/xla/text_literal_reader.h @@ -0,0 +1,62 @@ +/* Copyright 2017 The TensorFlow Authors. All Rights Reserved. + +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. +==============================================================================*/ + +#ifndef TENSORFLOW_COMPILER_XLA_TEXT_LITERAL_READER_H_ +#define TENSORFLOW_COMPILER_XLA_TEXT_LITERAL_READER_H_ + +#include <memory> + +#include "tensorflow/compiler/xla/statusor.h" +#include "tensorflow/compiler/xla/types.h" +#include "tensorflow/compiler/xla/xla_data.pb.h" +#include "tensorflow/core/lib/core/stringpiece.h" +#include "tensorflow/core/platform/env.h" +#include "tensorflow/core/platform/macros.h" + +namespace xla { + +// Reads a textual literal from a file path. The format of the file must be: +// +// f32[1,2,3,4] +// (0, 0, 0, 0): 1.234 +// (0, 0, 0, 1): 0xf00p-2 +// ... +// +// Note that for floating values the hex output (as in the second value above) +// will more precisely convey the exact values. +class TextLiteralReader { + public: + // See class comment -- reads a file in its entirety (there must be only one + // literal in the text file path provided). + static StatusOr<std::unique_ptr<Literal>> ReadPath( + tensorflow::StringPiece path); + + private: + // Ownership of file is transferred. + explicit TextLiteralReader(tensorflow::RandomAccessFile* file); + + // Parses a shape string on the first line, followed by lines of values to the + // end of the file. + StatusOr<std::unique_ptr<Literal>> ReadAllLines(); + + // Owns the file being read + std::unique_ptr<tensorflow::RandomAccessFile> file_; + + TF_DISALLOW_COPY_AND_ASSIGN(TextLiteralReader); +}; + +} // namespace xla + +#endif // TENSORFLOW_COMPILER_XLA_TEXT_LITERAL_READER_H_ |