Files
whetstone_DSL/editor/src/SemannoAnnotationImpl.h
Bill 0d51a6fe4c Steps 309-319: Sprint 11 Phases 11d-e — Kotlin/C# languages + workflow annotation foundation
Phase 11d (Steps 309-313): Kotlin + C# parsers and generators
- KotlinParser (regex-based): fun, suspend fun, class, data class, val/var
- KotlinGenerator: idiomatic Kotlin output with type mappings
- CSharpParser (regex-based): methods, async, class, interface
- CSharpGenerator: Allman braces, foreach, Task async, LINQ types
- Pipeline integration for both languages, 10 parsers + 10 generators

Phase 11e (Steps 314-319): Workflow annotation foundation
- AnnotationInference: generalized multi-subject inference engine
- Subject 9 routing annotations: ContextWidth, Review, Ambiguity,
  Automatability, Priority, ImplementationStatus
- SkeletonAST: project specification before code exists
- Architect tooling: createSkeleton, addSkeletonNode, getProjectModel,
  inferAnnotations RPCs + 4 MCP tools (42+ total)
- Inference-to-routing bridge: complexity→ambiguity, getter→deterministic
- TrainingDataExporter + TrainingDataGenerator scaffolding

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 15:50:06 -07:00

116 lines
7.8 KiB
C++

#pragma once
// SemannoAnnotationImpl.h — CRTP mixin for Semanno annotation visitor methods
//
// Provides default implementations for all 56 extended annotation visitor
// methods defined in AnnotationVisitorExtended. Each implementation delegates
// to SemannoEmitter::emit() and prepends the language-specific comment prefix
// supplied by the Derived generator via commentPrefix().
//
// Usage:
// class PythonGenerator : public ProjectionGenerator,
// public SemannoAnnotationImpl<PythonGenerator> {
// public:
// std::string commentPrefix() const { return "# "; }
// // ... the 56 visit*() methods are inherited from the mixin ...
// };
#include "SemannoFormat.h"
#include "ast/AnnotationVisitors.h"
// CRTP mixin: Derived must provide commentPrefix() -> std::string
// Uses virtual inheritance so methods properly override the pure virtuals
// in AnnotationVisitorExtended shared with ProjectionGenerator.
template<typename Derived>
class SemannoAnnotationImpl : public virtual AnnotationVisitorExtended {
protected:
std::string semanno(const ASTNode* anno) const {
auto* self = static_cast<const Derived*>(this);
return self->commentPrefix() + SemannoEmitter::emit(anno);
}
public:
// Subject 2: Type System
std::string visitBitWidthAnnotation(const BitWidthAnnotation* a) override { return semanno(a); }
std::string visitEndianAnnotation(const EndianAnnotation* a) override { return semanno(a); }
std::string visitLayoutAnnotation(const LayoutAnnotation* a) override { return semanno(a); }
std::string visitNullabilityAnnotation(const NullabilityAnnotation* a) override { return semanno(a); }
std::string visitVarianceAnnotation(const VarianceAnnotation* a) override { return semanno(a); }
std::string visitIdentityAnnotation(const IdentityAnnotation* a) override { return semanno(a); }
std::string visitMutAnnotation(const MutAnnotation* a) override { return semanno(a); }
std::string visitTypeStateAnnotation(const TypeStateAnnotation* a) override { return semanno(a); }
// Subject 3: Concurrency
std::string visitAtomicAnnotation(const AtomicAnnotation* a) override { return semanno(a); }
std::string visitSyncAnnotation(const SyncAnnotation* a) override { return semanno(a); }
std::string visitThreadModelAnnotation(const ThreadModelAnnotation* a) override { return semanno(a); }
std::string visitMemoryBarrierAnnotation(const MemoryBarrierAnnotation* a) override { return semanno(a); }
std::string visitExecAnnotation(const ExecAnnotation* a) override { return semanno(a); }
std::string visitBlockingAnnotation(const BlockingAnnotation* a) override { return semanno(a); }
std::string visitParallelAnnotation(const ParallelAnnotation* a) override { return semanno(a); }
std::string visitTrapAnnotation(const TrapAnnotation* a) override { return semanno(a); }
std::string visitExceptionAnnotation(const ExceptionAnnotation* a) override { return semanno(a); }
std::string visitPanicAnnotation(const PanicAnnotation* a) override { return semanno(a); }
// Subject 4: Scope
std::string visitBindingAnnotation(const BindingAnnotation* a) override { return semanno(a); }
std::string visitLookupAnnotation(const LookupAnnotation* a) override { return semanno(a); }
std::string visitCaptureAnnotation(const CaptureAnnotation* a) override { return semanno(a); }
std::string visitVisibilityAnnotation(const VisibilityAnnotation* a) override { return semanno(a); }
std::string visitNamespaceAnnotation(const NamespaceAnnotation* a) override { return semanno(a); }
std::string visitScopeAnnotation(const ScopeAnnotation* a) override { return semanno(a); }
// Subject 5: Shims & Platform
std::string visitIntrinsicAnnotation(const IntrinsicAnnotation* a) override { return semanno(a); }
std::string visitRawAnnotation(const RawAnnotation* a) override { return semanno(a); }
std::string visitCallingConvAnnotation(const CallingConvAnnotation* a) override { return semanno(a); }
std::string visitLinkAnnotation(const LinkAnnotation* a) override { return semanno(a); }
std::string visitShimAnnotation(const ShimAnnotation* a) override { return semanno(a); }
std::string visitPointerArithmeticAnnotation(const PointerArithmeticAnnotation* a) override { return semanno(a); }
std::string visitOpaqueAnnotation(const OpaqueAnnotation* a) override { return semanno(a); }
std::string visitTargetAnnotation(const TargetAnnotation* a) override { return semanno(a); }
std::string visitFeatureAnnotation(const FeatureAnnotation* a) override { return semanno(a); }
std::string visitOriginalAnnotation(const OriginalAnnotation* a) override { return semanno(a); }
std::string visitMappingAnnotation(const MappingAnnotation* a) override { return semanno(a); }
// Subject 6: Optimization
std::string visitTailCallAnnotation(const TailCallAnnotation* a) override { return semanno(a); }
std::string visitLoopAnnotation(const LoopAnnotation* a) override { return semanno(a); }
std::string visitDataAnnotation(const DataAnnotation* a) override { return semanno(a); }
std::string visitAlignAnnotation(const AlignAnnotation* a) override { return semanno(a); }
std::string visitPackAnnotation(const PackAnnotation* a) override { return semanno(a); }
std::string visitBoundsCheckAnnotation(const BoundsCheckAnnotation* a) override { return semanno(a); }
std::string visitOverflowAnnotation(const OverflowAnnotation* a) override { return semanno(a); }
// Subject 7: Meta-Programming
std::string visitMetaAnnotation(const MetaAnnotation* a) override { return semanno(a); }
std::string visitSymbolAnnotation(const SymbolAnnotation* a) override { return semanno(a); }
std::string visitEvaluateAnnotation(const EvaluateAnnotation* a) override { return semanno(a); }
std::string visitTemplateAnnotation(const TemplateAnnotation* a) override { return semanno(a); }
std::string visitSyntheticAnnotation(const SyntheticAnnotation* a) override { return semanno(a); }
// Subject 8: Policy
std::string visitPolicyAnnotation(const PolicyAnnotation* a) override { return semanno(a); }
std::string visitAmbiguityAnnotation(const AmbiguityAnnotation* a) override { return semanno(a); }
std::string visitCandidateAnnotation(const CandidateAnnotation* a) override { return semanno(a); }
std::string visitTradeoffAnnotation(const TradeoffAnnotation* a) override { return semanno(a); }
std::string visitChoiceAnnotation(const ChoiceAnnotation* a) override { return semanno(a); }
std::string visitDecisionAnnotation(const DecisionAnnotation* a) override { return semanno(a); }
// Subject 9: Workflow Routing
std::string visitContextWidthAnnotation(const ContextWidthAnnotation* a) override { return semanno(a); }
std::string visitReviewAnnotation(const ReviewAnnotation* a) override { return semanno(a); }
std::string visitAutomatabilityAnnotation(const AutomatabilityAnnotation* a) override { return semanno(a); }
std::string visitPriorityAnnotation(const PriorityAnnotation* a) override { return semanno(a); }
std::string visitImplementationStatusAnnotation(const ImplementationStatusAnnotation* a) override { return semanno(a); }
// Semantic Core
std::string visitIntentAnnotation(const IntentAnnotation* a) override { return semanno(a); }
std::string visitComplexityAnnotation(const ComplexityAnnotation* a) override { return semanno(a); }
std::string visitRiskAnnotation(const RiskAnnotation* a) override { return semanno(a); }
std::string visitContractAnnotation(const ContractAnnotation* a) override { return semanno(a); }
std::string visitSemanticTagAnnotation(const SemanticTagAnnotation* a) override { return semanno(a); }
// Environment
std::string visitCapabilityRequirement(const CapabilityRequirement* a) override { return semanno(a); }
};