19251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org// Copyright (c) 2011 The Chromium Authors. All rights reserved.
29251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org// Use of this source code is governed by a BSD-style license that can be
39251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org// found in the LICENSE file.
49251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org
59251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org#ifndef OTS_NAME_H_
69251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org#define OTS_NAME_H_
79251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org
89251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org#include <new>
99251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org#include <string>
109251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org#include <utility>
119251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org#include <vector>
129251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org
139251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org#include "ots.h"
149251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org
159251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.orgnamespace ots {
169251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org
179251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.orgstruct NameRecord {
189251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org  NameRecord() {
199251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org  }
209251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org
219251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org  NameRecord(uint16_t platform_id, uint16_t encoding_id,
229251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org             uint16_t language_id, uint16_t name_id)
239251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org    : platform_id(platform_id),
249251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org      encoding_id(encoding_id),
259251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org      language_id(language_id),
269251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org      name_id(name_id) {
279251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org  }
289251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org
299251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org  uint16_t platform_id;
309251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org  uint16_t encoding_id;
319251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org  uint16_t language_id;
329251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org  uint16_t name_id;
339251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org  std::string text;
349251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org
359251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org  bool operator<(const NameRecord& rhs) const {
369251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org    if (platform_id < rhs.platform_id) return true;
379251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org    if (platform_id > rhs.platform_id) return false;
389251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org    if (encoding_id < rhs.encoding_id) return true;
399251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org    if (encoding_id > rhs.encoding_id) return false;
409251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org    if (language_id < rhs.language_id) return true;
419251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org    if (language_id > rhs.language_id) return false;
429251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org    return name_id < rhs.name_id;
439251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org  }
449251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org};
459251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org
469251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.orgstruct OpenTypeNAME {
479251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org  std::vector<NameRecord> names;
489251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org  std::vector<std::string> lang_tags;
499251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org};
509251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org
519251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org}  // namespace ots
529251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org
539251959e68ed10ac38b3bba49422d27564cf2fc8bashi@chromium.org#endif  // OTS_NAME_H_
54