summaryrefslogtreecommitdiff
path: root/sfntly/table/core/cmap_table.h
diff options
context:
space:
mode:
Diffstat (limited to 'sfntly/table/core/cmap_table.h')
-rw-r--r--sfntly/table/core/cmap_table.h48
1 files changed, 21 insertions, 27 deletions
diff --git a/sfntly/table/core/cmap_table.h b/sfntly/table/core/cmap_table.h
index 8ff9706..bbdc7b5 100644
--- a/sfntly/table/core/cmap_table.h
+++ b/sfntly/table/core/cmap_table.h
@@ -17,8 +17,10 @@
#ifndef SFNTLY_CPP_SRC_SFNTLY_TABLE_CORE_CMAP_TABLE_H_
#define SFNTLY_CPP_SRC_SFNTLY_TABLE_CORE_CMAP_TABLE_H_
+// type.h needs to be included first because of building issues on Windows
+// Type aliases we delcare are defined in other headers and make the build
+// fail otherwise.
#include "sfntly/port/type.h"
-
#include <vector>
#include <map>
@@ -89,7 +91,6 @@ public:
~CMapIdFilter() {}
virtual bool accept(const CMapId& cmap_id) const;
private:
- CMapIdFilter& operator=(const CMapIdFilter& that);
const CMapId wanted_id_;
const CMapIdComparator *comparator_;
};
@@ -160,18 +161,22 @@ public:
// The fully qualified name is CMapTable::CMap::CharacterIterator
class CharacterIterator {
public:
- CharacterIterator() {}
virtual ~CharacterIterator() {}
virtual bool HasNext() = 0;
// Returns -1 if there are no more characters to iterate through
// and exceptions are turned off
virtual int32_t Next() = 0;
+
+ protected:
+ // Use the CMap::Iterator method below instead of directly requesting
+ // a CharacterIterator.
+ CharacterIterator() {}
};
CMap(ReadableFontData* data, int32_t format, const CMapId& cmap_id);
virtual ~CMap();
- virtual void Iterator(CMapTable::CMap::CharacterIterator* output) = 0;
+ virtual CMap::CharacterIterator* Iterator() = 0;
virtual int32_t format() { return format_; }
virtual CMapId cmap_id() { return cmap_id_; }
@@ -213,16 +218,13 @@ public:
class Builder : public CMap::Builder,
public RefCounted<Builder> {
public:
- CALLER_ATTACH static Builder* NewInstance(
- ReadableFontData* data,
- int32_t offset,
- const CMapId& cmap_id);
- CALLER_ATTACH static Builder* NewInstance(
- WritableFontData* data,
- int32_t offset,
- const CMapId& cmap_id);
- CALLER_ATTACH static Builder* NewInstance(
- const CMapId& cmap_id);
+ CALLER_ATTACH static Builder* NewInstance(ReadableFontData* data,
+ int32_t offset,
+ const CMapId& cmap_id);
+ CALLER_ATTACH static Builder* NewInstance(WritableFontData* data,
+ int32_t offset,
+ const CMapId& cmap_id);
+ CALLER_ATTACH static Builder* NewInstance(const CMapId& cmap_id);
virtual ~Builder();
protected:
@@ -232,14 +234,9 @@ public:
private:
// When creating a new CMapFormat0 Builder, use NewInstance instead of
// the constructors! This avoids a memory leak when slicing the FontData.
- Builder(ReadableFontData* data,
- int32_t offset,
- const CMapId& cmap_id);
- Builder(WritableFontData* data,
- int32_t offset,
- const CMapId& cmap_id);
- Builder(
- const CMapId& cmap_id);
+ Builder(ReadableFontData* data, int32_t offset, const CMapId& cmap_id);
+ Builder(WritableFontData* data, int32_t offset, const CMapId& cmap_id);
+ Builder(const CMapId& cmap_id);
};
// The fully qualified name is CMapTable::CMapFormat0::CharacterIterator
@@ -258,7 +255,7 @@ public:
virtual ~CMapFormat0();
virtual int32_t Language();
virtual int32_t GlyphId(int32_t character);
- virtual void Iterator(CMap::CharacterIterator* output);
+ CMap::CharacterIterator* Iterator();
private:
CMapFormat0(ReadableFontData* data, const CMapId& cmap_id);
@@ -315,9 +312,7 @@ public:
int32_t EntryCount(int32_t sub_header_index);
int32_t IdRangeOffset(int32_t sub_header_index);
int32_t IdDelta(int32_t sub_header_index);
- void Iterator(CMapTable::CMap::CharacterIterator* output) {
- UNREFERENCED_PARAMETER(output);
- }
+ CMap::CharacterIterator* Iterator();
};
// CMapTable::Builder
@@ -531,7 +526,6 @@ public:
};
typedef std::vector<CMapTable::CMapId> CMapIdList;
typedef Ptr<CMapTable> CMapTablePtr;
-
} // namespace sfntly
#endif // SFNTLY_CPP_SRC_SFNTLY_TABLE_CORE_CMAP_TABLE_H_