Skip to content

Commit 6ac7277

Browse files
committed
Hide registry::Filter from the public API
This is only used internally, and does not need to be exposed
1 parent bfc6228 commit 6ac7277

File tree

3 files changed

+22
-24
lines changed

3 files changed

+22
-24
lines changed

gl_generator/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ also attempt to load `glGenFramebuffersEXT` as a fallback.
128128
- Add `Profile` enum for specifying the API profile, and change the `source`
129129
argument to use it instead of a string
130130
- Remove `features` and `extensions` fields from `Registry`
131-
- Hide `registry::{Feature, Require, Remove, Extension}` from the public API
131+
- Hide `registry::{Feature, Filter, Require, Remove, Extension}` from the public API
132132
- Move `registry::{Fallbacks, Api, Profile}` to top level module
133133

134134
### v0.4.2

gl_generator/lib.rs

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@
6464
extern crate log;
6565

6666
use generators::Generator;
67-
use registry::{Registry, Filter};
67+
use registry::Registry;
6868

6969
use std::fmt;
7070
use std::io;
@@ -119,14 +119,6 @@ pub fn generate_bindings<G, W>(generator: G, api: Api, fallbacks: Fallbacks,
119119
extensions: Vec<String>, version: &str, profile: Profile,
120120
dest: &mut W) -> io::Result<()> where G: Generator, W: io::Write
121121
{
122-
let filter = Filter {
123-
api: api,
124-
fallbacks: fallbacks,
125-
extensions: extensions,
126-
version: version.to_string(),
127-
profile: profile,
128-
};
129-
130-
let registry = Registry::new(api, filter);
122+
let registry = Registry::new(api, fallbacks, extensions, version, profile);
131123
generator.write(&registry, dest)
132124
}

gl_generator/registry.rs

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,14 @@ pub struct Registry {
9999

100100
impl Registry {
101101
/// Generate a registry from the supplied XML string
102-
pub fn new(api: Api, filter: Filter) -> Registry {
102+
pub fn new(api: Api, fallbacks: Fallbacks, extensions: Vec<String>, version: &str, profile: Profile) -> Registry {
103+
let filter = Filter {
104+
fallbacks: fallbacks,
105+
extensions: extensions,
106+
version: version.to_string(),
107+
profile: profile,
108+
};
109+
103110
let src = match api {
104111
Api::Gl | Api::GlCore | Api::Gles1 | Api::Gles2 => khronos_api::GL_XML,
105112
Api::Glx => self::khronos_api::GLX_XML,
@@ -251,16 +258,15 @@ pub struct GlxOpcode {
251258
}
252259

253260
struct RegistryParser<R: io::Read> {
254-
pub api: Api,
255-
pub reader: XmlEventReader<R>,
261+
api: Api,
262+
reader: XmlEventReader<R>,
256263
}
257264

258-
pub struct Filter {
259-
pub api: Api,
260-
pub fallbacks: Fallbacks,
261-
pub extensions: Vec<String>,
262-
pub profile: Profile,
263-
pub version: String,
265+
struct Filter {
266+
fallbacks: Fallbacks,
267+
extensions: Vec<String>,
268+
profile: Profile,
269+
version: String,
264270
}
265271

266272
/// A big, ugly, imperative impl with methods that accumulates a Registry struct
@@ -379,7 +385,7 @@ impl<R: io::Read> RegistryParser<R> {
379385
let mut found_feature = false;
380386
for f in features.iter() {
381387
// XXX: verify that the string comparison with <= actually works as desired
382-
if f.api == filter.api && f.number <= filter.version {
388+
if f.api == api && f.number <= filter.version {
383389
for req in f.requires.iter() {
384390
desired_enums.extend(req.enums.iter().map(|x| x.clone()));
385391
desired_cmds.extend(req.commands.iter().map(|x| x.clone()));
@@ -393,7 +399,7 @@ impl<R: io::Read> RegistryParser<R> {
393399
// remove the things that should be removed
394400
for f in features.iter() {
395401
// XXX: verify that the string comparison with <= actually works as desired
396-
if f.api == filter.api && f.number <= filter.version {
402+
if f.api == api && f.number <= filter.version {
397403
for rem in f.removes.iter() {
398404
if rem.profile == filter.profile {
399405
for enm in rem.enums.iter() {
@@ -415,8 +421,8 @@ impl<R: io::Read> RegistryParser<R> {
415421

416422
for extension in extensions.iter() {
417423
if filter.extensions.iter().any(|x| x == &extension.name) {
418-
if !extension.supported.iter().any(|x| x == &filter.api) {
419-
panic!("Requested {}, which doesn't support the {} API", extension.name, filter.api);
424+
if !extension.supported.iter().any(|x| x == &api) {
425+
panic!("Requested {}, which doesn't support the {} API", extension.name, api);
420426
}
421427
for req in extension.requires.iter() {
422428
desired_enums.extend(req.enums.iter().map(|x| x.clone()));

0 commit comments

Comments
 (0)