typegen: add QSDOC_TYPE_OVERRIDE
This commit is contained in:
		
							parent
							
								
									a8672e4eee
								
							
						
					
					
						commit
						a53a8f1cb4
					
				
					 1 changed files with 19 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -196,6 +196,13 @@ impl CppParser {
 | 
			
		|||
			let mut signals = Vec::new();
 | 
			
		||||
			let mut enums = Vec::new();
 | 
			
		||||
 | 
			
		||||
			struct Carryover<'a> {
 | 
			
		||||
				type_override: Option<&'a str>,
 | 
			
		||||
				comment: Option<&'a str>,
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			let mut carryover = Option::<Carryover<'a>>::None;
 | 
			
		||||
 | 
			
		||||
			(|| {
 | 
			
		||||
				for macro_ in self.macro_regex.captures_iter(body) {
 | 
			
		||||
					let macro_ = macro_?;
 | 
			
		||||
| 
						 | 
				
			
			@ -204,10 +211,12 @@ impl CppParser {
 | 
			
		|||
						continue
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
					let comment = macro_.name("comment").map(|m| m.as_str());
 | 
			
		||||
					let comment = macro_.name("comment").map(|m| m.as_str()).or(carryover.as_ref().map(|c| c.comment).flatten());
 | 
			
		||||
					let type_ = macro_.name("type").unwrap().as_str();
 | 
			
		||||
					let args = macro_.name("args").map(|m| m.as_str());
 | 
			
		||||
 | 
			
		||||
					let this_carryover = carryover.take();
 | 
			
		||||
 | 
			
		||||
					(|| {
 | 
			
		||||
						match type_ {
 | 
			
		||||
							"QSDOC_BASECLASS" => {
 | 
			
		||||
| 
						 | 
				
			
			@ -230,6 +239,14 @@ impl CppParser {
 | 
			
		|||
							"QML_SINGLETON" => singleton = true,
 | 
			
		||||
							"QML_UNCREATABLE" => uncreatable = true,
 | 
			
		||||
							"QSDOC_CREATABLE" => force_creatable = true,
 | 
			
		||||
							"QSDOC_TYPE_OVERRIDE" => {
 | 
			
		||||
									let type_override = args.ok_or_else(|| anyhow!("expected param for QSDOC_GENERIC"))?;
 | 
			
		||||
 | 
			
		||||
									carryover = Some(Carryover {
 | 
			
		||||
											type_override: Some(type_override),
 | 
			
		||||
											comment,
 | 
			
		||||
									});
 | 
			
		||||
							}
 | 
			
		||||
							"Q_PROPERTY" | "QSDOC_PROPERTY_OVERRIDE" => {
 | 
			
		||||
								let prop =
 | 
			
		||||
									self.property_regex
 | 
			
		||||
| 
						 | 
				
			
			@ -248,7 +265,7 @@ impl CppParser {
 | 
			
		|||
								}
 | 
			
		||||
 | 
			
		||||
								properties.push(Property {
 | 
			
		||||
									type_: Cow::Borrowed(prop.name("type").unwrap().as_str()),
 | 
			
		||||
									type_: Cow::Borrowed(this_carryover.as_ref().map(|c| c.type_override).flatten().unwrap_or_else(|| prop.name("type").unwrap().as_str())),
 | 
			
		||||
									name: prop.name("name").unwrap().as_str(),
 | 
			
		||||
									comment: comment.map(|v| Comment::new(v, ctx.module)),
 | 
			
		||||
									readable: read || member,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue